X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2FGenericObj%2FSALOME_GenericObj_i.cc;h=e828acebe907fd30241fe6c7df90702bf6daec50;hb=83f6420d3682a53ec22b946b95c037e83a05ca59;hp=f0fdad6e0b22160b0431fa2671e536d27a9c2f1f;hpb=1f742af859d50d34c63f9dc02f9a705089bf060e;p=modules%2Fkernel.git diff --git a/src/GenericObj/SALOME_GenericObj_i.cc b/src/GenericObj/SALOME_GenericObj_i.cc index f0fdad6e0..e828acebe 100644 --- a/src/GenericObj/SALOME_GenericObj_i.cc +++ b/src/GenericObj/SALOME_GenericObj_i.cc @@ -1,61 +1,150 @@ -// SALOME_GenericObj_i_CC +// Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE // -// 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 +// Copyright (C) 2003-2007 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + // File : SALOME_GenericObj_i.cc -// Author : Alexey PETROV -// Module : SALOME +// Author : Alexey PETROV, Open CASCADE S.A.S. (alexey.petrov@opencascade.com) #include "SALOME_GenericObj_i.hh" #include "utilities.h" -using namespace SALOME; +#include +#include -GenericObj_i::GenericObj_i(PortableServer::POA_ptr thePOA): myRefCounter(1){ - MESSAGE("GenericObj_i::GenericObj_i() - this = "< " << myRefCounter; + if ( myRefCounter == 0 ) std::cout << " DELETE !"; + std::cout << std::endl; + } + } + /*! + \class SALOME::GenericObj_i + \brief Implementation of the base servant for SALOME objects with reference counter. + + This class can be used to implement data entities with life-cycle management based on + the reference counting. + + The object is initially created with the reference counter equal to 1. + The function Register() can be used to incrfement the reference counter. + Function UnRegister() should be used to decrement reference counter. + As soon as reference counter goes to zero, the object is automatically deactivated in POA + (and, eventually its destructor is automatically called). + */ + + /*! + \brief Constructor. + Creates an object with the reference counter initially set to 1. + + The default POA for the servant can be passed as a parameter \a thePOA. + By default, root POA is used. + + \param thePOA optional default POA for the servant + */ + GenericObj_i::GenericObj_i(PortableServer::POA_ptr thePOA): myRefCounter(1) + { + if(MYDEBUG) + MESSAGE("GenericObj_i::GenericObj_i() - this = "<servant_to_id(this); + myPOA->deactivate_object(anObjectId.in()); + _remove_ref(); + } + } + + /*! + \brief Decrement reference counter. + \deprecated Use UnRegister() instead. + */ + void GenericObj_i::Destroy() + { + MESSAGE("WARNING SALOME::GenericObj::Destroy() function is obsolete! Use UnRegister() instead."); + UnRegister(); + } + +}; // end of namespace SALOME