00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #include "tao/AnyTypeCode/Marshal.h"
00018 #include "tao/AnyTypeCode/TypeCode.h"
00019
00020 #if !defined (__ACE_INLINE__)
00021 # include "tao/AnyTypeCode/Marshal.inl"
00022 #endif
00023
00024 ACE_RCSID (AnyTypeCode,
00025 Marshal,
00026 "$Id: Marshal.cpp 77590 2007-03-07 14:07:57Z johnnyw $")
00027
00028 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00029
00030 TAO_Marshal_Object::~TAO_Marshal_Object (void)
00031 {
00032 }
00033
00034 TAO::traverse_status
00035 TAO_Marshal_Object::perform_skip (CORBA::TypeCode_ptr tc, TAO_InputCDR *stream)
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
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 }
00140
00141 TAO::traverse_status
00142 TAO_Marshal_Object::perform_append (CORBA::TypeCode_ptr tc,
00143 TAO_InputCDR *src,
00144 TAO_OutputCDR *dest)
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
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 }
00249
00250 TAO_END_VERSIONED_NAMESPACE_DECL