-// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE
//
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+
// SMESH SMESHDS : management of mesh data and SMESH document
// File : SMESHDS_SubMesh.hxx
// Module : SMESH
#include "SMDS_Mesh.hxx"
#include <set>
+#include <vector>
class SMESHDS_SubMesh;
typedef SMDS_Iterator<const SMESHDS_SubMesh*> 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);
bool IsComplexSubmesh() const { return !mySubMeshes.empty(); }
// if !IsComplexSubmesh()
void AddElement(const SMDS_MeshElement * ME);
- bool RemoveElement(const SMDS_MeshElement * ME); // ret true if ME was in
+ 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); // ret true if ME was in
+ bool RemoveNode(const SMDS_MeshNode * ME, bool isNodeDeleted); // ret true if ME was in
// if IsComplexSubmesh()
void AddSubMesh( const SMESHDS_SubMesh* theSubMesh );
// clear the contents
void Clear();
+ int getSize();
+ void compactList();
+
+ inline SMESHDS_Mesh *getParent() {return myParent; };
private:
- //const SMDS_Mesh * myMesh;
- std::set<const SMDS_MeshElement*> myElements;
- std::set<const SMDS_MeshNode*> myNodes;
- std::set<const SMESHDS_SubMesh*> mySubMeshes;
+ SMESHDS_Mesh * myParent;
+ std::vector<const SMDS_MeshElement*> myElements;
+ std::vector<const SMDS_MeshNode*> myNodes;
+
+ int myUnusedIdNodes;
+ int myUnusedIdElements;
+ int myIndex;
+
+ std::set<const SMESHDS_SubMesh*> mySubMeshes;
};
#endif