X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMESHDS%2FSMESHDS_SubMesh.cxx;h=31710630d79ec3e4d2b0fd6a698598e03d43656e;hb=f7fbf1c62246f439c35746c731f64dab57391c1b;hp=e2e1494adb9d375749adf7c6cd3c3fde0f73f50b;hpb=145c89df59d6376b6c7316512aa176a9808c94af;p=modules%2Fsmesh.git diff --git a/src/SMESHDS/SMESHDS_SubMesh.cxx b/src/SMESHDS/SMESHDS_SubMesh.cxx index e2e1494ad..31710630d 100644 --- a/src/SMESHDS/SMESHDS_SubMesh.cxx +++ b/src/SMESHDS/SMESHDS_SubMesh.cxx @@ -29,16 +29,6 @@ using namespace std; #include "SMESHDS_SubMesh.hxx" -//======================================================================= -//function : SMESHDS_SubMesh -//purpose : -//======================================================================= -SMESHDS_SubMesh::SMESHDS_SubMesh(const SMDS_Mesh * M):myMesh(M) -{ - myListOfEltIDIsUpdate = false; - myListOfNodeIDIsUpdate = false; -} - //======================================================================= //function : AddElement //purpose : @@ -46,7 +36,6 @@ SMESHDS_SubMesh::SMESHDS_SubMesh(const SMDS_Mesh * M):myMesh(M) void SMESHDS_SubMesh::AddElement(const SMDS_MeshElement * ME) { myElements.insert(ME); - myListOfEltIDIsUpdate = false; } //======================================================================= @@ -56,7 +45,6 @@ void SMESHDS_SubMesh::AddElement(const SMDS_MeshElement * ME) void SMESHDS_SubMesh::RemoveElement(const SMDS_MeshElement * ME) { myElements.erase(ME); - myListOfEltIDIsUpdate = false; } //======================================================================= @@ -66,7 +54,6 @@ void SMESHDS_SubMesh::RemoveElement(const SMDS_MeshElement * ME) void SMESHDS_SubMesh::AddNode(const SMDS_MeshNode * N) { myNodes.insert(N); - myListOfNodeIDIsUpdate = false; } //======================================================================= @@ -76,7 +63,6 @@ void SMESHDS_SubMesh::AddNode(const SMDS_MeshNode * N) void SMESHDS_SubMesh::RemoveNode(const SMDS_MeshNode * N) { myNodes.erase(N); - myListOfNodeIDIsUpdate = false; } //======================================================================= @@ -88,15 +74,6 @@ int SMESHDS_SubMesh::NbElements() const return myElements.size(); } -//======================================================================= -//function : GetElements -//purpose : -//======================================================================= -const set & SMESHDS_SubMesh::GetElements() -{ - return myElements; -} - //======================================================================= //function : NbNodes //purpose : @@ -106,49 +83,42 @@ int SMESHDS_SubMesh::NbNodes() const return myNodes.size(); } -//======================================================================= -//function : GetNodes -//purpose : -//======================================================================= -const set & SMESHDS_SubMesh::GetNodes() const +template class MySetIterator:public SMDS_Iterator { - return myNodes; -} + const set& mySet; + set::const_iterator myIt; -//======================================================================= -//function : GetIDElements -//purpose : -//======================================================================= -const vector & SMESHDS_SubMesh::GetIDElements() -{ - if (!myListOfEltIDIsUpdate) + public: + MySetIterator(const set& s):mySet(s), myIt(s.begin()) { - myListOfEltID.clear(); - set::iterator it=myElements.begin(); - for (; it!=myElements.end(); it++) - { - myListOfEltID.push_back((*it)->GetID()); - } - myListOfEltIDIsUpdate = true; } - return myListOfEltID; -} -//======================================================================= -//function : GetIDNodes -//purpose : -//======================================================================= -const vector & SMESHDS_SubMesh::GetIDNodes() -{ - if (!myListOfNodeIDIsUpdate) + bool more() + { + return myIt!=mySet.end(); + } + const T* next() { - myListOfNodeID.clear(); - set::iterator it=myNodes.begin(); - for (; it!=myNodes.end(); it++) - { - myListOfNodeID.push_back((*it)->GetID()); - } - myListOfNodeIDIsUpdate = true; + const T* t=*myIt; + myIt++; + return t; } - return myListOfNodeID; +}; +/////////////////////////////////////////////////////////////////////////////// +///Return an iterator on the elements of submesh +///The created iterator must be free by the caller +/////////////////////////////////////////////////////////////////////////////// +SMDS_Iterator * SMESHDS_SubMesh::GetElements() const +{ + return new MySetIterator(myElements); } + +/////////////////////////////////////////////////////////////////////////////// +///Return an iterator on the nodes of submesh +///The created iterator must be free by the caller +/////////////////////////////////////////////////////////////////////////////// +SMDS_Iterator * SMESHDS_SubMesh::GetNodes() const +{ + return new MySetIterator(myNodes); +} +