===================
PRIMITIVE DATA STRUCTURES
Dim {
int cardinality;
}
DAGNode {
Operator op;
orderedSet<Dim> result_dims;
orderedSet<int> result_dim_strides;
}
DAG {
DAGNode node;
UnorderedSet<DAG> inputs;
UnorderedSet<DAG> outputs;
}
==================
MAIN DATA STRUCTURES
String code;
++++++++++++++
|
| parser
\|/
++++++++++++++
ProtoNet {
OrderedSet<DAG> inputs;
OrderedSet<DAG> outputs;
Hashtable<String, DAG> named_channels;
Hashtable<String, Dim> dim_hash;
Hashtable<String, ProtoNet> subnets;
}
++++++++++++++
|
| instantiator
\|/
++++++++++++++
LiveNet {
ProtoNet prototype;
OrderedSet<DAG> inputs;
OrderedSet<DAG> outputs;
Hashtable<String, DAG> named_channels;
Hashtable<String, Dim> dim_hash;
Hashtable<String, LiveNet> members;
}
++++++++++++++
|
| evaluation (interpreter) or code generation (compiler)
\|/