BIE |
/home/weinberg/src/BIE/include/Node.h00001 // This is really -*- C++ -*- 00002 00003 #ifndef Node_h 00004 #define Node_h 00005 00006 #include <cstddef> // for NULL 00007 #include <vector> 00008 #include <iostream> 00009 00010 #include "Serializable.h" 00011 00012 00013 using namespace std; 00014 00015 namespace BIE { 00016 00017 class Tile; 00018 00025 class Node: public Serializable 00026 { 00027 00028 public: 00029 00031 Node(); 00032 00034 Node(Tile* t, int tileid, int depth, int numchildren); 00035 00039 Node * copytree(int tileidoffset = 0); 00040 00042 int ID() { return tileid; }; 00043 00045 Tile* GetTile() { return tile; } 00046 00048 void print(ostream & outputstream); 00049 00051 Node * First(); 00052 00054 Node * Last(); 00055 00058 Node * CurrentItem(); 00059 00063 Node * Next(); 00064 00067 bool IsDone(); 00068 00070 void Reset(); 00071 00072 protected: 00074 vector<Node*> children; 00075 00076 private: 00077 00079 Tile *tile; 00080 00082 int tileid; 00083 00085 int depth; 00086 00088 int childindex; 00089 00090 // AUTO GENERATED BY ../persistence/autopersist.py 00091 private: 00092 friend class boost::serialization::access; 00093 template<class Archive> 00094 void serialize(Archive & ar, const unsigned int version) { 00095 this->pre_serialize(ar, version); 00096 try { 00097 ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(Serializable); 00098 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00099 } 00100 try { 00101 ar & BOOST_SERIALIZATION_NVP(children); 00102 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00103 } 00104 try { 00105 ar & BOOST_SERIALIZATION_NVP(tile); 00106 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00107 } 00108 try { 00109 ar & BOOST_SERIALIZATION_NVP(tileid); 00110 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00111 } 00112 try { 00113 ar & BOOST_SERIALIZATION_NVP(depth); 00114 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00115 } 00116 try { 00117 ar & BOOST_SERIALIZATION_NVP(childindex); 00118 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00119 } 00120 this->post_serialize(ar, version); 00121 } 00122 00123 }; 00124 00128 class BinaryNode : public Node 00129 { 00130 00131 public: 00132 00134 BinaryNode() : Node() { 00135 children = vector<Node*>(2, static_cast<Node*>(NULL)); 00136 } 00137 00139 BinaryNode(Tile* t, int tid, int d) : Node(t, tid, d, 2) {} 00140 00142 void setLeft(Node* l) { children[0] = l; } 00143 00145 void setRight(Node* r) { children[1] = r; } 00146 00147 // AUTO GENERATED BY ../persistence/autopersist.py 00148 private: 00149 friend class boost::serialization::access; 00150 template<class Archive> 00151 void serialize(Archive & ar, const unsigned int version) { 00152 this->pre_serialize(ar, version); 00153 try { 00154 ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(Node); 00155 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00156 } 00157 this->post_serialize(ar, version); 00158 } 00159 00160 }; 00161 00166 class QuadNode : public Node 00167 { 00168 00169 public: 00171 QuadNode() : Node() { 00172 children = vector<Node*>(4, static_cast<Node*>(NULL)); 00173 } 00174 00176 QuadNode(Tile* t, int tid, int d) : Node(t, tid, d, 4) {} 00177 00179 void setNorthEast(Node* n) { children[0] = n; } 00180 00182 void setSouthEast(Node* n) { children[1] = n; } 00183 00185 void setSouthWest(Node* n) { children[2] = n; } 00186 00188 void setNorthWest(Node* n) { children[3] = n; } 00189 00190 // AUTO GENERATED BY ../persistence/autopersist.py 00191 private: 00192 friend class boost::serialization::access; 00193 template<class Archive> 00194 void serialize(Archive & ar, const unsigned int version) { 00195 this->pre_serialize(ar, version); 00196 try { 00197 ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(Node); 00198 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00199 } 00200 this->post_serialize(ar, version); 00201 } 00202 00203 }; 00204 00209 class MonoNode : public Node 00210 { 00211 00212 public: 00214 MonoNode() : Node() { 00215 children = vector<Node*>(1, static_cast<Node*>(NULL)); 00216 } 00217 00219 MonoNode(Tile* t, int tid, int d) : Node(t, tid, d, 1) {} 00220 00222 void setChild(Node* n) { children[0] = n; } 00223 00224 // AUTO GENERATED BY ../persistence/autopersist.py 00225 private: 00226 friend class boost::serialization::access; 00227 template<class Archive> 00228 void serialize(Archive & ar, const unsigned int version) { 00229 this->pre_serialize(ar, version); 00230 try { 00231 ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(Node); 00232 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00233 } 00234 this->post_serialize(ar, version); 00235 } 00236 00237 }; 00238 00239 } // namespace BIE 00240 BIE_CLASS_TYPE_INFO(BIE::Node) 00241 BIE_CLASS_TYPE_INFO(BIE::BinaryNode) 00242 BIE_CLASS_TYPE_INFO(BIE::QuadNode) 00243 BIE_CLASS_TYPE_INFO(BIE::MonoNode) 00244 BIE_CLASS_EXPORT_KEY(BIE::Node) 00245 BIE_CLASS_EXPORT_KEY(BIE::BinaryNode) 00246 BIE_CLASS_EXPORT_KEY(BIE::QuadNode) 00247 BIE_CLASS_EXPORT_KEY(BIE::MonoNode) 00248 #endif Send suggestions, questions, and feedback to WEINBERG at ASTRO dot UMASS dot EDU. Documentation generated at Fri Mar 26 00:35:10 2010 by
|