X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2FSMESHDS%2FSMESHDS_SubMesh.hxx;h=2369327c5c9d72537334a4019fa9f5d11e51bf62;hb=5142df035d3a1f35c6af00cde28969088a547205;hp=de086ddaa233b88a2cf1ab9e38a10c1e8d5e2554;hpb=9357f5c87098aff2b95b754d69f66c76d2df9c24;p=modules%2Fsmesh.git diff --git a/src/SMESHDS/SMESHDS_SubMesh.hxx b/src/SMESHDS/SMESHDS_SubMesh.hxx index de086ddaa..2369327c5 100644 --- a/src/SMESHDS/SMESHDS_SubMesh.hxx +++ b/src/SMESHDS/SMESHDS_SubMesh.hxx @@ -31,44 +31,58 @@ #include "SMDS_Mesh.hxx" #include +#include class SMESHDS_SubMesh; typedef SMDS_Iterator SMESHDS_SubMeshIterator; typedef boost::shared_ptr< SMESHDS_SubMeshIterator > SMESHDS_SubMeshIteratorPtr; +class SMESHDS_Mesh; + class SMESHDS_EXPORT SMESHDS_SubMesh { public: + SMESHDS_SubMesh(SMESHDS_Mesh *parent, int index); + virtual ~SMESHDS_SubMesh(); - bool IsComplexSubmesh() const { return !mySubMeshes.empty(); } + virtual bool IsComplexSubmesh() const { return !mySubMeshes.empty(); } // if !IsComplexSubmesh() - void AddElement(const SMDS_MeshElement * ME); - bool RemoveElement(const SMDS_MeshElement * ME, bool isElemDeleted); // ret true if ME was in - void AddNode(const SMDS_MeshNode * ME); - bool RemoveNode(const SMDS_MeshNode * ME, bool isNodeDeleted); // ret true if ME was in + virtual void AddElement(const SMDS_MeshElement * ME); + virtual bool RemoveElement(const SMDS_MeshElement * ME, bool isElemDeleted); // ret true if ME was in + virtual void AddNode(const SMDS_MeshNode * ME); + virtual bool RemoveNode(const SMDS_MeshNode * ME, bool isNodeDeleted); // ret true if ME was in // if IsComplexSubmesh() void AddSubMesh( const SMESHDS_SubMesh* theSubMesh ); bool RemoveSubMesh( const SMESHDS_SubMesh* theSubMesh ); + void RemoveAllSubmeshes(); bool ContainsSubMesh( const SMESHDS_SubMesh* theSubMesh ) const; int NbSubMeshes() const { return mySubMeshes.size(); } SMESHDS_SubMeshIteratorPtr GetSubMeshIterator() const; // for both types - int NbElements() const; - SMDS_ElemIteratorPtr GetElements() const; - int NbNodes() const; - SMDS_NodeIteratorPtr GetNodes() const; - bool Contains(const SMDS_MeshElement * ME) const; // check if elem or node is in + virtual int NbElements() const; + virtual SMDS_ElemIteratorPtr GetElements() const; + virtual int NbNodes() const; + virtual SMDS_NodeIteratorPtr GetNodes() const; + virtual bool Contains(const SMDS_MeshElement * ME) const; // check if elem or node is in // clear the contents - void Clear(); + virtual void Clear(); + int getSize(); + void compactList(); + + inline SMESHDS_Mesh *getParent() {return myParent; }; private: + SMESHDS_Mesh * myParent; + std::vector myElements; + std::vector myNodes; - typedef std::set TElemSet; - TElemSet myElements, myNodes; + int myUnusedIdNodes; + int myUnusedIdElements; + int myIndex; std::set mySubMeshes; };