00001 #ifndef _MY_OrthoCellAccessorWithHoles_ 00002 #define _MY_OrthoCellAccessorWithHoles_ 00003 #include "delindexlst.h" 00004 00005 00009 class OrthoCellAccessorWithHoles : public OrthoCellAccessor 00010 { 00011 private: 00012 friend class OrthoMesh; 00013 friend class IteratorAccessor<OrthoCellAccessorWithHoles>; 00014 00015 DelIndexLst::Iterator _delIt,_delItVert,_delItFcX,_delItFcY,_delItFcZ; 00016 Index _newIndex; 00017 00018 protected: 00019 OrthoCellAccessorWithHoles(const OrthoMesh &mesh,unsigned rawIndex); 00020 void operator++ (int); 00021 00022 public: 00023 ~OrthoCellAccessorWithHoles(){} 00024 00025 00026 unsigned vertex_index(VertexDirection3D dir); 00027 unsigned face_index(FaceDirection3D dir); 00028 unsigned face_index_up (); 00029 unsigned face_index_down (); 00030 unsigned face_index_left (); 00031 unsigned face_index_right(); 00032 unsigned face_index_front(); 00033 unsigned face_index_back (); 00034 unsigned face_raw_index(FaceDirection3D dir){return OrthoCellAccessor::face_index(dir);} 00035 00036 00037 unsigned index() const{return _newIndex;} 00038 unsigned raw_index(){return OrthoCellAccessor::index();} 00040 unsigned neighbor_index(unsigned int dir) const; 00041 unsigned index_up (); 00042 unsigned index_down (); 00043 unsigned index_left (); 00044 unsigned index_right(); 00045 unsigned index_front(); 00046 unsigned index_back (); 00050 bool at_boundary(); 00052 OrthoMesh::Face_It face(FaceDirection3D dir); 00053 OrthoMesh::Cell_It neighbor(CellDirection3D dir); 00054 bool advance(CellDirection3D dir); 00055 unsigned advance(CellDirection3D dir,unsigned stps); 00056 00057 00058 }; 00059 00060 #endif