|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
public interface SENode
Defines methods needed to compile Show into a binary file. All show elements (Segments, Features, Commands, RCHandlers) that are constructed on the SE side during show compilation are expected to implement this interface.
Node
Method Summary | |
---|---|
void |
accept(SEShowVisitor visitor)
Calls the visit method corresponding to this node type. |
void |
changeFeatureReference(Feature from,
Feature to)
Change a feature reference from one feature to a new one. |
java.lang.String |
getRuntimeClassName()
Returns the class that should be constructed at Show runtime to represent this SENode. |
void |
postProcess(ShowBuilder builder)
Do any needed post-processing in this show. |
void |
writeInstanceData(GrinDataOutputStream out)
Record this node information to the binary file format. |
Method Detail |
---|
void writeInstanceData(GrinDataOutputStream out) throws java.io.IOException
out
- The stream to write out.
java.io.IOException
- if error occurs.GrinDataOutputStream.writeSuperClassData(Feature)
,
GrinDataOutputStream.writeSuperClassData(RCHandler)
,
GrinDataOutputStream.writeSuperClassData(Segment)
,
GrinDataOutputStream.writeSuperClassData(Command)
java.lang.String getRuntimeClassName()
void accept(SEShowVisitor visitor)
If you are defining a user-defined feature, there are some
restrictions that you'll want to follow. If your extension is
a feature that has children, then you should make it a subclass
of one of the built-in feature types, Assembly, Modifer or Group.
That's because the GRIN compiler defines visitors that need to
visit every node in the tree, but these built-in visitors don't
know about your extension types. By making your extension type
a subclass of one of the standard ones, and by making your
accept()
method call either
visitAssembly()
, visitGroup()
or
visitUserDefinedModifier()
, as appropriate,
you'll ensure that all the children get visited.
visitor
- SEShowVisitor object.SEShowVisitor
void postProcess(ShowBuilder builder) throws java.io.IOException
During the post-process phase, a node can add new features to the
show, by calling ShowBuilder.addSyntheticFeature()
,
and it can insert a new feature as the parent of a given feature,
by calling ShowBuilder.injectParent()
. It can also
add segments and handlers by calling the appropriate builder methods.
When a parent is injected, the ShowBuilder calls postProcess() on all nodes automatically, including nodes that are created during the execution of postProcess() in another node.
builder
- The builder that holds state for the show
java.io.IOException
- if an error is encounteredShowBuilder.addSyntheticFeature(Feature)
,
ShowBuilder.injectParent(Feature, Feature)
void changeFeatureReference(Feature from, Feature to) throws java.io.IOException
from
, it should be
changed to refer to to
. This is called for every node
in an SEShow when SENode.injectParent
is used.
The ShowBuilder calls changeFeatureReference() on all nodes automatically, including nodes that are created during the execution of postProcess().
java.io.IOException
- If the operation can't be completedchangeFeatureReference(Feature, Feature)
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |