BIE |
/home/weinberg/src/BIE/include/Frontier.h00001 // This is really -*- C++ -*- 00002 00003 #ifndef Frontier_h 00004 #define Frontier_h 00005 00006 #include <string> 00007 #include <algorithm> 00008 00009 #include "Serializable.h" 00010 00011 00012 #include "BIEmpi.h" 00013 #include "Node.h" 00014 #include "Tessellation.h" 00015 #include "FrontierExpansionHeuristic.h" 00016 00017 namespace BIE { 00018 00019 class FrontierExpansionHeuristic; 00020 00021 //+ CLICLASS Frontier 00031 class Frontier: public Serializable 00032 { 00033 00034 public: 00035 00039 Frontier(Tessellation * tess); 00040 00042 Frontier(const Frontier*); 00043 00044 //+ CLIMETHOD Frontier* Copy 00046 Frontier* Copy(); 00047 00049 /* virtual */ ~Frontier() {}; 00050 00053 inline Tessellation * getTessellation() 00054 { return frontier_tessellation; } 00055 00057 inline vector<int> ExportFrontier() { return frontier_tiles; } 00058 00059 //+ CLIMETHOD void RetractToTopLevel 00061 void RetractToTopLevel(); 00062 00063 //+ CLIMETHOD void UpDownLevels int 00068 void UpDownLevels(int n); 00069 00079 void Set(vector<int> FrontierState); 00080 00081 //+ CLIMETHOD bool IncreaseResolution FrontierExpansionHeuristic* int 00090 //+ CLIMETHOD bool IncreaseResolution FrontierExpansionHeuristic* 00098 bool IncreaseResolution (FrontierExpansionHeuristic * heuristic, int numlevels = 1); 00099 00102 Node * Find(double x, double y); 00103 00106 inline int First(void) { return frontier_tiles[0]; } 00107 00110 inline int Last(void) { return frontier_tiles[frontier_tiles.size()-1]; } 00111 00115 int Next(void); 00116 00119 int CurrentItem(void); 00120 00123 inline void Reset(void) { frontier_index = 0; } 00124 00127 inline bool IsDone(void) { return (frontier_index == frontier_tiles.size()); } 00128 00130 unsigned int Size() { return frontier_tiles.size(); } 00131 00132 //+ CLIMETHOD void printSize 00134 void printSize() { 00135 if (myid==0) cout << "Frontier size=" << frontier_tiles.size() << endl; 00136 } 00137 00139 inline bool AccumulateMode() { return accumulate_mode; } 00140 00141 private: 00143 vector<int> frontier_tiles; 00144 00147 vector<bool> frontier_infrontier; 00148 00150 unsigned int frontier_index; 00151 00153 Tessellation * frontier_tessellation; 00154 00158 bool accumulate_mode; 00159 00161 void ExpandOneLevel(); 00162 00164 void ContractOneLevel(); 00165 00167 Node * GetNode(int tileid); 00168 00170 void EraseFrontier(); 00171 00174 void AddToFrontier(int tileid); 00175 00177 bool WalkAndAdd(vector<bool>& frontiercopy, int& parentid); 00178 00179 00181 00182 00183 vector<int> TrueFrontier(); 00185 void TrueFrontier(vector<int>& real_frontier, int& parentid); 00187 00189 void RecursivelySelect(Node *node, vector<bool> & nodesetbitvector); 00190 00193 Node * FindInTree(Node* node, double x, double y); 00194 00195 // AUTO GENERATED BY ../persistence/autopersist.py 00196 protected: 00197 Frontier() {} 00198 private: 00199 friend class boost::serialization::access; 00200 template<class Archive> 00201 void serialize(Archive & ar, const unsigned int version) { 00202 this->pre_serialize(ar, version); 00203 try { 00204 ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(Serializable); 00205 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00206 } 00207 try { 00208 ar & BOOST_SERIALIZATION_NVP(frontier_tiles); 00209 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00210 } 00211 try { 00212 ar & BOOST_SERIALIZATION_NVP(frontier_infrontier); 00213 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00214 } 00215 try { 00216 ar & BOOST_SERIALIZATION_NVP(frontier_index); 00217 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00218 } 00219 try { 00220 ar & BOOST_SERIALIZATION_NVP(frontier_tessellation); 00221 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00222 } 00223 try { 00224 ar & BOOST_SERIALIZATION_NVP(accumulate_mode); 00225 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00226 } 00227 this->post_serialize(ar, version); 00228 } 00229 00230 }; 00231 00232 } // namespace BIE 00233 00234 BIE_CLASS_TYPE_INFO(BIE::Frontier) 00235 BIE_CLASS_EXPORT_KEY(BIE::Frontier) 00236 #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
|