Star, which defines code to implement the node operation, or a WormHole, which has an internal graph that is hidden from the outside. A WormHole is used when there is a change in the semantics between the internal and external graphs, such as a change in the Domain or Scheduler. For purposes of the outside graph, a WormHole is equivalent to a Star. A non-atomic node, or Galaxy, is a node which contains an internal graph which is visible from the outside. This internal graph is stored in a Galaxy's BlockList. Finally, a Scheduler is a class that determines the firing order of atomic nodes in a graph.
WormHoles, Galaxies and Stars are all derived from the class Block. A Block contains PortLists, which store a list of PortHoles that provide locations to connect input or output arcs to the Block. Blocks also contain StateLists, which may either be user-specified parameters or run-time states that are used when a graph is executed.A user specification is compiled into an internal representation known as an interpreted universe (
InterpUniverse). Currently, the user specifications are in the form of ptcl or oct facets. In the future there will probably be also a Tycho specification format. An InterpUniverse captures the user hierarchy in the form of a directed graph of WormHoles, Galaxies and Stars. The InterpUniverse is derived from Galaxy and contains the top-level user-specification in its BlockList. Every other level of the user specified hierarchy is represented by either a Wormhole or Galaxy embedded inside of its parent Galaxy. All
Blocks have a parent Block pointer. The parent of a Block is the Galaxy or WormHole in which the Block is embedded. The InterpUniverse, which is the top-level Galaxy user specification, has its parent pointer set to NULL.