de.grogra.xl.impl.base
Class CompiletimeModel

java.lang.Object
  extended by de.grogra.xl.impl.base.CompiletimeModel
All Implemented Interfaces:
CompiletimeModel
Direct Known Subclasses:
Compiletime, CompiletimeModel, CompiletimeModel

public abstract class CompiletimeModel
extends java.lang.Object
implements CompiletimeModel


Constructor Summary
CompiletimeModel(java.lang.String runtimeConstant)
           
 
Method Summary
 Type<?> getEdgeType()
          Specifies the type of standard edges.
 Type<?> getEdgeTypeFor(Type<?> type)
          Specifies the compile-time type of edges for a given type.
 Type<Graph.QState> getQueryStateType()
          Returns the type of query states to be used for queries for this model.
 java.lang.String getRuntimeName()
          Defines the name of the corresponding RuntimeModel.
 java.io.Serializable getStandardEdgeFor(int edgeType)
          Returns a constant value representing a standard edge.
 CompiletimeModel.Property getWrapProperty(Type<?> wrapperType)
          Returns the unwrapping property of a wrapper type.
 boolean needsWrapperFor(Type<?> type)
          Determines whether a value of the given type has to be wrapped before it is added as a node to a Graph.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface de.grogra.xl.query.CompiletimeModel
getNodeType, getProducerType, getWrapperTypeFor
 

Constructor Detail

CompiletimeModel

public CompiletimeModel(java.lang.String runtimeConstant)
Method Detail

getEdgeType

public Type<?> getEdgeType()
Description copied from interface: CompiletimeModel
Specifies the type of standard edges. This method returns the type which is used for the representation of standard edges in this model. This has to be the type of the (possibly unwrapped) values returned by CompiletimeModel.getStandardEdgeFor(int).

Specified by:
getEdgeType in interface CompiletimeModel
Returns:
the type of standard edges

getEdgeTypeFor

public Type<?> getEdgeTypeFor(Type<?> type)
Description copied from interface: CompiletimeModel
Specifies the compile-time type of edges for a given type. This method returns the type to which an expression of compile-time type type should be cast before it is interpreted as an edge expression.

Specified by:
getEdgeTypeFor in interface CompiletimeModel
Parameters:
type - the type of the expression
Returns:
the type of the resulting edge expression

getQueryStateType

public Type<Graph.QState> getQueryStateType()
Description copied from interface: CompiletimeModel
Returns the type of query states to be used for queries for this model.

Specified by:
getQueryStateType in interface CompiletimeModel
Returns:
type of producers

getRuntimeName

public java.lang.String getRuntimeName()
Description copied from interface: CompiletimeModel
Defines the name of the corresponding RuntimeModel. This name is used during run-time in invocations of RuntimeModelFactory.modelForName(java.lang.String, java.lang.ClassLoader) in order to obtain the RuntimeModel suitable for the code that is compiled within this compile-time model.

Specified by:
getRuntimeName in interface CompiletimeModel
Returns:
the name of the corresponding run-time model

getStandardEdgeFor

public java.io.Serializable getStandardEdgeFor(int edgeType)
Description copied from interface: CompiletimeModel
Returns a constant value representing a standard edge. The returned value represents the given standard edge (EdgePattern.ANY_EDGE, EdgePattern.BRANCH_EDGE, EdgePattern.SUCCESSOR_EDGE or EdgePattern.REFINEMENT_EDGE) for this model. It is used as argument to constructor invocations of EdgePattern. Primitive values have to be wrapped as usual.

Specified by:
getStandardEdgeFor in interface CompiletimeModel
Parameters:
edgeType - int-value encoding a standard edge
Returns:
corresponding representation for this model

getWrapProperty

public CompiletimeModel.Property getWrapProperty(Type<?> wrapperType)
Description copied from interface: CompiletimeModel
Returns the unwrapping property of a wrapper type. wrapperType is the type of a wrapper. If there is a property declared in this type which can be used to obtain the wrapped argument, this property is returned, otherwise null.

Specified by:
getWrapProperty in interface CompiletimeModel
Parameters:
wrapperType - the type of a wrapper
Returns:
the unwrapping property for this type

needsWrapperFor

public boolean needsWrapperFor(Type<?> type)
Description copied from interface: CompiletimeModel
Determines whether a value of the given type has to be wrapped before it is added as a node to a Graph.

Specified by:
needsWrapperFor in interface CompiletimeModel
Parameters:
type - a value type
Returns:
true iff a wrapper is needed for type