00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
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
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
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
00069
00070
00071
00072
00073
00074
00075
00076
00077 class TAO_AnyTypeCode_Export TAO_Marshal_Object
00078 {
00079 public:
00080
00081 TAO_Marshal_Object (void);
00082
00083
00084 virtual ~TAO_Marshal_Object (void);
00085
00086
00087
00088 static TAO::traverse_status perform_skip (CORBA::TypeCode_ptr tc,
00089 TAO_InputCDR *context);
00090
00091
00092 virtual TAO::traverse_status skip (CORBA::TypeCode_ptr tc,
00093 TAO_InputCDR *context) = 0;
00094
00095
00096
00097 static TAO::traverse_status perform_append (CORBA::TypeCode_ptr tc,
00098 TAO_InputCDR *src,
00099 TAO_OutputCDR *dest);
00100
00101
00102 virtual TAO::traverse_status append (CORBA::TypeCode_ptr tc,
00103 TAO_InputCDR *src,
00104 TAO_OutputCDR *dest) = 0;
00105 };
00106
00107
00108
00109
00110
00111
00112
00113
00114 class TAO_AnyTypeCode_Export TAO_Marshal_Primitive: public TAO_Marshal_Object
00115 {
00116 public:
00117 TAO_Marshal_Primitive (void);
00118
00119
00120 virtual TAO::traverse_status skip (CORBA::TypeCode_ptr tc,
00121 TAO_InputCDR *context);
00122
00123
00124 virtual TAO::traverse_status append (CORBA::TypeCode_ptr tc,
00125 TAO_InputCDR *src,
00126 TAO_OutputCDR *dest);
00127 };
00128
00129
00130
00131
00132
00133
00134
00135
00136 class TAO_AnyTypeCode_Export TAO_Marshal_Any: public TAO_Marshal_Object
00137 {
00138 public:
00139 TAO_Marshal_Any (void);
00140
00141
00142 virtual TAO::traverse_status skip (CORBA::TypeCode_ptr tc,
00143 TAO_InputCDR *context);
00144
00145
00146 virtual TAO::traverse_status append (CORBA::TypeCode_ptr tc,
00147 TAO_InputCDR *src,
00148 TAO_OutputCDR *dest);
00149 };
00150
00151
00152
00153
00154
00155
00156
00157
00158 class TAO_AnyTypeCode_Export TAO_Marshal_TypeCode: public TAO_Marshal_Object
00159 {
00160 public:
00161 TAO_Marshal_TypeCode (void);
00162
00163
00164 virtual TAO::traverse_status skip (CORBA::TypeCode_ptr tc,
00165 TAO_InputCDR *context);
00166
00167
00168 virtual TAO::traverse_status append (CORBA::TypeCode_ptr tc,
00169 TAO_InputCDR *src,
00170 TAO_OutputCDR *dest);
00171 };
00172
00173
00174
00175
00176
00177
00178
00179
00180 class TAO_AnyTypeCode_Export TAO_Marshal_Principal: public TAO_Marshal_Object
00181 {
00182 public:
00183 TAO_Marshal_Principal (void);
00184
00185
00186 virtual TAO::traverse_status skip (CORBA::TypeCode_ptr tc,
00187 TAO_InputCDR *context);
00188
00189
00190 virtual TAO::traverse_status append (CORBA::TypeCode_ptr tc,
00191 TAO_InputCDR *src,
00192 TAO_OutputCDR *dest);
00193 };
00194
00195
00196
00197
00198
00199
00200
00201
00202 class TAO_AnyTypeCode_Export TAO_Marshal_ObjRef: public TAO_Marshal_Object
00203 {
00204 public:
00205 TAO_Marshal_ObjRef (void);
00206
00207
00208 virtual TAO::traverse_status skip (CORBA::TypeCode_ptr tc,
00209 TAO_InputCDR *context);
00210
00211
00212 virtual TAO::traverse_status append (CORBA::TypeCode_ptr tc,
00213 TAO_InputCDR *src,
00214 TAO_OutputCDR *dest);
00215 };
00216
00217
00218
00219
00220
00221
00222
00223
00224 class TAO_AnyTypeCode_Export TAO_Marshal_Struct : public TAO_Marshal_Object
00225 {
00226 public:
00227 TAO_Marshal_Struct (void);
00228
00229
00230 virtual TAO::traverse_status skip (CORBA::TypeCode_ptr tc,
00231 TAO_InputCDR *context);
00232
00233
00234 virtual TAO::traverse_status append (CORBA::TypeCode_ptr tc,
00235 TAO_InputCDR *src,
00236 TAO_OutputCDR *dest);
00237 };
00238
00239
00240
00241
00242
00243
00244
00245
00246 class TAO_AnyTypeCode_Export TAO_Marshal_Union: public TAO_Marshal_Object
00247 {
00248 public:
00249 TAO_Marshal_Union (void);
00250
00251
00252 virtual TAO::traverse_status skip (CORBA::TypeCode_ptr tc,
00253 TAO_InputCDR *context);
00254
00255
00256 virtual TAO::traverse_status append (CORBA::TypeCode_ptr tc,
00257 TAO_InputCDR *src,
00258 TAO_OutputCDR *dest);
00259 };
00260
00261
00262
00263
00264
00265
00266
00267
00268 class TAO_AnyTypeCode_Export TAO_Marshal_String: public TAO_Marshal_Object
00269 {
00270 public:
00271 TAO_Marshal_String (void);
00272
00273
00274 virtual TAO::traverse_status skip (CORBA::TypeCode_ptr tc,
00275 TAO_InputCDR *context);
00276
00277
00278 virtual TAO::traverse_status append (CORBA::TypeCode_ptr tc,
00279 TAO_InputCDR *src,
00280 TAO_OutputCDR *dest);
00281 };
00282
00283
00284
00285
00286
00287
00288
00289
00290 class TAO_AnyTypeCode_Export TAO_Marshal_Sequence: public TAO_Marshal_Object
00291 {
00292 public:
00293 TAO_Marshal_Sequence (void);
00294
00295
00296 virtual TAO::traverse_status skip (CORBA::TypeCode_ptr tc,
00297 TAO_InputCDR *context);
00298
00299
00300 virtual TAO::traverse_status append (CORBA::TypeCode_ptr tc,
00301 TAO_InputCDR *src,
00302 TAO_OutputCDR *dest);
00303 };
00304
00305
00306
00307
00308
00309
00310
00311
00312 class TAO_AnyTypeCode_Export TAO_Marshal_Array: public TAO_Marshal_Object
00313 {
00314 public:
00315 TAO_Marshal_Array (void);
00316
00317
00318 virtual TAO::traverse_status skip (CORBA::TypeCode_ptr tc,
00319 TAO_InputCDR *context);
00320
00321
00322 virtual TAO::traverse_status append (CORBA::TypeCode_ptr tc,
00323 TAO_InputCDR *src,
00324 TAO_OutputCDR *dest);
00325 };
00326
00327
00328
00329
00330
00331
00332
00333
00334 class TAO_AnyTypeCode_Export TAO_Marshal_Alias: public TAO_Marshal_Object
00335 {
00336 public:
00337 TAO_Marshal_Alias (void);
00338
00339
00340 virtual TAO::traverse_status skip (CORBA::TypeCode_ptr tc,
00341 TAO_InputCDR *context);
00342
00343
00344 virtual TAO::traverse_status append (CORBA::TypeCode_ptr tc,
00345 TAO_InputCDR *src,
00346 TAO_OutputCDR *dest);
00347 };
00348
00349
00350
00351
00352
00353
00354
00355
00356 class TAO_AnyTypeCode_Export TAO_Marshal_Except: public TAO_Marshal_Object
00357 {
00358 public:
00359 TAO_Marshal_Except (void);
00360
00361
00362 virtual TAO::traverse_status skip (CORBA::TypeCode_ptr tc,
00363 TAO_InputCDR *context);
00364
00365
00366 virtual TAO::traverse_status append (CORBA::TypeCode_ptr tc,
00367 TAO_InputCDR *src,
00368 TAO_OutputCDR *dest);
00369 };
00370
00371
00372
00373
00374
00375
00376
00377
00378 class TAO_AnyTypeCode_Export TAO_Marshal_WString : public TAO_Marshal_Object
00379 {
00380 public:
00381 TAO_Marshal_WString (void);
00382
00383
00384 virtual TAO::traverse_status skip (CORBA::TypeCode_ptr tc,
00385 TAO_InputCDR *context);
00386
00387
00388 virtual TAO::traverse_status append (CORBA::TypeCode_ptr tc,
00389 TAO_InputCDR *src,
00390 TAO_OutputCDR *dest);
00391 };
00392
00393
00394
00395
00396
00397
00398
00399
00400 class TAO_AnyTypeCode_Export TAO_Marshal_Value: public TAO_Marshal_Object
00401 {
00402 public:
00403 TAO_Marshal_Value (void);
00404
00405
00406 virtual TAO::traverse_status skip (CORBA::TypeCode_ptr tc,
00407 TAO_InputCDR *context);
00408
00409
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
00423
00424 #include "ace/post.h"
00425 #endif