daikon.derive.binary
Class BinaryDerivation

Object
  extended by Derivation
      extended by BinaryDerivation
All Implemented Interfaces:
Serializable, Cloneable
Direct Known Subclasses:
SequenceFloatIntersection, SequenceFloatSubscript, SequenceFloatUnion, SequenceScalarIntersection, SequenceScalarSubscript, SequenceScalarUnion, SequencesConcat, SequencesJoin, SequencesJoinFloat, SequencesPredicate, SequencesPredicateFloat, SequenceStringIntersection, SequenceStringSubscript, SequenceStringUnion, SequenceSubsequence

public abstract class BinaryDerivation
extends Derivation

Abstract class to represent a derived variable that came from two base variables.

See Also:
Serialized Form

Field Summary
 VarInfo base1
          Original variable 1.
 VarInfo base2
          Original variable 2.
 
Fields inherited from class Derivation
debug, dkconfig_disable_derived_variables, missing_array_bounds
 
Constructor Summary
BinaryDerivation(VarInfo vi1, VarInfo vi2)
          Create a new BinaryDerivation from two varinfos.
 
Method Summary
 boolean canBeMissing()
           
 BinaryDerivation clone()
           
 ValueAndModified computeValueAndModified(ValueTuple vt)
           
protected abstract  ValueAndModified computeValueAndModifiedImpl(ValueTuple vt)
          Actual implementation once mods are handled.
 int derivedDepth()
          Returns how many levels of derivation this Derivation is based on.
 VarInfo[] getBases()
           
 boolean isDerivedFromNonCanonical()
           
protected  boolean isParam()
           
 Derivation switchVars(VarInfo[] old_vars, VarInfo[] new_vars)
           
 VarInfo var1()
           
 VarInfo var2()
           
 
Methods inherited from class Derivation
complexity, esc_name, get_array_var, get_lower_bound, get_upper_bound, getVarInfo, inside_esc_name, inside_jml_name, is_prestate_version, isSameFormula, jml_name, makeVarInfo_common_setup, makeVarInfo, missingOutOfBounds, shift_str, simplify_name
 
Methods inherited from class Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

base1

public VarInfo base1
Original variable 1.


base2

public VarInfo base2
Original variable 2.

Constructor Detail

BinaryDerivation

public BinaryDerivation(VarInfo vi1,
                        VarInfo vi2)
Create a new BinaryDerivation from two varinfos.

Method Detail

clone

public BinaryDerivation clone()
Overrides:
clone in class Object

getBases

public VarInfo[] getBases()
Specified by:
getBases in class Derivation
Returns:
array of the VarInfos this was derived from

switchVars

public Derivation switchVars(VarInfo[] old_vars,
                             VarInfo[] new_vars)
Specified by:
switchVars in class Derivation

computeValueAndModified

public ValueAndModified computeValueAndModified(ValueTuple vt)
Specified by:
computeValueAndModified in class Derivation
Parameters:
vt - The set of values in a program point that will be used to derive the value.
Returns:
a pair of: the derived value and whether the variable counts as modified.

computeValueAndModifiedImpl

protected abstract ValueAndModified computeValueAndModifiedImpl(ValueTuple vt)
Actual implementation once mods are handled.


isParam

protected boolean isParam()
Specified by:
isParam in class Derivation

derivedDepth

public int derivedDepth()
Description copied from class: Derivation
Returns how many levels of derivation this Derivation is based on. The depth counts this as well as the depths of its bases.

Specified by:
derivedDepth in class Derivation

canBeMissing

public boolean canBeMissing()
Specified by:
canBeMissing in class Derivation

isDerivedFromNonCanonical

public boolean isDerivedFromNonCanonical()
Specified by:
isDerivedFromNonCanonical in class Derivation

var1

public VarInfo var1()

var2

public VarInfo var2()