com.joanju.cg.bytecode
Class TriggerblockInstr

java.lang.Object
  extended by com.joanju.cg.bytecode.Bytecode
      extended by com.joanju.cg.bytecode.TriggerblockInstr

public class TriggerblockInstr
extends Bytecode

Represents an ON trigger block in the source code.

As of current writing (Nov.2007) there is no implementation of procedural calls to triggers (ex: APPLY), though it's possible it could be done in some limited fashion.

In terms of working with trigger blocks though, they are interesting to us because they frequently themselves contain calls, and we want to know what is the containing procedure of the trigger block. In the bytecode implementation, trigger blocks are treated similarly to procedure blocks, so we can't see from the bytecode order what the containing procedure is for a trigger block, so that information is added as an additional field.


Field Summary
 
Fields inherited from class com.joanju.cg.bytecode.Bytecode
address, cuid, instrSet, nodeNum, xrefs
 
Constructor Summary
TriggerblockInstr()
           
TriggerblockInstr(int cuid, int address)
           
 
Method Summary
 void calcValueSets()
          Calculate the value sets for the instruction.
 int getContainingProcedureAddress()
          A trigger might be in the outer/external procedure block, or in a sub-procedure of any sort.
 Opcode getOpcode()
           
 void setContainingProcedureAddress(int addr)
          This value is assigned by the compiler.
protected  void setValuesFromByteStream(java.io.DataInputStream in)
           
 java.lang.String toStringFromData()
          containingProcedureAddress.
protected  void writeValuesToByteStream(java.io.DataOutputStream out)
           
 
Methods inherited from class com.joanju.cg.bytecode.Bytecode
addSource, addWhereUsed, beforeWrite, calcValuesAgain, compareTo, equals, fetchBytesFromDB, fetchInCu, generateDataForDB, getAddress, getCuID, getNodeNum, getSources, getValues, getValuesCalcLocal, getWhereUsed, getXrefs, hashCode, initData, isDataModified, isFromDB, setAddress, setCuID, setDataBytesFromDB, setDataModified, setFromDB, setInstructionSet, setNodeNum, shouldLoadData, sourcesForXrefTarget, storeIfModified, toString, toStringFromComments, toStringFromName, toStringFromSet
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

TriggerblockInstr

public TriggerblockInstr()

TriggerblockInstr

public TriggerblockInstr(int cuid,
                         int address)
Method Detail

calcValueSets

public void calcValueSets()
                   throws java.sql.SQLException,
                          java.io.IOException
Description copied from class: Bytecode
Calculate the value sets for the instruction.

Called during build, build-recalc, checkvals, and checkvals-recalc. Implementations should only build from external values once. Calculates which xref records are needed as well.

IMPORTANT: Should only ever be called for instructions belonging to an InstructionSet.

Specified by:
calcValueSets in class Bytecode
Throws:
java.sql.SQLException
java.io.IOException

getContainingProcedureAddress

public int getContainingProcedureAddress()
A trigger might be in the outer/external procedure block, or in a sub-procedure of any sort. We don't (currently) keep track of whether a trigger block is nested in another trigger block.


getOpcode

public Opcode getOpcode()
Specified by:
getOpcode in class Bytecode

setContainingProcedureAddress

public void setContainingProcedureAddress(int addr)
This value is assigned by the compiler.


setValuesFromByteStream

protected void setValuesFromByteStream(java.io.DataInputStream in)
                                throws java.io.IOException
Specified by:
setValuesFromByteStream in class Bytecode
Throws:
java.io.IOException

toStringFromData

public java.lang.String toStringFromData()
containingProcedureAddress.

Overrides:
toStringFromData in class Bytecode
Returns:
"" if not overridden.

writeValuesToByteStream

protected void writeValuesToByteStream(java.io.DataOutputStream out)
                                throws java.io.IOException
Specified by:
writeValuesToByteStream in class Bytecode
Throws:
java.io.IOException


Copyright © 2008 Joanju Software. All Rights Reserved.