]> SALOME platform Git repositories - modules/kernel.git/commitdiff
Salome HOME
MPV:
authormpv <mpv@opencascade.com>
Wed, 20 Apr 2005 04:32:56 +0000 (04:32 +0000)
committermpv <mpv@opencascade.com>
Wed, 20 Apr 2005 04:32:56 +0000 (04:32 +0000)
SObject and SComponent, all Attributes, SComponentIterator, ChildIterator, UseCaseIterator and UseCaseBuilder classes now inherit GenericObj class. Thus, servants of these classes now destroyed by common CORBA algorithm (by calling Destroy method in the Client-classes destructors)

21 files changed:
idl/SALOMEDS.idl
src/SALOMEDS/Makefile.in
src/SALOMEDS/SALOMEDS_ChildIterator.cxx
src/SALOMEDS/SALOMEDS_ChildIterator_i.hxx
src/SALOMEDS/SALOMEDS_GenericAttribute.cxx
src/SALOMEDS/SALOMEDS_GenericAttribute_i.cxx
src/SALOMEDS/SALOMEDS_GenericAttribute_i.hxx
src/SALOMEDS/SALOMEDS_SComponentIterator.cxx
src/SALOMEDS/SALOMEDS_SComponentIterator_i.hxx
src/SALOMEDS/SALOMEDS_SComponent_i.cxx
src/SALOMEDS/SALOMEDS_SObject.cxx
src/SALOMEDS/SALOMEDS_SObject_i.cxx
src/SALOMEDS/SALOMEDS_SObject_i.hxx
src/SALOMEDS/SALOMEDS_StudyManager_i.cxx
src/SALOMEDS/SALOMEDS_StudyManager_i.hxx
src/SALOMEDS/SALOMEDS_Study_i.cxx
src/SALOMEDS/SALOMEDS_Study_i.hxx
src/SALOMEDS/SALOMEDS_UseCaseBuilder.cxx
src/SALOMEDS/SALOMEDS_UseCaseBuilder_i.hxx
src/SALOMEDS/SALOMEDS_UseCaseIterator.cxx
src/SALOMEDS/SALOMEDS_UseCaseIterator_i.hxx

index 4492b1d4983bd19f2c3ed9e67955732432bca3ad..7c0844a317ad6575350b7a30a44a6fbe0601b41b 100644 (file)
@@ -36,6 +36,7 @@
 #define _SALOMEDS_IDL_
 
 #include "SALOME_Exception.idl"
+#include "SALOME_GenericObj.idl"
 
 /*!
      This package contains the interfaces used for creation, managment
@@ -813,7 +814,7 @@ Gets the list of open studies
 */
   //==========================================================================
 
-  interface SObject
+  interface SObject : SALOME::GenericObj
   {
 /*! Name of the %SObject
 */
@@ -920,7 +921,7 @@ Gets the list of open studies
    %Generic attribute is a base interface for all attributes which can be assigned to the SObjects created in the study.
 */
   //==========================================================================
-  interface GenericAttribute
+  interface GenericAttribute : SALOME::GenericObj
   {
 /*! \brief Exception locking all changes
 
@@ -983,7 +984,7 @@ Gets the list of open studies
   The search is started from the first %SComponent in the list.
 */
   //==========================================================================
-  interface SComponentIterator
+  interface SComponentIterator : SALOME::GenericObj
   {
 /*!
 Activates the %SComponentIterator.
@@ -1014,7 +1015,7 @@ Moves the iterator to the next %SComponent in the list.
     levels.
 */
   //==========================================================================
-  interface ChildIterator
+  interface ChildIterator : SALOME::GenericObj
   {
 /*!
 
@@ -1049,7 +1050,7 @@ Activates the %ChildIterator for all child levels.
 
    This interface contains a set of methods used for iteration over the objects in the use case.
 */
-  interface UseCaseIterator
+  interface UseCaseIterator : SALOME::GenericObj
   {
 /*!
 Activates the %UseCaseIterator.
@@ -1078,7 +1079,7 @@ Activates the %UseCaseIterator.
    Use case in the study represents a user-managed subtree, containing all or some of the objects which exist in the study.
    The %UseCaseBuilder interface contains a set of methods used for management of the use case in the study.
 */
-  interface UseCaseBuilder
+  interface UseCaseBuilder : SALOME::GenericObj
   {
 /*!
    Adds to the use case an object as a child of the current object of the use case.
index df993d6e5799076529aa3165758a5408bd051756..4e739bd9975f17c4cc0082958a644aa11ae42fbf 100644 (file)
@@ -111,13 +111,13 @@ LIB_SRC =         \
 # Executables targets
 BIN = SALOMEDS_Server SALOMEDS_Client
 BIN_SRC = 
-LIB_SERVER_IDL = SALOMEDS.idl SALOMEDS_Attributes.idl SALOME_Exception.idl
+LIB_SERVER_IDL = SALOMEDS.idl SALOMEDS_Attributes.idl SALOME_Exception.idl SALOME_GenericObj.idl
 BIN_SERVER_IDL = SALOMEDS.idl SALOMEDS_Attributes.idl
 BIN_CLIENT_IDL = 
 
 CPPFLAGS+=$(OCC_INCLUDES) $(HDF5_INCLUDES)
 CXXFLAGS+=$(OCC_CXXFLAGS)
-LDFLAGS+= $(HDF5_LIBS) -lTOOLSDS -lSalomeNS -lSalomeHDFPersist -lOpUtil -lSALOMELocalTrace -lSalomeDSImpl $(CAS_LDPATH) -lTKCAF -lTKBO -lTKStdSchema -lSalomeGenericObj -lSalomeLifeCycleCORBA
+LDFLAGS+= $(HDF5_LIBS) -lTOOLSDS -lSalomeNS -lSalomeHDFPersist -lOpUtil -lSALOMELocalTrace -lSalomeDSImpl -lSalomeGenericObj $(CAS_LDPATH) -lTKCAF -lTKBO -lTKStdSchema -lSalomeGenericObj -lSalomeLifeCycleCORBA
 
 # _CS_gbo_090604 Ajout Spécifique Calibre 3, pour l'utilisation de la version 5.12 de la bibliothèque OCC.
 # La bibliothèque OCC5.12 a été compilée sur Calibre 3 avec l'extention Xmu (impossible de compiler sans).
index 700d790ab0616f2ddcbe33bdb030f8ab67cf7776..3bbaae06524f5c732dafc8329735aae52af10711 100644 (file)
@@ -23,7 +23,7 @@ SALOMEDS_ChildIterator::SALOMEDS_ChildIterator(SALOMEDS::ChildIterator_ptr theIt
 
 SALOMEDS_ChildIterator::~SALOMEDS_ChildIterator()
 {
-//  if(!_isLocal) CORBA::release(_corba_impl); 
+  if(!_isLocal) _corba_impl->Destroy(); 
 }
 
 void SALOMEDS_ChildIterator::Init()
index 47d5741a97ce7d2551b251b4aca15ee387372bac..0b4ae30edd061f8d0c39ac2925bb5a59bd104440 100644 (file)
 // IDL headers
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SALOMEDS)
-
-
+#include <SALOME_GenericObj_i.hh>
 
 // Cascade headers
 #include "SALOMEDSImpl_ChildIterator.hxx"
 #include <stdio.h>
 
-class SALOMEDS_ChildIterator_i: public POA_SALOMEDS::ChildIterator,
-                               public PortableServer::RefCountServantBase {
+class SALOMEDS_ChildIterator_i: public virtual POA_SALOMEDS::ChildIterator,
+                               public virtual PortableServer::RefCountServantBase,
+                               public virtual SALOME::GenericObj_i
+{
 private:
   CORBA::ORB_ptr                     _orb;
   Handle(SALOMEDSImpl_ChildIterator) _it;
index efea81cc08582dc4fa95102beccffaf08df3a26e..c9d316bff3b58fa3987ac1e1a6217a633791637f 100644 (file)
@@ -49,6 +49,9 @@ SALOMEDS_GenericAttribute::SALOMEDS_GenericAttribute(SALOMEDS::GenericAttribute_
 
 SALOMEDS_GenericAttribute::~SALOMEDS_GenericAttribute() 
 {
+  if (!_isLocal) {
+    _corba_impl->Destroy();
+  }
 }
 
 void SALOMEDS_GenericAttribute::CheckLocked() 
index 5e968a40f3df954b390899d67e2135a60469a59b..0310c4c178cec2bd624b216314463434ffe7e78f 100644 (file)
@@ -79,6 +79,7 @@ char* SALOMEDS_GenericAttribute_i::GetClassType()
 SALOMEDS::GenericAttribute_ptr SALOMEDS_GenericAttribute_i::CreateAttribute(const Handle(TDF_Attribute)& theAttr,
                                                                            CORBA::ORB_ptr theOrb) 
 {
+/*
   SALOMEDS::Locker lock;
   
   static std::map<TDF_Attribute*, SALOMEDS_GenericAttribute_i*> _mapOfAttrib;
@@ -94,6 +95,12 @@ SALOMEDS::GenericAttribute_ptr SALOMEDS_GenericAttribute_i::CreateAttribute(cons
     __CreateGenericCORBAAttribute
     _mapOfAttrib[theAttr.operator->()] = attr_servant;
   }
+*/
+  // mpv: now servants Destroyed by common algos of CORBA
+  char* aTypeOfAttribute = Handle(SALOMEDSImpl_GenericAttribute)::DownCast(theAttr)->GetClassType().ToCString();
+  SALOMEDS::GenericAttribute_var anAttribute;
+  SALOMEDS_GenericAttribute_i* attr_servant = NULL;
+  __CreateGenericCORBAAttribute
 
   return anAttribute._retn(); 
 }                                                                                                                    
index 1710831aeac429a4007d0c76975a632b0dfc9d94..9f612e96d37fe105d68a5d2c61539bef730c81e1 100644 (file)
@@ -8,12 +8,14 @@
 // IDL headers
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SALOMEDS)
+#include <SALOME_GenericObj_i.hh>
 #include <TDF_Attribute.hxx>
 #include "SALOMEDS_SObject_i.hxx"
 #include "SALOMEDSImpl_GenericAttribute.hxx"
 
-class SALOMEDS_GenericAttribute_i: public POA_SALOMEDS::GenericAttribute,
-                                  public PortableServer::RefCountServantBase 
+class SALOMEDS_GenericAttribute_i: public virtual POA_SALOMEDS::GenericAttribute,
+                                  public virtual PortableServer::RefCountServantBase,
+                                  public virtual SALOME::GenericObj_i
 {
 
 protected:
index 7eda2287f369338c16c7bef9aaa425d1110049c0..35fb46d331c3d22b3b43f101eb4058b602426d8f 100644 (file)
@@ -21,7 +21,7 @@ SALOMEDS_SComponentIterator::SALOMEDS_SComponentIterator(SALOMEDS::SComponentIte
 
 SALOMEDS_SComponentIterator::~SALOMEDS_SComponentIterator()
 {
-  //if(!_isLocal) CORBA::release(_corba_impl); 
+  if(!_isLocal) _corba_impl->Destroy(); 
 }
 
 void SALOMEDS_SComponentIterator::Init()
index 740fba5bc9baf74e66bcc736b49ca48efbc5c656..8bea4d1dec51303b356ced796bf464a362509375 100644 (file)
 // IDL headers
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SALOMEDS)
+#include <SALOME_GenericObj_i.hh>
 
 //SALOMEDS headers
 #include "SALOMEDS_SComponent_i.hxx"
 #include "SALOMEDSImpl_SComponentIterator.hxx"
 
-class SALOMEDS_SComponentIterator_i:public POA_SALOMEDS::SComponentIterator,
-                                   public PortableServer::RefCountServantBase 
+class SALOMEDS_SComponentIterator_i:public virtual POA_SALOMEDS::SComponentIterator,
+                                   public virtual PortableServer::RefCountServantBase,
+                                   public virtual SALOME::GenericObj_i 
 {
 
 private:
index 76b7153f3cd8e2470ae25601285d097e1fd0e611..718864a0d10f7407b438a64bf724157cfca81f55 100644 (file)
@@ -10,6 +10,7 @@ using namespace std;
 
 SALOMEDS::SComponent_ptr SALOMEDS_SComponent_i::New(const Handle(SALOMEDSImpl_SComponent)& theImpl, CORBA::ORB_ptr theORB)
 {
+/*
   static std::map<SALOMEDSImpl_SComponent*, SALOMEDS_SComponent_i*> _mapOfSCO;
   SALOMEDS::SComponent_var sco;
   SALOMEDS_SComponent_i* sco_servant = NULL;
@@ -23,6 +24,9 @@ SALOMEDS::SComponent_ptr SALOMEDS_SComponent_i::New(const Handle(SALOMEDSImpl_SC
   }
 
   sco  = SALOMEDS::SComponent::_narrow(sco_servant->SComponent::_this()); 
+*/
+  SALOMEDS_SComponent_i* sco_servant = new SALOMEDS_SComponent_i(theImpl, theORB);
+  SALOMEDS::SComponent_var sco  = SALOMEDS::SComponent::_narrow(sco_servant->SComponent::_this()); 
 
   return sco._retn();
 }    
index 1ba9a99482481ed5c16fb40a398a45c8a9f17c66..4031fc027764ab7b60b4a35bf7e95e038bf39963 100644 (file)
@@ -60,6 +60,9 @@ SALOMEDS_SObject::SALOMEDS_SObject(const Handle(SALOMEDSImpl_SObject)& theSObjec
 
 SALOMEDS_SObject::~SALOMEDS_SObject()
 {
+  if (!_isLocal) {
+    _corba_impl->Destroy();
+  }
 }
 
 std::string SALOMEDS_SObject::GetID()
index 6954cd43703df8df2d8010d2897ee59946f93bcb..d3df946d82dc0c3e10d481b94047850676938a2e 100644 (file)
@@ -8,6 +8,7 @@ using namespace std;
 #include "SALOMEDS_SObject_i.hxx"
 #include "SALOMEDS_SComponent_i.hxx"
 #include "SALOMEDS_GenericAttribute_i.hxx"
+#include "SALOMEDS_StudyManager_i.hxx"
 #include "SALOMEDS.hxx"
 #include "SALOMEDSImpl_GenericAttribute.hxx"
 #include "SALOMEDSImpl_SComponent.hxx"
@@ -31,21 +32,10 @@ using namespace std;
 
 SALOMEDS::SObject_ptr SALOMEDS_SObject_i::New(const Handle(SALOMEDSImpl_SObject)& theImpl, CORBA::ORB_ptr theORB)
 {
-  static std::map<SALOMEDSImpl_SObject*, SALOMEDS_SObject_i*> _mapOfSO;
-  SALOMEDS::SObject_var so;
-  SALOMEDS_SObject_i* so_servant = NULL;
+  SALOMEDS_SObject_i* so_servant = new SALOMEDS_SObject_i(theImpl, theORB);
+  SALOMEDS::SObject_var so  = SALOMEDS::SObject::_narrow(so_servant->_this()); 
 
-  if(_mapOfSO.find(theImpl.operator->()) != _mapOfSO.end()) {
-    so_servant = _mapOfSO[theImpl.operator->()];
-  }
-  else {
-    so_servant = new SALOMEDS_SObject_i(theImpl, theORB);
-    _mapOfSO[theImpl.operator->()] = so_servant;
-  }
-
-  so  = SALOMEDS::SObject::_narrow(so_servant->_this()); 
-
-  return so._retn();
+  return so;
 }     
 
 
@@ -55,9 +45,10 @@ SALOMEDS::SObject_ptr SALOMEDS_SObject_i::New(const Handle(SALOMEDSImpl_SObject)
  */
 //============================================================================
 SALOMEDS_SObject_i::SALOMEDS_SObject_i(const Handle(SALOMEDSImpl_SObject)& impl, CORBA::ORB_ptr orb)
-  :_impl(impl)
+  : _impl(impl)
 {
   _orb = CORBA::ORB::_duplicate(orb);
+   //SALOME::GenericObj_i::myPOA = SALOMEDS_StudyManager_i::GetPOA(GetStudy());
 }
   
 
index 2027c236f7ff3bbd2af2628f74939b337961b061..81ddcc1f2fd492a5c4e181075307103b5329cd6e 100644 (file)
 // IDL headers
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SALOMEDS)
+#include <SALOME_GenericObj_i.hh>
 
 // Cascade headers
 #include "SALOMEDSImpl_SObject.hxx"
 
-class SALOMEDS_SObject_i: public POA_SALOMEDS::SObject,
-                         public PortableServer::RefCountServantBase {
+class SALOMEDS_SObject_i: public virtual POA_SALOMEDS::SObject,
+                         public virtual PortableServer::RefCountServantBase,
+                         public virtual SALOME::GenericObj_i
+{
 protected:
   CORBA::ORB_ptr                _orb;
   Handle(SALOMEDSImpl_SObject)  _impl;
index 0837f607e028f09a94ea70626ed6ff7cac28eac9..8894e77a1d40a75aad553c7ab9983c627ae2acd7 100644 (file)
@@ -22,6 +22,7 @@
 #include "Utils_CorbaException.hxx"
 
 #include <strstream>
+#include <map>
 using namespace std;
 
 #ifdef WIN32
@@ -42,6 +43,7 @@ UNEXPECT_CATCH(LockProtection, SALOMEDS::StudyBuilder::LockProtection);
 
 static SALOMEDS_Driver_i* GetDriver(const Handle(SALOMEDSImpl_SObject)& theObject, CORBA::ORB_ptr orb);
 
+static std::map<int, PortableServer::POA_ptr> _mapOfPOA;
 
 //============================================================================
 /*! Function : SALOMEDS_StudyManager_i
@@ -116,6 +118,9 @@ SALOMEDS::Study_ptr SALOMEDS_StudyManager_i::NewStudy(const char* study_name)
   const char*  IORStudy = _orb->object_to_string(Study);
 
   aStudyImpl->SetTransientReference((char*)IORStudy);
+
+  _mapOfPOA[Study->StudyId()] = _poa;
+
   return Study;
 }
 
@@ -422,6 +427,12 @@ SALOMEDS_Driver_i* GetDriver(const Handle(SALOMEDSImpl_SObject)& theObject, CORB
 
   return driver;
 }
+
+PortableServer::POA_ptr SALOMEDS_StudyManager_i::GetPOA(const SALOMEDS::Study_ptr theStudy) {
+  if (_mapOfPOA.find(theStudy->StudyId()) != _mapOfPOA.end()) return _mapOfPOA[theStudy->StudyId()];
+  return PortableServer::POA::_nil();
+}
+
 //===========================================================================
 //   PRIVATE FUNCTIONS
 //===========================================================================
index e057cb7ca09d02c86569ade13b30120f50dc7974..86db79708d28b7762e2bd210fa2b2015ada60469 100644 (file)
@@ -125,6 +125,8 @@ public:
   void ping(){};
 
   virtual long GetLocalImpl(const char* theHostname, CORBA::Long thePID, CORBA::Boolean& isLocal);
+
+  static PortableServer::POA_ptr GetPOA(const SALOMEDS::Study_ptr theStudy);
 };
 
 #endif 
index c8ea13db5f3edec5956c1a41ba2565f63da474a4..56c87fc3e081ff82be181e31fc66a6a887c799df 100644 (file)
@@ -47,9 +47,7 @@ SALOMEDS_Study_i::SALOMEDS_Study_i(const Handle(SALOMEDSImpl_Study) theImpl,
   _orb = CORBA::ORB::_duplicate(orb);
   _impl = theImpl;
 
-  _useCaseBuilder = new SALOMEDS_UseCaseBuilder_i(_impl->GetUseCaseBuilder(), _orb);
   _builder = new SALOMEDS_StudyBuilder_i(_impl->NewBuilder(), _orb);  
-  _it = new SALOMEDS_SComponentIterator_i(_impl->NewComponentIterator(), _orb);
 }
   
 //============================================================================
@@ -398,6 +396,7 @@ SALOMEDS::ChildIterator_ptr SALOMEDS_Study_i::NewChildIterator(SALOMEDS::SObject
 SALOMEDS::SComponentIterator_ptr SALOMEDS_Study_i::NewComponentIterator()
 {
   SALOMEDS::Locker lock; 
+  SALOMEDS_SComponentIterator_i* _it = new SALOMEDS_SComponentIterator_i(_impl->NewComponentIterator(), _orb);
   _it->Init();
   return _it->_this();
 }
@@ -587,7 +586,8 @@ SALOMEDS::ListOfDates* SALOMEDS_Study_i::GetModificationsDate()
 SALOMEDS::UseCaseBuilder_ptr SALOMEDS_Study_i::GetUseCaseBuilder() 
 {
   SALOMEDS::Locker lock; 
-  return _useCaseBuilder->_this();
+  SALOMEDS_UseCaseBuilder_i* UCBuilder = new SALOMEDS_UseCaseBuilder_i(_impl->GetUseCaseBuilder(), _orb);
+  return UCBuilder->_this();
 }
 
 
index 7800eae18467678cae17269b18d9b43cc8fa840c..d559ca852a65caa9be189e83bbb67544f6e0ae64 100644 (file)
@@ -31,8 +31,6 @@ private:
   CORBA::ORB_ptr                 _orb;
   Handle(SALOMEDSImpl_Study)     _impl;  
   SALOMEDS_StudyBuilder_i*       _builder;    
-  SALOMEDS_UseCaseBuilder_i*     _useCaseBuilder;
-  SALOMEDS_SComponentIterator_i* _it;
 
 public:
 
index 1fd9c68a8dc877547999849a0b777a73d52496cc..f0b10efd913f6ce32920726bd38adba4f2eab102 100644 (file)
@@ -29,7 +29,7 @@ SALOMEDS_UseCaseBuilder::SALOMEDS_UseCaseBuilder(SALOMEDS::UseCaseBuilder_ptr th
 
 SALOMEDS_UseCaseBuilder::~SALOMEDS_UseCaseBuilder()
 {
-  //if(!_isLocal) CORBA::release(_corba_impl); 
+  if(!_isLocal) _corba_impl->Destroy(); 
 }  
 
 bool SALOMEDS_UseCaseBuilder::Append(SALOMEDSClient_SObject* theObject)
index cb99539bd3abd3de412584d0d7ac270232c87c64..f9cea5bb8f2351a326378dc85df446083d8e44a2 100644 (file)
@@ -12,6 +12,7 @@
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SALOMEDS)
 #include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
+#include <SALOME_GenericObj_i.hh>
 
 // Cascade headers
 #include <Standard_GUID.hxx>
@@ -20,8 +21,9 @@
 #include "SALOMEDSImpl_UseCaseIterator.hxx"
 #include "SALOMEDSImpl_UseCaseBuilder.hxx"
 
-class SALOMEDS_UseCaseBuilder_i: public POA_SALOMEDS::UseCaseBuilder,
-                                public PortableServer::RefCountServantBase 
+class SALOMEDS_UseCaseBuilder_i: public virtual POA_SALOMEDS::UseCaseBuilder,
+                                public virtual PortableServer::RefCountServantBase,
+                                public virtual SALOME::GenericObj_i
 {
 private:
 
index 9761fce74ef358e02a1ed616daf55df105fbdaf3..293f34fbc330fffc0ecb32604e532b2e32729b69 100644 (file)
@@ -23,7 +23,7 @@ SALOMEDS_UseCaseIterator::SALOMEDS_UseCaseIterator(SALOMEDS::UseCaseIterator_ptr
 
 SALOMEDS_UseCaseIterator::~SALOMEDS_UseCaseIterator()
 {
-  //if(!_isLocal) CORBA::release(_corba_impl);    
+  if(!_isLocal) _corba_impl->Destroy();    
 }
 
 void SALOMEDS_UseCaseIterator::Init(bool theAllLevels)
index aee6cb52e752cd5e05fe246caf5433b576107a45..132db2ac0d540406fb57c8c565f7224cc9ca2bab 100644 (file)
 // IDL headers
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SALOMEDS)
+#include <SALOME_GenericObj_i.hh>
 
 #include "SALOMEDSImpl_UseCaseIterator.hxx"
 
-class SALOMEDS_UseCaseIterator_i: public POA_SALOMEDS::UseCaseIterator,
-                                 public PortableServer::RefCountServantBase 
+class SALOMEDS_UseCaseIterator_i: public virtual POA_SALOMEDS::UseCaseIterator,
+                                 public virtual PortableServer::RefCountServantBase, 
+                                 public virtual SALOME::GenericObj_i
 {
 private:
   CORBA::ORB_ptr                        _orb;