You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
1.4 KiB
69 lines
1.4 KiB
|
|
#include <utility> |
|
#include <map> |
|
#include <list> |
|
#include "Node.h" |
|
|
|
|
|
class InstanceNode: public Node |
|
{ |
|
public: |
|
InstanceNode(void){node_type = INSTANCE_NODE; id = "empty"; type= "empty";}; |
|
char* id; |
|
char* type; |
|
int node_type; |
|
|
|
OwnSlotsNode own_slots; |
|
void addOwnSlots(OwnSlotsNode* own_slots); |
|
virtual void printNode(); |
|
virtual int qualifyNode(); |
|
}; |
|
|
|
void InstanceNode::addOwnSlots(OwnSlotsNode* sn) |
|
{ |
|
own_slots.addOwnSlot(&sn->own_slot); |
|
} |
|
|
|
|
|
|
|
void InstanceNode::printNode() |
|
{ |
|
cout<<"InstanceNode: Node node_type is "<<node_type<<"\n"; |
|
cout<<"InstanceNode: Node type is "<<type<<"\n"; |
|
cout<<"InstanceNode: Node id is "<<id<<"\n"; |
|
own_slots.printNode(); |
|
} |
|
int InstanceNode::qualifyNode() |
|
{return node_type;} |
|
|
|
class InstancesNode: public Node |
|
{ |
|
public: |
|
InstancesNode(void){node_type = INSTANCES_NODE;}; |
|
int node_type; |
|
NodeGroup instances; |
|
|
|
void addInstance(InstanceNode* in); |
|
virtual void printNode(); |
|
virtual int qualifyNode(); |
|
}; |
|
|
|
void InstancesNode::addInstance(InstanceNode* in) |
|
{ |
|
instances.Sons.push_back(new InstanceNode); |
|
InstanceNode* ilp = (InstanceNode*) instances.Sons.front(); |
|
|
|
ilp->addOwnSlots(&in->own_slots); |
|
|
|
} |
|
|
|
void InstancesNode::printNode() |
|
{ |
|
cout<<"InstancesNode: Node type is "<<node_type<<"\n"; |
|
list<Node*>::iterator it; |
|
for(it = instances.Sons.begin(); it!=instances.Sons.end(); ++it) |
|
(*it)->printNode(); |
|
} |
|
|
|
int InstancesNode::qualifyNode() |
|
{return node_type;}
|
|
|