An EGNode maintains three public lists of EGGates:
ancestors,
descendants,
and hiddenGates
.
void setNextInvoc(EGNode* next);The first two methods sets and gets the next invocation EGNode. The third method searches through the linked list starting from the current EGNode to return the invocation with the argument invocation number. If the argument is less than the invocation number of the current EGNode, returns 0. The other methods sets and gets the invocation number of the current EGNode.
EGNode* getNextInvoc();
EGNode* getInvocation(int i);
void setInvocationNumber(int i);
int invocationNumber();
void deleteInvocChain();Deletes all EGNodes linked together starting from the current EGNode. This method is usually called at the EGNode of the first invocation.
StringList printMe();These methods print the name and the invocation number. In the first method, the
StringList printShort();
ancestors
and descendants
lists are also printed.
DataFlowStar* myMaster();Returns the original DataFlowStar of which the current EGNode is an invocation.
int root();This method returns TRUE or FALSE, based on whether this node is a root of the APEG. A node is a root if it either has no ancestors, or if each arc in the ancestor list has enough delay on it.
EGGate* makeArc(EGNode* dest, int samples, int delay);Create a connection from this node to the first argument node. A pair of EGGates and an EGArc are allocated in this method. This EGNode is assumed to be the source of the connection.
void resetVisit();The above methods manipulates a flag for traversal algorithms: resets to 0, sets to 1, or queries the flag.
void beingVisited();
int alreadyVisited();
void claimSticky();These methods manipulates another flag to indicate that the invocations of the same DataFlowStar may not be scheduled into different processors since there is a strong interdependency between them. The first method sets the flag and the second queries the flag.
int sticky();
void append(EGNode* node);These methods appends or inserts the argument EGNode to the list.
void insert(EGNode* node);
EGNode* takeFromFront();The above methods both returns the first EGNode in the list. The first method removes the node from the list while the second method does not.
EGNode* headNode();
There is a iterator class for the EGNodeList class, called EGNodeListIter. It returns the EGNodes.