X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FGenericObj%2FSALOME_GenericObj_i.cc;h=0d302636e22963ccfe4f82b334a6116b61336395;hb=e83c49c22e04a5719890de53f54160295864f900;hp=bee7e62cff4143e3c1e66b0d0ebf8113e55c5ab5;hpb=7d2fe213bdf5bf962ce11e253020c9d3e0bc1cce;p=modules%2Fkernel.git diff --git a/src/GenericObj/SALOME_GenericObj_i.cc b/src/GenericObj/SALOME_GenericObj_i.cc index bee7e62cf..0d302636e 100644 --- a/src/GenericObj/SALOME_GenericObj_i.cc +++ b/src/GenericObj/SALOME_GenericObj_i.cc @@ -1,74 +1,153 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2020 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 +// 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 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, or (at your option) any later version. // -// 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. +// 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 +// 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SALOME_GenericObj_i_CC + // 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" +#include +#include + +// note: in KERNEL _DEBUG_ is not defined by default #ifdef _DEBUG_ static int MYDEBUG = 0; #else static int MYDEBUG = 0; #endif -using namespace SALOME; -using namespace std; +//#define IS_OBJ_IN_QUESTION(where) is_obj_in_question(this, myRefCounter, where) +#define IS_OBJ_IN_QUESTION(where) + +namespace SALOME +{ + void is_obj_in_question( const GenericObj_i* o, int myRefCounter,const char* where) + { + if ( std::string( typeid(*o).name() ).find("SALOMEDS") != std::string::npos ) + return; + // if ( std::string( typeid(*o).name() ).find("SMESH_") != std::string::npos || + // std::string( typeid(*o).name() ).find("StdMesher") != std::string::npos ) + { + std::cout<< typeid(*o).name() << " " << o << " " << where << " myRefCounter ==> " << 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. -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