70 lines
1.4 KiB
C
70 lines
1.4 KiB
C
|
|
||
|
#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;}
|