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
Block
s 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
.