00001 #include "tao/Valuetype/ValueFactory.h" 00002 #include "ace/Guard_T.h" 00003 00004 ACE_RCSID (Valuetype, 00005 ValueFactory, 00006 "$Id: ValueFactory.cpp 76932 2007-02-06 16:34:57Z johnnyw $") 00007 00008 TAO_BEGIN_VERSIONED_NAMESPACE_DECL 00009 00010 // Static operations in namespace CORBA. 00011 00012 void 00013 CORBA::add_ref (CORBA::ValueFactoryBase *val) 00014 { 00015 if (val) 00016 { 00017 val->_add_ref (); 00018 } 00019 } 00020 00021 void 00022 CORBA::remove_ref (CORBA::ValueFactoryBase *val) 00023 { 00024 if (val) 00025 { 00026 val->_remove_ref (); 00027 } 00028 } 00029 00030 // =========================================================== 00031 00032 CORBA::ValueFactoryBase::ValueFactoryBase (void) 00033 : _tao_reference_count_ (1) 00034 { 00035 } 00036 00037 CORBA::ValueFactoryBase::~ValueFactoryBase (void) 00038 { 00039 } 00040 00041 void 00042 CORBA::ValueFactoryBase::_add_ref (void) 00043 { 00044 ++this->_tao_reference_count_; 00045 } 00046 00047 void 00048 CORBA::ValueFactoryBase::_remove_ref (void) 00049 { 00050 CORBA::ULong const new_count = --this->_tao_reference_count_; 00051 00052 if (new_count == 0) 00053 delete this; 00054 } 00055 00056 // No-op. This should never be called, but it can't be pure virtual. 00057 CORBA::AbstractBase * 00058 CORBA::ValueFactoryBase::create_for_unmarshal_abstract (void) 00059 { 00060 return 0; 00061 } 00062 00063 // =============== Template Specializations ===================== 00064 namespace TAO 00065 { 00066 using namespace CORBA; 00067 00068 void 00069 Value_Traits<ValueFactoryBase>::add_ref (ValueFactoryBase *p) 00070 { 00071 CORBA::add_ref (p); 00072 } 00073 00074 void 00075 Value_Traits<ValueFactoryBase>::remove_ref (ValueFactoryBase * p) 00076 { 00077 CORBA::remove_ref (p); 00078 } 00079 00080 void 00081 Value_Traits<ValueFactoryBase>::release (ValueFactoryBase * p) 00082 { 00083 CORBA::remove_ref (p); 00084 } 00085 } 00086 00087 TAO_END_VERSIONED_NAMESPACE_DECL