00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef G_MAP_HH
00026 #define G_MAP_HH
00027
00028 #include "g-map-basic.hh"
00029 #include "inline-macro.hh"
00030
00031 #include "dart.hh"
00032 #include "attribute.hh"
00033 #include "embedding.hh"
00034 #include "coverage.hh"
00035 #include "dynamic-coverage.hh"
00036 #include "static-coverage.hh"
00037
00038 namespace GMap3d
00039 {
00049 class CGMap : public CGMapBasic
00050 {
00051 public:
00052
00053
00054
00056 CGMap();
00057
00059 virtual ~CGMap();
00060
00061
00062
00063
00064
00070
00071 bool canSew0(CDart* ADart1, CDart* ADart2);
00072 bool canSew1(CDart* ADart1, CDart* ADart2);
00073 bool canSew2(CDart* ADart1, CDart* ADart2);
00074 bool canSew3(CDart* ADart1, CDart* ADart2);
00075
00076
00082 bool canSew(CDart* ADart1, CDart* ADart2, int ADimension);
00083
00093
00094 void sew0(CDart* ADart1, CDart* ADart2);
00095 void sew1(CDart* ADart1, CDart* ADart2);
00096 void sew2(CDart* ADart1, CDart* ADart2);
00097 void sew3(CDart* ADart1, CDart* ADart2);
00098
00099
00107 void sew(CDart* ADart1, CDart* ADart2, int ADimension);
00108
00117
00118 void unsew0(CDart* ADart);
00119 void unsew1(CDart* ADart);
00120 void unsew2(CDart* ADart);
00121 void unsew3(CDart* ADart);
00122
00123
00130 void unsew(CDart* ADart,int ADimension);
00131
00137
00138
00139 CCoverage* getDynamicCoverage (const CDart* ADart, TOrbit AOrbit);
00140 CCoverage* getStaticCoverage (const CDart* ADart, TOrbit AOrbit);
00141 CCoverage* getMultiDynamicCoverage(const CDart* ADart, TOrbit AOrbit);
00142 CCoverage* getBasicDynamicCoverage(const CDart* ADart, TOrbit AOrbit,
00143 int AMarkNumber);
00144
00145
00146
00147
00148
00153 CAttribute* getAttribute(const CDart* ADart, TOrbit, TAttributeId);
00154
00161 void addAttribute(CDart* ADart, TOrbit, CAttribute*);
00162
00168 CAttribute* removeAttribute(CDart* ADart, TOrbit, TAttributeId);
00169
00175 void deleteAttribute(CDart* ADart, TOrbit, TAttributeId);
00176
00184 bool isSameOrbit(CDart* ADart1, CDart* ADart2, TOrbit AOrbit);
00185
00194 CDart* getEmbeddingOwner(const CDart* ADart, TOrbit AOrbit);
00195
00196
00214
00215 void dartSew0(CDart*, CDart* ADart2);
00216 void dartSew1(CDart*, CDart* ADart2);
00217 void dartSew2(CDart*, CDart* ADart2);
00218 void dartSew3(CDart*, CDart* ADart2);
00219 void dartSew (CDart*, CDart* ADart2, int ADimension);
00220
00221
00229
00230 void dartUnsew0(CDart* ADart);
00231 void dartUnsew1(CDart* ADart);
00232 void dartUnsew2(CDart* ADart);
00233 void dartUnsew3(CDart* ADart);
00234 void dartUnsew (CDart* ADart, int ADimension);
00235
00236
00245
00246 void topoSew0(CDart* ADart1, CDart* ADart2);
00247 void topoSew1(CDart* ADart1, CDart* ADart2);
00248 void topoSew2(CDart* ADart1, CDart* ADart2);
00249 void topoSew3(CDart* ADart1, CDart* ADart2);
00250 void topoSew (CDart* ADart1, CDart* ADart2, int ADimension);
00251
00252
00260
00261 void topoUnsew0(CDart* ADart);
00262 void topoUnsew1(CDart* ADart);
00263 void topoUnsew2(CDart* ADart);
00264 void topoUnsew3(CDart* ADart);
00265 void topoUnsew (CDart* ADart, int ADimension);
00266
00267
00268 private:
00269
00270
00271
00282 bool isValidOrbit(CDart* ADart, TOrbit AOrbit);
00283
00296 void groupAttributes(CDart* ADart1, CDart* ADart2, TMask16);
00297
00309 void duplicateAttributes(CDart* ADart1, CDart* ADart2, TMask16);
00310
00322 bool isSameOrbit(CDart* ADart1, CDart* ADart2, TOrbit AOrbit,
00323 CDart*& ADartEmbeddingOwner1);
00324 };
00325
00326 }
00327
00328 #include INCLUDE_INLINE("g-map.icc")
00329
00330 #endif // G_MAP_HH
00331