00001 // $Id: Valuetype_Adapter_Impl.cpp 78091 2007-04-18 10:42:05Z ir $ 00002 00003 #include "tao/Valuetype/Valuetype_Adapter_Impl.h" 00004 #include "tao/Valuetype/AbstractBase.h" 00005 #include "tao/Valuetype/ValueBase.h" 00006 #include "tao/Valuetype/ValueFactory_Map.h" 00007 #include "tao/Valuetype/ValueFactory.h" 00008 00009 #include "tao/ORB_Core.h" 00010 00011 00012 ACE_RCSID (Valuetype, 00013 Valuetype_Adapter_Impl, 00014 "$Id: Valuetype_Adapter_Impl.cpp 78091 2007-04-18 10:42:05Z ir $") 00015 00016 TAO_BEGIN_VERSIONED_NAMESPACE_DECL 00017 00018 TAO_Valuetype_Adapter_Impl::~TAO_Valuetype_Adapter_Impl (void) 00019 { 00020 } 00021 00022 CORBA::Object_ptr 00023 TAO_Valuetype_Adapter_Impl::abstractbase_to_object ( 00024 CORBA::AbstractBase_ptr p 00025 ) 00026 { 00027 return p->_to_object (); 00028 } 00029 00030 CORBA::Boolean 00031 TAO_Valuetype_Adapter_Impl::stream_to_value (TAO_InputCDR &cdr, 00032 CORBA::ValueBase *& val) 00033 { 00034 return cdr >> val; 00035 } 00036 00037 CORBA::Boolean 00038 TAO_Valuetype_Adapter_Impl::stream_to_abstract_base ( 00039 TAO_InputCDR &cdr, 00040 CORBA::AbstractBase_ptr & obj 00041 ) 00042 { 00043 return cdr >> obj; 00044 } 00045 00046 CORBA::Long 00047 TAO_Valuetype_Adapter_Impl::type_info_single (void) const 00048 { 00049 return TAO_OBV_GIOP_Flags::Type_info_single; 00050 } 00051 00052 CORBA::Boolean 00053 TAO_Valuetype_Adapter_Impl::is_type_info_implied (CORBA::Long vt) const 00054 { 00055 return vt == TAO_OBV_GIOP_Flags::Value_tag_base; 00056 } 00057 00058 CORBA::Boolean 00059 TAO_Valuetype_Adapter_Impl::is_type_info_single (CORBA::Long vt) const 00060 { 00061 return ((vt | TAO_OBV_GIOP_Flags::Type_info_single) == vt) && 00062 ((vt | TAO_OBV_GIOP_Flags::Type_info_list) != vt); 00063 } 00064 00065 CORBA::Boolean 00066 TAO_Valuetype_Adapter_Impl::is_type_info_list (CORBA::Long vt) const 00067 { 00068 return (vt | TAO_OBV_GIOP_Flags::Type_info_list) == vt; 00069 } 00070 00071 CORBA::Boolean 00072 TAO_Valuetype_Adapter_Impl::is_value_chunked (CORBA::Long vt) const 00073 { 00074 return (vt | TAO_OBV_GIOP_Flags::Chunking_tag_sigbits) == vt; 00075 } 00076 00077 int 00078 TAO_Valuetype_Adapter_Impl::vf_map_rebind (const char *repo_id, 00079 CORBA::ValueFactory &factory) 00080 { 00081 return map_.rebind (repo_id, factory); 00082 } 00083 00084 int 00085 TAO_Valuetype_Adapter_Impl::vf_map_unbind (const char *repo_id) 00086 00087 { 00088 CORBA::ValueFactory factory = 0; 00089 int result = map_.unbind (repo_id, factory); 00090 if (! result) 00091 { 00092 factory->_remove_ref (); 00093 } 00094 00095 return result; 00096 } 00097 00098 CORBA::ValueFactory 00099 TAO_Valuetype_Adapter_Impl::vf_map_find (const char *repo_id) 00100 { 00101 CORBA::ValueFactory factory = 0; 00102 (void) map_.find (repo_id, factory); 00103 return factory; 00104 } 00105 00106 TAO_END_VERSIONED_NAMESPACE_DECL