// tg.cd -- class dictionary for Demeter traversal graphs // $Id: tg.cd,v 1.4 1997/10/10 04:58:50 dougo Exp $ package EDU.neu.ccs.demeter.common.tg; import java.util.*; *noparse* *interface* *public* ClassNameI = . *interface* *public* PartNameI = . *interface* *public* StrategyGraphI = . // Data structures for traversal graph calculation. // Cycles here are cycles in the object graph too! *public* TraversalGraph = Hashtable DList(TGVertex). *public* TGVertex = ClassNameI *l + "incoming:" *l + List(TGEdge) - *l "outgoing:" *l + List(TGEdge) - *l List(Pair(int,int)) TGMark "." - *l. *public* TGEdge : TGCEdge | TGAEdge | TGIEdge *common* "from:" TGVertex "to:" TGVertex TGMark *l. *public* TGCEdge = "->" *s PartNameI. // const *public* TGAEdge = "=>" *s. // alt *public* TGIEdge = ":>" *s. // inh TGMark = BitSet BitSet BitSet. // Parameterized class definitions. List(S) ~ {*s S}. DList(S) ~ S { *l *l S } *l . Pair(X,Y) = "<" X "," *s Y ">". *visitors* // abstract visitors *public* TGEdgeVisitor : .