00001 00002 #ifndef NODE_H 00003 #define NODE_H 00004 #include <list> 00005 00006 00007 using namespace std; 00008 00009 class Node 00010 { 00011 public: 00012 //int node_type; 00013 virtual ~Node(void){}; 00014 virtual void printNode()=0; 00015 virtual int qualifyNode()=0; 00016 }; 00017 00018 00019 class NodeGroup :public Node 00020 { 00021 public: 00022 virtual ~NodeGroup(); 00023 typedef list<Node *>::iterator iterator; 00024 list<Node *> Sons; 00025 virtual void addNode(Node* nd); 00026 virtual void printNode(); 00027 virtual int qualifyNode(); 00028 00029 }; 00030 00031 NodeGroup::~NodeGroup() //distruttore: disalloca tutti i figli 00032 { 00033 //for(iterator i=Sons.begin();i!=Sons.end();++i) 00034 // delete (*i); 00035 } 00036 00037 void NodeGroup::addNode(Node* nd) 00038 { 00039 Sons.push_back(nd); 00040 } 00041 void NodeGroup::printNode() 00042 {} 00043 00044 int NodeGroup::qualifyNode() 00045 {return 0;} 00046 00047 const int MAIN_NODE= 0; 00048 const int SLOTS_NODE= 1; 00049 const int SLOT_NODE= 2; 00050 const int OWNSLOT_NODE= 3; 00051 const int ENTRY_NODE= 4; 00052 const int VALUE_NODE= 5; 00053 00054 const int CLASSES_NODE= 6; 00055 const int CLASS_NODE= 7; 00056 const int OWNSLOTS_NODE= 8; 00057 00058 const int INSTANCES_NODE= 9; 00059 const int INSTANCE_NODE= 10; 00060 00061 00062 enum values {VALUE_INTEGER, VALUE_FLOAT, VALUE_BOOL, VALUE_STRING}; 00063 00064 //#define MAIN_NODE 0; 00065 //#define SLOTS_NODE 1; 00066 //#define SLOT_NODE 2; 00067 //#define OWNSLOT_NODE 3; 00068 //#define ENTRY_NODE 4; 00069 //#define VALUE_NODE 5; 00070 // 00071 //#define CLASSES_NODE 6; 00072 //#define CLASS_NODE 7; 00073 //#define OWNSLOTS_NODE 8; 00074 // 00075 //#define INSTANCES_NODE 9; 00076 //#define INSTANCE_NODE 10; 00077 00078 #endif