00001 #ifndef _MY_OrthoFaceAccessorWithHoles_ 00002 #define _MY_OrthoFaceAccessorWithHoles_ 00003 00004 00008 class OrthoFaceAccessorWithHoles : public OrthoFaceAccessor 00009 { 00010 private: 00011 unsigned m_newIndex; 00012 mutable DelIndexLst::Iterator m_delFace,m_delCell,m_delVert; 00013 mutable unsigned m_cell1,m_cell2; 00014 mutable bool m_bComputedAdjCells; 00015 void updateAdjCells() const; 00016 protected: 00017 00018 public: 00019 OrthoFaceAccessorWithHoles(const OrthoMesh &mesh,unsigned rawIndex); 00020 OrthoFaceAccessorWithHoles(const OrthoCellAccessorWithHoles &cell,FaceDirection3D dir); 00021 00022 00023 OrthoFaceAccessorWithHoles(const OrthoFaceAccessor &face); 00024 OrthoFaceAccessorWithHoles(); 00025 ~OrthoFaceAccessorWithHoles(){} 00026 bool at_boundary(); 00027 void getAdjCellIndices(unsigned &index1,unsigned &index2) const; 00028 void ghostAdjCellIndices(unsigned &index1,unsigned &index2); 00029 void getValidCellIndices(unsigned &index1,unsigned &index2); 00030 void operator++ (int); 00031 unsigned index() const {return m_newIndex;} 00032 unsigned raw_index() const {return m_index;} 00033 bool hasPosCell(); 00034 bool hasNegCell(); 00035 unsigned getNegCell(); 00036 unsigned getPosCell(); 00037 }; 00038 00039 #endif