#include <Marshal.h>
Inheritance diagram for TAO_Marshal_Object:
Public Member Functions | |
TAO_Marshal_Object (void) | |
constructor | |
virtual | ~TAO_Marshal_Object (void) |
destructor | |
virtual TAO::traverse_status | skip (CORBA::TypeCode_ptr tc, TAO_InputCDR *context)=0 |
skip operation | |
virtual TAO::traverse_status | append (CORBA::TypeCode_ptr tc, TAO_InputCDR *src, TAO_OutputCDR *dest)=0 |
append operation | |
Static Public Member Functions | |
static TAO::traverse_status | perform_skip (CORBA::TypeCode_ptr tc, TAO_InputCDR *context) |
static TAO::traverse_status | perform_append (CORBA::TypeCode_ptr tc, TAO_InputCDR *src, TAO_OutputCDR *dest) |
The Marshaling object that provides a common interface to the CDR object for marshaling different IDL data types Provides a set of virtual methods for appending and skipping data over a CDR stream.
Definition at line 77 of file Marshal.h.
TAO_BEGIN_VERSIONED_NAMESPACE_DECL ACE_INLINE TAO_Marshal_Object::TAO_Marshal_Object | ( | void | ) |
TAO_BEGIN_VERSIONED_NAMESPACE_DECL TAO_Marshal_Object::~TAO_Marshal_Object | ( | void | ) | [virtual] |
virtual TAO::traverse_status TAO_Marshal_Object::append | ( | CORBA::TypeCode_ptr | tc, | |
TAO_InputCDR * | src, | |||
TAO_OutputCDR * | dest | |||
) | [pure virtual] |
append operation
Implemented in TAO_Marshal_Primitive, TAO_Marshal_Any, TAO_Marshal_TypeCode, TAO_Marshal_Principal, TAO_Marshal_ObjRef, TAO_Marshal_Struct, TAO_Marshal_Union, TAO_Marshal_String, TAO_Marshal_Sequence, TAO_Marshal_Array, TAO_Marshal_Alias, TAO_Marshal_Except, TAO_Marshal_WString, and TAO_Marshal_Value.
TAO::traverse_status TAO_Marshal_Object::perform_append | ( | CORBA::TypeCode_ptr | tc, | |
TAO_InputCDR * | src, | |||
TAO_OutputCDR * | dest | |||
) | [static] |
append entry point, it allocates the right kind of Marshal_Object and invokes skip on it.
Definition at line 142 of file Marshal.cpp.
References TAO_Marshal_Value::append(), TAO_Marshal_WString::append(), TAO_Marshal_Except::append(), TAO_Marshal_Alias::append(), TAO_Marshal_Array::append(), TAO_Marshal_Sequence::append(), TAO_Marshal_String::append(), TAO_Marshal_Union::append(), TAO_Marshal_Struct::append(), TAO_Marshal_ObjRef::append(), TAO_Marshal_Principal::append(), TAO_Marshal_TypeCode::append(), TAO_Marshal_Any::append(), TAO_Marshal_Primitive::append(), CORBA::TypeCode::kind(), CORBA::tk_abstract_interface, CORBA::tk_alias, CORBA::tk_any, CORBA::tk_array, CORBA::tk_boolean, CORBA::tk_char, CORBA::tk_component, CORBA::tk_double, CORBA::tk_enum, CORBA::tk_event, CORBA::tk_except, CORBA::tk_fixed, CORBA::tk_float, CORBA::tk_home, CORBA::tk_long, CORBA::tk_longdouble, CORBA::tk_longlong, CORBA::tk_native, CORBA::tk_null, CORBA::tk_objref, CORBA::tk_octet, CORBA::tk_Principal, CORBA::tk_sequence, CORBA::tk_short, CORBA::tk_string, CORBA::tk_struct, CORBA::tk_TypeCode, CORBA::tk_ulong, CORBA::tk_ulonglong, CORBA::tk_union, CORBA::tk_ushort, CORBA::tk_value, CORBA::tk_value_box, CORBA::tk_void, CORBA::tk_wchar, and CORBA::tk_wstring.
Referenced by CORBA::NVList::_tao_encode(), TAO_Marshal_Value::append(), TAO_Marshal_Except::append(), TAO_Marshal_Alias::append(), TAO_Marshal_Array::append(), TAO_Marshal_Sequence::append(), TAO_Marshal_Union::append(), TAO_Marshal_Struct::append(), TAO_Marshal_Principal::append(), TAO_Marshal_TypeCode::append(), TAO_Marshal_Any::append(), and TAO::Unknown_IDL_Type::marshal_value().
00145 { 00146 CORBA::ULong kind = tc->kind (); 00147 00148 switch (kind) 00149 { 00150 default: 00151 case CORBA::tk_fixed: 00152 case CORBA::tk_native: 00153 case CORBA::tk_abstract_interface: 00154 case CORBA::tk_component: 00155 case CORBA::tk_home: 00156 // @@ We don't know how to handle any of them yet. 00157 return TAO::TRAVERSE_STOP; 00158 00159 case CORBA::tk_null: 00160 case CORBA::tk_void: 00161 case CORBA::tk_short: 00162 case CORBA::tk_long: 00163 case CORBA::tk_ushort: 00164 case CORBA::tk_ulong: 00165 case CORBA::tk_float: 00166 case CORBA::tk_double: 00167 case CORBA::tk_boolean: 00168 case CORBA::tk_char: 00169 case CORBA::tk_octet: 00170 case CORBA::tk_longlong: 00171 case CORBA::tk_ulonglong: 00172 case CORBA::tk_longdouble: 00173 case CORBA::tk_wchar: 00174 case CORBA::tk_enum: 00175 { 00176 TAO_Marshal_Primitive marshal; 00177 return marshal.append (tc, src, dest); 00178 } 00179 00180 case CORBA::tk_any: 00181 { 00182 TAO_Marshal_Any marshal; 00183 return marshal.append (tc, src, dest); 00184 } 00185 case CORBA::tk_TypeCode: 00186 { 00187 TAO_Marshal_TypeCode marshal; 00188 return marshal.append (tc, src, dest); 00189 } 00190 case CORBA::tk_Principal: 00191 { 00192 TAO_Marshal_Principal marshal; 00193 return marshal.append (tc, src, dest); 00194 } 00195 case CORBA::tk_objref: 00196 { 00197 TAO_Marshal_ObjRef marshal; 00198 return marshal.append (tc, src, dest); 00199 } 00200 case CORBA::tk_struct: 00201 { 00202 TAO_Marshal_Struct marshal; 00203 return marshal.append (tc, src, dest); 00204 } 00205 case CORBA::tk_union: 00206 { 00207 TAO_Marshal_Union marshal; 00208 return marshal.append (tc, src, dest); 00209 } 00210 case CORBA::tk_string: 00211 { 00212 TAO_Marshal_String marshal; 00213 return marshal.append (tc, src, dest); 00214 } 00215 case CORBA::tk_sequence: 00216 { 00217 TAO_Marshal_Sequence marshal; 00218 return marshal.append (tc, src, dest); 00219 } 00220 case CORBA::tk_array: 00221 { 00222 TAO_Marshal_Array marshal; 00223 return marshal.append (tc, src, dest); 00224 } 00225 case CORBA::tk_alias: 00226 { 00227 TAO_Marshal_Alias marshal; 00228 return marshal.append (tc, src, dest); 00229 } 00230 case CORBA::tk_except: 00231 { 00232 TAO_Marshal_Except marshal; 00233 return marshal.append (tc, src, dest); 00234 } 00235 case CORBA::tk_wstring: 00236 { 00237 TAO_Marshal_WString marshal; 00238 return marshal.append (tc, src, dest); 00239 } 00240 case CORBA::tk_value_box: 00241 case CORBA::tk_value: 00242 case CORBA::tk_event: 00243 { 00244 TAO_Marshal_Value marshal; 00245 return marshal.append (tc, src, dest); 00246 } 00247 } 00248 }
TAO::traverse_status TAO_Marshal_Object::perform_skip | ( | CORBA::TypeCode_ptr | tc, | |
TAO_InputCDR * | context | |||
) | [static] |
skip entry point, it allocates the right kind of Marshal_Object and invokes skip on it.
Definition at line 35 of file Marshal.cpp.
References CORBA::TypeCode::kind(), TAO_Marshal_Value::skip(), TAO_Marshal_WString::skip(), TAO_Marshal_Except::skip(), TAO_Marshal_Alias::skip(), TAO_Marshal_Array::skip(), TAO_Marshal_Sequence::skip(), TAO_Marshal_String::skip(), TAO_Marshal_Union::skip(), TAO_Marshal_Struct::skip(), TAO_Marshal_ObjRef::skip(), TAO_Marshal_Principal::skip(), TAO_Marshal_TypeCode::skip(), TAO_Marshal_Any::skip(), TAO_Marshal_Primitive::skip(), CORBA::tk_abstract_interface, CORBA::tk_alias, CORBA::tk_any, CORBA::tk_array, CORBA::tk_boolean, CORBA::tk_char, CORBA::tk_component, CORBA::tk_double, CORBA::tk_enum, CORBA::tk_event, CORBA::tk_except, CORBA::tk_fixed, CORBA::tk_float, CORBA::tk_home, CORBA::tk_long, CORBA::tk_longdouble, CORBA::tk_longlong, CORBA::tk_native, CORBA::tk_null, CORBA::tk_objref, CORBA::tk_octet, CORBA::tk_Principal, CORBA::tk_sequence, CORBA::tk_short, CORBA::tk_string, CORBA::tk_struct, CORBA::tk_TypeCode, CORBA::tk_ulong, CORBA::tk_ulonglong, CORBA::tk_union, CORBA::tk_ushort, CORBA::tk_value, CORBA::tk_value_box, CORBA::tk_void, CORBA::tk_wchar, and CORBA::tk_wstring.
Referenced by TAO::Unknown_IDL_Type::_tao_decode(), TAO_Marshal_Value::skip(), TAO_Marshal_Except::skip(), TAO_Marshal_Alias::skip(), TAO_Marshal_Array::skip(), TAO_Marshal_Sequence::skip(), TAO_Marshal_Union::skip(), TAO_Marshal_Struct::skip(), and TAO_Marshal_Any::skip().
00036 { 00037 CORBA::ULong const kind = tc->kind (); 00038 00039 switch (kind) 00040 { 00041 default: 00042 case CORBA::tk_fixed: 00043 case CORBA::tk_native: 00044 case CORBA::tk_abstract_interface: 00045 case CORBA::tk_component: 00046 case CORBA::tk_home: 00047 // @@ We don't know how to handle any of them yet. 00048 return TAO::TRAVERSE_STOP; 00049 00050 case CORBA::tk_null: 00051 case CORBA::tk_void: 00052 case CORBA::tk_short: 00053 case CORBA::tk_long: 00054 case CORBA::tk_ushort: 00055 case CORBA::tk_ulong: 00056 case CORBA::tk_float: 00057 case CORBA::tk_double: 00058 case CORBA::tk_boolean: 00059 case CORBA::tk_char: 00060 case CORBA::tk_octet: 00061 case CORBA::tk_longlong: 00062 case CORBA::tk_ulonglong: 00063 case CORBA::tk_longdouble: 00064 case CORBA::tk_wchar: 00065 case CORBA::tk_enum: 00066 { 00067 TAO_Marshal_Primitive marshal; 00068 return marshal.skip (tc, stream); 00069 } 00070 00071 case CORBA::tk_any: 00072 { 00073 TAO_Marshal_Any marshal; 00074 return marshal.skip (tc, stream); 00075 } 00076 case CORBA::tk_TypeCode: 00077 { 00078 TAO_Marshal_TypeCode marshal; 00079 return marshal.skip (tc, stream); 00080 } 00081 case CORBA::tk_Principal: 00082 { 00083 TAO_Marshal_Principal marshal; 00084 return marshal.skip (tc, stream); 00085 } 00086 case CORBA::tk_objref: 00087 { 00088 TAO_Marshal_ObjRef marshal; 00089 return marshal.skip (tc, stream); 00090 } 00091 case CORBA::tk_struct: 00092 { 00093 TAO_Marshal_Struct marshal; 00094 return marshal.skip (tc, stream); 00095 } 00096 case CORBA::tk_union: 00097 { 00098 TAO_Marshal_Union marshal; 00099 return marshal.skip (tc, stream); 00100 } 00101 case CORBA::tk_string: 00102 { 00103 TAO_Marshal_String marshal; 00104 return marshal.skip (tc, stream); 00105 } 00106 case CORBA::tk_sequence: 00107 { 00108 TAO_Marshal_Sequence marshal; 00109 return marshal.skip (tc, stream); 00110 } 00111 case CORBA::tk_array: 00112 { 00113 TAO_Marshal_Array marshal; 00114 return marshal.skip (tc, stream); 00115 } 00116 case CORBA::tk_alias: 00117 { 00118 TAO_Marshal_Alias marshal; 00119 return marshal.skip (tc, stream); 00120 } 00121 case CORBA::tk_except: 00122 { 00123 TAO_Marshal_Except marshal; 00124 return marshal.skip (tc, stream); 00125 } 00126 case CORBA::tk_wstring: 00127 { 00128 TAO_Marshal_WString marshal; 00129 return marshal.skip (tc, stream); 00130 } 00131 case CORBA::tk_value_box: 00132 case CORBA::tk_value: 00133 case CORBA::tk_event: 00134 { 00135 TAO_Marshal_Value marshal; 00136 return marshal.skip (tc, stream); 00137 } 00138 } 00139 }
virtual TAO::traverse_status TAO_Marshal_Object::skip | ( | CORBA::TypeCode_ptr | tc, | |
TAO_InputCDR * | context | |||
) | [pure virtual] |
skip operation
Implemented in TAO_Marshal_Primitive, TAO_Marshal_Any, TAO_Marshal_TypeCode, TAO_Marshal_Principal, TAO_Marshal_ObjRef, TAO_Marshal_Struct, TAO_Marshal_Union, TAO_Marshal_String, TAO_Marshal_Sequence, TAO_Marshal_Array, TAO_Marshal_Alias, TAO_Marshal_Except, TAO_Marshal_WString, and TAO_Marshal_Value.