TAO_Marshal_Object Class Reference

TAO_Marshal_Object. More...

#include <Marshal.h>

Inheritance diagram for TAO_Marshal_Object:

Inheritance graph
[legend]
List of all members.

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)

Detailed Description

TAO_Marshal_Object.

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.


Constructor & Destructor Documentation

TAO_BEGIN_VERSIONED_NAMESPACE_DECL ACE_INLINE TAO_Marshal_Object::TAO_Marshal_Object ( void   ) 

constructor

Definition at line 8 of file Marshal.inl.

00009 {
00010 }

TAO_BEGIN_VERSIONED_NAMESPACE_DECL TAO_Marshal_Object::~TAO_Marshal_Object ( void   )  [virtual]

destructor

Definition at line 30 of file Marshal.cpp.

00031 {
00032 }


Member Function Documentation

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.


The documentation for this class was generated from the following files:
Generated on Tue Feb 2 17:40:26 2010 for TAO_AnyTypeCode by  doxygen 1.4.7