Marshal.cpp

Go to the documentation of this file.
00001 
00002 //=============================================================================
00003 /**
00004  *  @file    Marshal.cpp
00005  *
00006  * $Id: Marshal.cpp 77590 2007-03-07 14:07:57Z johnnyw $
00007  *
00008  *  Implements the Marshal_Object class and the factory
00009  *  The original encoder and decoder code now appears in files encode.cpp and
00010  *  decode.cpp
00011  *
00012  *  @author Aniruddha S. Gokhale
00013  *  @author Copyright 1994-1995 by Sun Microsystems Inc.
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 /* ! __ACE_INLINE__ */
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       // @@ 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 }
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       // @@ 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 }
00249 
00250 TAO_END_VERSIONED_NAMESPACE_DECL

Generated on Sun Jan 27 13:21:06 2008 for TAO_AnyTypeCode by doxygen 1.3.6