Marshal.h

Go to the documentation of this file.
00001 // -*- C++ -*-
00002 
00003 //=============================================================================
00004 /**
00005  *  @file    Marshal.h
00006  *
00007  *  $Id: Marshal.h 76995 2007-02-11 12:51:42Z johnnyw $
00008  *
00009  *   Classes that marshal various IDL data types.
00010  *
00011  *
00012  *  @author  Aniruddha S. Gokhale
00013  */
00014 //=============================================================================
00015 
00016 
00017 #ifndef TAO_MARSHAL_H
00018 #define TAO_MARSHAL_H
00019 
00020 #include /**/ "ace/pre.h"
00021 
00022 #include "tao/Basic_Types.h"
00023 
00024 #if !defined (ACE_LACKS_PRAGMA_ONCE)
00025 # pragma once
00026 #endif /* ACE_LACKS_PRAGMA_ONCE */
00027 
00028 #include "tao/AnyTypeCode/TAO_AnyTypeCode_Export.h"
00029 
00030 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00031 
00032 namespace CORBA
00033 {
00034   class TypeCode;
00035   typedef TypeCode *TypeCode_ptr;
00036 }
00037 
00038 class TAO_OutputCDR;
00039 class TAO_InputCDR;
00040 
00041 // = Forward declarations.
00042 class TAO_Marshal_Object;
00043 class TAO_Marshal_Primitive;
00044 class TAO_Marshal_Any;
00045 class TAO_Marshal_TypeCode;
00046 class TAO_Marshal_Principal;
00047 class TAO_Marshal_ObjRef;
00048 class TAO_Marshal_Struct;
00049 class TAO_Marshal_Union;
00050 class TAO_Marshal_String;
00051 class TAO_Marshal_Sequence;
00052 class TAO_Marshal_Array;
00053 class TAO_Marshal_Alias;
00054 class TAO_Marshal_Except;
00055 class TAO_Marshal_WString;
00056 class TAO_Marshal_Value;
00057 
00058 namespace TAO
00059 {
00060   enum traverse_status
00061     {
00062       TRAVERSE_STOP,
00063       TRAVERSE_CONTINUE
00064     };
00065 }
00066 
00067 /**
00068  * @class TAO_Marshal_Object
00069  *
00070  * @brief TAO_Marshal_Object
00071  *
00072  * The Marshaling object that provides a common interface to the
00073  * CDR object for marshaling different IDL data types
00074  * Provides a set of virtual methods for appending and skipping
00075  * data over a CDR stream.
00076  */
00077 class TAO_AnyTypeCode_Export TAO_Marshal_Object
00078 {
00079 public:
00080   /// constructor
00081   TAO_Marshal_Object (void);
00082 
00083   /// destructor
00084   virtual ~TAO_Marshal_Object (void);
00085 
00086   /// skip entry point, it allocates the right kind of Marshal_Object
00087   /// and invokes skip on it.
00088   static TAO::traverse_status perform_skip (CORBA::TypeCode_ptr tc,
00089                                             TAO_InputCDR *context);
00090 
00091   /// skip operation
00092   virtual TAO::traverse_status skip (CORBA::TypeCode_ptr tc,
00093                                      TAO_InputCDR *context) = 0;
00094 
00095   /// append entry point, it allocates the right kind of Marshal_Object
00096   /// and invokes skip on it.
00097   static TAO::traverse_status perform_append (CORBA::TypeCode_ptr tc,
00098                                               TAO_InputCDR *src,
00099                                               TAO_OutputCDR *dest);
00100 
00101   /// append operation
00102   virtual TAO::traverse_status append (CORBA::TypeCode_ptr tc,
00103                                        TAO_InputCDR *src,
00104                                        TAO_OutputCDR *dest) = 0;
00105 };
00106 
00107 /**
00108  * @class TAO_Marshal_Primitive:
00109  *
00110  * @brief TAO_Marshal_Primitive
00111  *
00112  * marshaling primitives
00113  */
00114 class TAO_AnyTypeCode_Export TAO_Marshal_Primitive: public TAO_Marshal_Object
00115 {
00116 public:
00117   TAO_Marshal_Primitive (void);
00118 
00119   /// skip operation
00120   virtual TAO::traverse_status skip (CORBA::TypeCode_ptr tc,
00121                                      TAO_InputCDR *context);
00122 
00123   /// append operation
00124   virtual TAO::traverse_status append (CORBA::TypeCode_ptr tc,
00125                                        TAO_InputCDR *src,
00126                                        TAO_OutputCDR *dest);
00127 };
00128 
00129 /**
00130  * @class TAO_Marshal_Any:
00131  *
00132  * @brief TAO_Marshal_Any
00133  *
00134  * Marshal an Any
00135  */
00136 class TAO_AnyTypeCode_Export TAO_Marshal_Any: public TAO_Marshal_Object
00137 {
00138 public:
00139   TAO_Marshal_Any (void);
00140 
00141   /// skip operation
00142   virtual TAO::traverse_status skip (CORBA::TypeCode_ptr tc,
00143                                      TAO_InputCDR *context);
00144 
00145   /// append operation
00146   virtual TAO::traverse_status append (CORBA::TypeCode_ptr tc,
00147                                        TAO_InputCDR *src,
00148                                        TAO_OutputCDR *dest);
00149 };
00150 
00151 /**
00152  * @class TAO_Marshal_TypeCode
00153  *
00154  * @brief TAO_Marshal_TypeCode
00155  *
00156  * marshal a typecode
00157  */
00158 class TAO_AnyTypeCode_Export TAO_Marshal_TypeCode: public TAO_Marshal_Object
00159 {
00160 public:
00161   TAO_Marshal_TypeCode (void);
00162 
00163   /// skip operation
00164   virtual TAO::traverse_status skip (CORBA::TypeCode_ptr tc,
00165                                      TAO_InputCDR *context);
00166 
00167   /// append operation
00168   virtual TAO::traverse_status append (CORBA::TypeCode_ptr tc,
00169                                        TAO_InputCDR *src,
00170                                        TAO_OutputCDR *dest);
00171 };
00172 
00173 /**
00174  * @class TAO_Marshal_Principal
00175  *
00176  * @brief TAO_Marshal_Principal
00177  *
00178  * marshal a principal
00179  */
00180 class TAO_AnyTypeCode_Export TAO_Marshal_Principal: public TAO_Marshal_Object
00181 {
00182 public:
00183   TAO_Marshal_Principal (void);
00184 
00185   /// skip operation
00186   virtual TAO::traverse_status skip (CORBA::TypeCode_ptr tc,
00187                                      TAO_InputCDR *context);
00188 
00189   /// append operation
00190   virtual TAO::traverse_status append (CORBA::TypeCode_ptr tc,
00191                                        TAO_InputCDR *src,
00192                                        TAO_OutputCDR *dest);
00193 };
00194 
00195 /**
00196  * @class TAO_Marshal_ObjRef
00197  *
00198  * @brief TAO_Marshal_ObjRef
00199  *
00200  * marshal an object reference
00201  */
00202 class TAO_AnyTypeCode_Export TAO_Marshal_ObjRef: public TAO_Marshal_Object
00203 {
00204 public:
00205   TAO_Marshal_ObjRef (void);
00206 
00207   /// skip operation
00208   virtual TAO::traverse_status skip (CORBA::TypeCode_ptr tc,
00209                                      TAO_InputCDR *context);
00210 
00211   /// append operation
00212   virtual TAO::traverse_status append (CORBA::TypeCode_ptr tc,
00213                                        TAO_InputCDR *src,
00214                                        TAO_OutputCDR *dest);
00215 };
00216 
00217 /**
00218  * @class TAO_Marshal_Struct
00219  *
00220  * @brief TAO_Marshal_Struct
00221  *
00222  * marshal a struct
00223  */
00224 class TAO_AnyTypeCode_Export TAO_Marshal_Struct : public TAO_Marshal_Object
00225 {
00226 public:
00227   TAO_Marshal_Struct (void);
00228 
00229   /// skip operation
00230   virtual TAO::traverse_status skip (CORBA::TypeCode_ptr tc,
00231                                      TAO_InputCDR *context);
00232 
00233   /// append operation
00234   virtual TAO::traverse_status append (CORBA::TypeCode_ptr tc,
00235                                        TAO_InputCDR *src,
00236                                        TAO_OutputCDR *dest);
00237 };
00238 
00239 /**
00240  * @class TAO_Marshal_Union
00241  *
00242  * @brief TAO_Marshal_Union
00243  *
00244  * marshal a union
00245  */
00246 class TAO_AnyTypeCode_Export TAO_Marshal_Union: public TAO_Marshal_Object
00247 {
00248 public:
00249   TAO_Marshal_Union (void);
00250 
00251   /// skip operation
00252   virtual TAO::traverse_status skip (CORBA::TypeCode_ptr tc,
00253                                      TAO_InputCDR *context);
00254 
00255   /// append operation
00256   virtual TAO::traverse_status append (CORBA::TypeCode_ptr tc,
00257                                        TAO_InputCDR *src,
00258                                        TAO_OutputCDR *dest);
00259 };
00260 
00261 /**
00262  * @class TAO_Marshal_String
00263  *
00264  * @brief TAO_Marshal_String
00265  *
00266  * marshal a string
00267  */
00268 class TAO_AnyTypeCode_Export TAO_Marshal_String: public TAO_Marshal_Object
00269 {
00270 public:
00271   TAO_Marshal_String (void);
00272 
00273   /// skip operation
00274   virtual TAO::traverse_status skip (CORBA::TypeCode_ptr tc,
00275                                      TAO_InputCDR *context);
00276 
00277   /// append operation
00278   virtual TAO::traverse_status append (CORBA::TypeCode_ptr tc,
00279                                        TAO_InputCDR *src,
00280                                        TAO_OutputCDR *dest);
00281 };
00282 
00283 /**
00284  * @class TAO_Marshal_Sequence
00285  *
00286  * @brief TAO_Marshal_Sequence
00287  *
00288  * marshal a sequence
00289  */
00290 class TAO_AnyTypeCode_Export TAO_Marshal_Sequence: public TAO_Marshal_Object
00291 {
00292 public:
00293   TAO_Marshal_Sequence (void);
00294 
00295   /// skip operation
00296   virtual TAO::traverse_status skip (CORBA::TypeCode_ptr tc,
00297                                      TAO_InputCDR *context);
00298 
00299   /// append operation
00300   virtual TAO::traverse_status append (CORBA::TypeCode_ptr tc,
00301                                        TAO_InputCDR *src,
00302                                        TAO_OutputCDR *dest);
00303 };
00304 
00305 /**
00306  * @class TAO_Marshal_Array
00307  *
00308  * @brief TAO_Marshal_Array
00309  *
00310  * marshal an array
00311  */
00312 class TAO_AnyTypeCode_Export TAO_Marshal_Array: public TAO_Marshal_Object
00313 {
00314 public:
00315   TAO_Marshal_Array (void);
00316 
00317   /// skip operation
00318   virtual TAO::traverse_status skip (CORBA::TypeCode_ptr tc,
00319                                      TAO_InputCDR *context);
00320 
00321   /// append operation
00322   virtual TAO::traverse_status append (CORBA::TypeCode_ptr tc,
00323                                        TAO_InputCDR *src,
00324                                        TAO_OutputCDR *dest);
00325 };
00326 
00327 /**
00328  * @class TAO_Marshal_Alias
00329  *
00330  * @brief TAO_Marshal_Alias
00331  *
00332  * marshal an alias
00333  */
00334 class TAO_AnyTypeCode_Export TAO_Marshal_Alias: public TAO_Marshal_Object
00335 {
00336 public:
00337   TAO_Marshal_Alias (void);
00338 
00339   /// skip operation
00340   virtual TAO::traverse_status skip (CORBA::TypeCode_ptr tc,
00341                                      TAO_InputCDR *context);
00342 
00343   /// append operation
00344   virtual TAO::traverse_status append (CORBA::TypeCode_ptr tc,
00345                                        TAO_InputCDR *src,
00346                                        TAO_OutputCDR *dest);
00347 };
00348 
00349 /**
00350  * @class TAO_Marshal_Except
00351  *
00352  * @brief TAO_Marshal_Except
00353  *
00354  * marshal an exception
00355  */
00356 class TAO_AnyTypeCode_Export TAO_Marshal_Except: public TAO_Marshal_Object
00357 {
00358 public:
00359   TAO_Marshal_Except (void);
00360 
00361   /// skip operation
00362   virtual TAO::traverse_status skip (CORBA::TypeCode_ptr tc,
00363                                      TAO_InputCDR *context);
00364 
00365   /// append operation
00366   virtual TAO::traverse_status append (CORBA::TypeCode_ptr tc,
00367                                        TAO_InputCDR *src,
00368                                        TAO_OutputCDR *dest);
00369 };
00370 
00371 /**
00372  * @class TAO_Marshal_WString
00373  *
00374  * @brief TAO_Marshal_WString
00375  *
00376  * marshal a wide string
00377  */
00378 class TAO_AnyTypeCode_Export TAO_Marshal_WString : public TAO_Marshal_Object
00379 {
00380 public:
00381   TAO_Marshal_WString (void);
00382 
00383   /// skip operation
00384   virtual TAO::traverse_status skip (CORBA::TypeCode_ptr tc,
00385                                      TAO_InputCDR *context);
00386 
00387   /// append operation
00388   virtual TAO::traverse_status append (CORBA::TypeCode_ptr tc,
00389                                        TAO_InputCDR *src,
00390                                        TAO_OutputCDR *dest);
00391 };
00392 
00393 /**
00394  * @class TAO_Marshal_Value
00395  *
00396  * @brief TAO_Marshal_Value
00397  *
00398  * marshal a valuetype
00399  */
00400 class TAO_AnyTypeCode_Export TAO_Marshal_Value: public TAO_Marshal_Object
00401 {
00402 public:
00403   TAO_Marshal_Value (void);
00404 
00405   /// skip operation
00406   virtual TAO::traverse_status skip (CORBA::TypeCode_ptr tc,
00407                                      TAO_InputCDR *context);
00408 
00409   /// append operation
00410   virtual TAO::traverse_status append (CORBA::TypeCode_ptr tc,
00411                                        TAO_InputCDR *src,
00412                                        TAO_OutputCDR *dest);
00413 
00414 private:
00415   CORBA::Boolean nested_processing_;
00416 };
00417 
00418 TAO_END_VERSIONED_NAMESPACE_DECL
00419 
00420 #if defined (__ACE_INLINE__)
00421 # include "tao/AnyTypeCode/Marshal.inl"
00422 #endif /* __ACE_INLINE__ */
00423 
00424 #include /**/ "ace/post.h"
00425 #endif /* TAO_MARSHAL_H */

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