X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMDS%2FSMDS_MeshElementIDFactory.cxx;h=43f12c7771912daa708edc644b22104f7da9b0de;hp=34b433f4160d02a16801e44dd0631f7c9ffec218;hb=c3bf92bd87b770fd81631a3853f7f5bb1ac6a4e8;hpb=c6248ade999eaffe5bbddbcaea61487811aa4e0c diff --git a/src/SMDS/SMDS_MeshElementIDFactory.cxx b/src/SMDS/SMDS_MeshElementIDFactory.cxx index 34b433f41..43f12c777 100644 --- a/src/SMDS/SMDS_MeshElementIDFactory.cxx +++ b/src/SMDS/SMDS_MeshElementIDFactory.cxx @@ -1,18 +1,84 @@ -using namespace std; -// File: SMDS_MeshElementIDFactory.cxx -// Created: Tue May 7 16:57:15 2002 -// Author: Jean-Michel BOULCOURT -// +// SMESH SMDS : implementaion of Salome mesh data structure +// +// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +// +// +// +// File : SMDS_MeshElementIDFactory.cxx +// Author : Jean-Michel BOULCOURT +// Module : SMESH -#include "SMDS_MeshElementIDFactory.ixx" +#include "SMDS_MeshElementIDFactory.hxx" +#include "SMDS_MeshElement.hxx" //======================================================================= //function : SMDS_MeshElementIDFactory //purpose : //======================================================================= +SMDS_MeshElementIDFactory::SMDS_MeshElementIDFactory():SMDS_MeshIDFactory() +{ +} + +//======================================================================= +//function : BindID +//purpose : +//======================================================================= +bool SMDS_MeshElementIDFactory::BindID(int ID, SMDS_MeshElement * elem) +{ + bool bound=myIDElements.insert( + map::value_type(ID,elem)).second; + if(bound) elem->myID=ID; + return bound; +} -SMDS_MeshElementIDFactory::SMDS_MeshElementIDFactory() : SMDS_MeshIDFactory() +//======================================================================= +//function : MeshElement +//purpose : +//======================================================================= +SMDS_MeshElement* SMDS_MeshElementIDFactory::MeshElement(int ID) { + map::iterator it=myIDElements.find(ID); + if(it==myIDElements.end()) return NULL; else return (*it).second; } + +//======================================================================= +//function : GetFreeID +//purpose : +//======================================================================= +int SMDS_MeshElementIDFactory::GetFreeID() +{ + int ID; + do { + ID = SMDS_MeshIDFactory::GetFreeID(); + } while (myIDElements.find(ID) != myIDElements.end()); + return ID; +} + +//======================================================================= +//function : ReleaseID +//purpose : +//======================================================================= +void SMDS_MeshElementIDFactory::ReleaseID(const int ID) +{ + myIDElements.erase(ID); + SMDS_MeshIDFactory::ReleaseID(ID); +}