1 // SMESH SMESHDS : idl implementation based on 'SMESH' unit's classes
3 // Copyright (C) 2004 CEA
5 // This library is free software; you can redistribute it and/or
6 // modify it under the terms of the GNU Lesser General Public
7 // License as published by the Free Software Foundation; either
8 // version 2.1 of the License.
10 // This library is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 // Lesser General Public License for more details.
15 // You should have received a copy of the GNU Lesser General Public
16 // License along with this library; if not, write to the Free Software
17 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 // See http://www.salome-platform.org or email : webmaster.salome@opencascade.org
23 // File : SMESHDS_Group.cxx
27 #include "SMESHDS_GroupBase.hxx"
28 #include "SMESHDS_Mesh.hxx"
30 #include "utilities.h"
34 //=============================================================================
38 //=============================================================================
40 SMESHDS_GroupBase::SMESHDS_GroupBase (const int theID,
41 const SMESHDS_Mesh* theMesh,
42 const SMDSAbs_ElementType theType):
43 myID(theID), myMesh(theMesh), myType(theType), myStoreName(""),
44 myCurIndex(0), myCurID(0)
48 //=============================================================================
52 //=============================================================================
54 int SMESHDS_GroupBase::GetID (const int theIndex)
56 if (myCurIndex < 1 || myCurIndex > theIndex) {
57 myIterator = GetElements();
61 while (myCurIndex < theIndex && myIterator->more()) {
63 myCurID = myIterator->next()->GetID();
65 return myCurIndex == theIndex ? myCurID : -1;
68 //=============================================================================
72 //=============================================================================
74 const SMDS_MeshElement* SMESHDS_GroupBase::findInMesh (const int theID) const
76 SMDSAbs_ElementType aType = GetType();
77 const SMDS_MeshElement* aElem = NULL;
78 if (aType == SMDSAbs_Node) {
79 aElem = GetMesh()->FindNode(theID);
81 else if (aType != SMDSAbs_All) {
82 aElem = GetMesh()->FindElement(theID);
83 if (aElem && aType != aElem->GetType())
89 //=======================================================================
92 //=======================================================================
94 int SMESHDS_GroupBase::Extent()
96 SMDS_ElemIteratorPtr it = GetElements();
99 for ( ; it->more(); it->next() )
104 //=======================================================================
107 //=======================================================================
109 bool SMESHDS_GroupBase::IsEmpty()
111 SMDS_ElemIteratorPtr it = GetElements();
112 return ( !it || !it->more() );
115 //=======================================================================
116 //function : Contains
118 //=======================================================================
120 bool SMESHDS_GroupBase::Contains (const int theID)
122 SMDS_ElemIteratorPtr it = GetElements();
123 bool contains = false;
125 while ( !contains && it->more() )
126 contains = ( it->next()->GetID() == theID );
130 //=======================================================================
133 //=======================================================================
135 void SMESHDS_GroupBase::SetType(SMDSAbs_ElementType theType)