00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #ifndef TAO_ANY_H
00015 #define TAO_ANY_H
00016
00017 #include "ace/pre.h"
00018
00019 #include "tao/AnyTypeCode/TAO_AnyTypeCode_Export.h"
00020
00021 #if !defined (ACE_LACKS_PRAGMA_ONCE)
00022 # pragma once
00023 #endif
00024
00025 #include "tao/AnyTypeCode/AnyTypeCode_methods.h"
00026 #include "tao/Pseudo_VarOut_T.h"
00027 #include "tao/Arg_Traits_T.h"
00028 #include "tao/Object.h"
00029
00030 #include "ace/CDR_Stream.h"
00031
00032 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00033
00034 namespace TAO
00035 {
00036 class Any_Impl;
00037 }
00038
00039 namespace CORBA
00040 {
00041 class Any;
00042 typedef Any *Any_ptr;
00043 class Any_var;
00044 class Any_out;
00045
00046 class TypeCode;
00047 typedef TypeCode *TypeCode_ptr;
00048
00049 class AbstractBase;
00050 typedef AbstractBase *AbstractBase_ptr;
00051
00052 class ValueBase;
00053 class Exception;
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064 class TAO_AnyTypeCode_Export Any
00065 {
00066 public:
00067 typedef Any_ptr _ptr_type;
00068 typedef Any_var _var_type;
00069 typedef Any_out _out_type;
00070
00071 Any (void);
00072 Any (const Any &);
00073
00074 ~Any (void);
00075
00076 Any &operator= (const Any &);
00077 TAO::Any_Impl *impl (void) const;
00078
00079
00080 static void _tao_any_destructor (void *);
00081
00082
00083
00084
00085
00086
00087 typedef ACE_OutputCDR::from_boolean from_boolean;
00088 typedef ACE_OutputCDR::from_octet from_octet;
00089 typedef ACE_OutputCDR::from_char from_char;
00090 typedef ACE_OutputCDR::from_wchar from_wchar;
00091 typedef ACE_OutputCDR::from_string from_string;
00092 typedef ACE_OutputCDR::from_wstring from_wstring;
00093
00094
00095
00096 void operator<<= (from_boolean);
00097 void operator<<= (from_char);
00098 void operator<<= (from_wchar);
00099 void operator<<= (from_octet);
00100 void operator<<= (from_string);
00101 void operator<<= (from_wstring);
00102
00103
00104
00105
00106 typedef ACE_InputCDR::to_boolean to_boolean;
00107 typedef ACE_InputCDR::to_char to_char;
00108 typedef ACE_InputCDR::to_wchar to_wchar;
00109 typedef ACE_InputCDR::to_octet to_octet;
00110 typedef ACE_InputCDR::to_string to_string;
00111 typedef ACE_InputCDR::to_wstring to_wstring;
00112
00113
00114
00115 struct TAO_AnyTypeCode_Export to_object
00116 {
00117
00118
00119 explicit to_object (Object_out obj);
00120 Object_ptr &ref_;
00121 };
00122
00123 struct TAO_AnyTypeCode_Export to_abstract_base
00124 {
00125 explicit to_abstract_base (AbstractBase_ptr &obj);
00126 AbstractBase_ptr &ref_;
00127 };
00128
00129 struct TAO_AnyTypeCode_Export to_value
00130 {
00131 explicit to_value (ValueBase *&base);
00132 ValueBase *&ref_;
00133 };
00134
00135
00136
00137 Boolean operator>>= (to_boolean) const;
00138 Boolean operator>>= (to_octet) const;
00139 Boolean operator>>= (to_char) const;
00140 Boolean operator>>= (to_wchar) const;
00141 Boolean operator>>= (to_string) const;
00142 Boolean operator>>= (to_wstring) const;
00143 Boolean operator>>= (to_object) const;
00144 Boolean operator>>= (to_abstract_base) const;
00145 Boolean operator>>= (to_value) const;
00146
00147
00148 void replace (TAO::Any_Impl *);
00149
00150
00151 TypeCode_ptr type (void) const;
00152
00153
00154
00155 void type (TypeCode_ptr);
00156
00157
00158 CORBA::TypeCode_ptr _tao_get_typecode (void) const;
00159
00160
00161 void _tao_set_typecode (const CORBA::TypeCode_ptr);
00162
00163 int _tao_byte_order (void) const;
00164
00165 private:
00166 CORBA::Boolean checked_to_object (CORBA::Object_ptr &) const;
00167 CORBA::Boolean checked_to_value (CORBA::ValueBase *&) const;
00168 CORBA::Boolean checked_to_abstract_base (CORBA::AbstractBase_ptr &) const;
00169
00170
00171 void operator<<= (unsigned char);
00172 CORBA::Boolean operator>>= (unsigned char&) const;
00173
00174 private:
00175 TAO::Any_Impl *impl_;
00176
00177 friend class TAO_Marshal_Any;
00178 };
00179
00180
00181
00182
00183
00184
00185
00186 class TAO_AnyTypeCode_Export Any_var
00187 {
00188 public:
00189 Any_var (void);
00190 Any_var (Any *a);
00191 Any_var (const Any_var &);
00192 ~Any_var (void);
00193
00194 Any_var &operator= (Any *);
00195
00196
00197
00198
00199
00200
00201
00202 Any_var &operator= (const Any_var &);
00203
00204
00205 Any *operator-> (void);
00206
00207
00208 operator const Any *() const;
00209
00210
00211 operator Any *&();
00212
00213
00214 const Any &in (void) const;
00215
00216
00217 Any &inout (void);
00218
00219
00220 Any *&out (void);
00221
00222
00223 Any *_retn (void);
00224
00225
00226 Any *ptr (void) const;
00227 private:
00228
00229 Any *ptr_;
00230 };
00231
00232
00233
00234
00235
00236
00237
00238
00239
00240 class TAO_AnyTypeCode_Export Any_out
00241 {
00242 public:
00243 Any_out (Any *&);
00244 Any_out (Any_var &);
00245 Any_out (const Any_out &);
00246
00247
00248 Any_out &operator= (const Any_out &s);
00249
00250
00251 Any_out &operator= (Any *);
00252
00253
00254 operator Any *&();
00255
00256
00257 Any *& ptr (void);
00258
00259 Any *operator-> (void);
00260
00261 private:
00262
00263 void operator= (const Any_var &);
00264
00265 private:
00266
00267 Any *&ptr_;
00268 };
00269 }
00270
00271 TAO_AnyTypeCode_Export CORBA::Boolean
00272 operator<< (TAO_OutputCDR &, const CORBA::Any &);
00273
00274 TAO_AnyTypeCode_Export CORBA::Boolean
00275 operator>> (TAO_InputCDR &, CORBA::Any &);
00276
00277 #if defined (GEN_OSTREAM_OPS)
00278
00279
00280 TAO_AnyTypeCode_Export std::ostream &
00281 operator<< (std::ostream &, const CORBA::Any &);
00282
00283 #endif
00284
00285
00286
00287 TAO_AnyTypeCode_Export void operator<<= (CORBA::Any &, CORBA::Short);
00288 TAO_AnyTypeCode_Export void operator<<= (CORBA::Any &, CORBA::UShort);
00289 TAO_AnyTypeCode_Export void operator<<= (CORBA::Any &, CORBA::Long);
00290 TAO_AnyTypeCode_Export void operator<<= (CORBA::Any &, CORBA::ULong);
00291 TAO_AnyTypeCode_Export void operator<<= (CORBA::Any &, CORBA::LongLong);
00292 TAO_AnyTypeCode_Export void operator<<= (CORBA::Any &, CORBA::ULongLong);
00293 TAO_AnyTypeCode_Export void operator<<= (CORBA::Any &, CORBA::Float);
00294 TAO_AnyTypeCode_Export void operator<<= (CORBA::Any &, CORBA::Double);
00295 TAO_AnyTypeCode_Export void operator<<= (CORBA::Any &, CORBA::LongDouble);
00296 TAO_AnyTypeCode_Export void operator<<= (CORBA::Any &, const CORBA::Any &);
00297 TAO_AnyTypeCode_Export void operator<<= (CORBA::Any &, CORBA::Any *);
00298 TAO_AnyTypeCode_Export void operator<<= (CORBA::Any &, const char *);
00299 TAO_AnyTypeCode_Export void operator<<= (CORBA::Any &, const CORBA::WChar *);
00300 TAO_AnyTypeCode_Export void operator<<= (CORBA::Any &, CORBA::TypeCode_ptr);
00301 TAO_AnyTypeCode_Export void operator<<= (CORBA::Any &, CORBA::TypeCode_ptr *);
00302 TAO_AnyTypeCode_Export void operator<<= (CORBA::Any &, const CORBA::Object_ptr);
00303 TAO_AnyTypeCode_Export void operator<<= (CORBA::Any &, CORBA::Object_ptr *);
00304 TAO_AnyTypeCode_Export void operator<<= (CORBA::Any &, const std::string &);
00305 TAO_AnyTypeCode_Export void operator<<= (CORBA::Any &, std::string *);
00306
00307
00308
00309 TAO_AnyTypeCode_Export CORBA::Boolean operator>>= (const CORBA::Any &,
00310 CORBA::Short &);
00311 TAO_AnyTypeCode_Export CORBA::Boolean operator>>= (const CORBA::Any &,
00312 CORBA::UShort &);
00313 TAO_AnyTypeCode_Export CORBA::Boolean operator>>= (const CORBA::Any &,
00314 CORBA::Long &);
00315 TAO_AnyTypeCode_Export CORBA::Boolean operator>>= (const CORBA::Any &,
00316 CORBA::ULong &);
00317 TAO_AnyTypeCode_Export CORBA::Boolean operator>>= (const CORBA::Any &,
00318 CORBA::LongLong &);
00319 TAO_AnyTypeCode_Export CORBA::Boolean operator>>= (const CORBA::Any &,
00320 CORBA::ULongLong &);
00321 TAO_AnyTypeCode_Export CORBA::Boolean operator>>= (const CORBA::Any &,
00322 CORBA::Float &);
00323 TAO_AnyTypeCode_Export CORBA::Boolean operator>>= (const CORBA::Any &,
00324 CORBA::Double &);
00325 TAO_AnyTypeCode_Export CORBA::Boolean operator>>= (const CORBA::Any &,
00326 CORBA::LongDouble &);
00327 TAO_AnyTypeCode_Export CORBA::Boolean operator>>= (const CORBA::Any &,
00328 const CORBA::Any *&);
00329 TAO_AnyTypeCode_Export CORBA::Boolean operator>>= (const CORBA::Any &,
00330 CORBA::TypeCode_ptr &);
00331 TAO_AnyTypeCode_Export CORBA::Boolean operator>>= (const CORBA::Any &,
00332 const CORBA::Char *&);
00333 TAO_AnyTypeCode_Export CORBA::Boolean operator>>= (const CORBA::Any &,
00334 const CORBA::WChar *&);
00335 TAO_AnyTypeCode_Export CORBA::Boolean operator>>= (const CORBA::Any &,
00336 std::string &);
00337
00338 TAO_END_VERSIONED_NAMESPACE_DECL
00339
00340 #if defined (__ACE_INLINE__)
00341 # include "tao/AnyTypeCode/Any.inl"
00342 #else
00343
00344 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00345
00346
00347
00348
00349 TAO_AnyTypeCode_Export void operator<<= (CORBA::Any_var &, CORBA::Short);
00350 TAO_AnyTypeCode_Export void operator<<= (CORBA::Any_var &, CORBA::UShort);
00351 TAO_AnyTypeCode_Export void operator<<= (CORBA::Any_var &, CORBA::Long);
00352 TAO_AnyTypeCode_Export void operator<<= (CORBA::Any_var &, CORBA::ULong);
00353 TAO_AnyTypeCode_Export void operator<<= (CORBA::Any_var &, CORBA::LongLong);
00354 TAO_AnyTypeCode_Export void operator<<= (CORBA::Any_var &, CORBA::ULongLong);
00355 TAO_AnyTypeCode_Export void operator<<= (CORBA::Any_var &, CORBA::Float);
00356 TAO_AnyTypeCode_Export void operator<<= (CORBA::Any_var &, CORBA::Double);
00357 TAO_AnyTypeCode_Export void operator<<= (CORBA::Any_var &, const CORBA::Any *&);
00358 TAO_AnyTypeCode_Export void operator<<= (CORBA::Any_var &, const char *);
00359 TAO_AnyTypeCode_Export void operator<<= (CORBA::Any_var &, CORBA::TypeCode_ptr);
00360 TAO_AnyTypeCode_Export void operator<<= (CORBA::Any_var &, const CORBA::Object_ptr);
00361 TAO_AnyTypeCode_Export void operator<<= (CORBA::Any_var &, ACE_OutputCDR::from_boolean);
00362 TAO_AnyTypeCode_Export void operator<<= (CORBA::Any_var &, CORBA::Any::from_char);
00363 TAO_AnyTypeCode_Export void operator<<= (CORBA::Any_var &, CORBA::Any::from_wchar);
00364 TAO_AnyTypeCode_Export void operator<<= (CORBA::Any_var &, CORBA::Any::from_octet);
00365 TAO_AnyTypeCode_Export void operator<<= (CORBA::Any_var &, CORBA::Any::from_string);
00366 TAO_AnyTypeCode_Export void operator<<= (CORBA::Any_var &, CORBA::Any::from_wstring);
00367
00368
00369
00370
00371 TAO_AnyTypeCode_Export CORBA::Boolean operator>>= (const CORBA::Any_var &,
00372 CORBA::Short &);
00373 TAO_AnyTypeCode_Export CORBA::Boolean operator>>= (const CORBA::Any_var &,
00374 CORBA::UShort &);
00375 TAO_AnyTypeCode_Export CORBA::Boolean operator>>= (const CORBA::Any_var &,
00376 CORBA::Long &);
00377 TAO_AnyTypeCode_Export CORBA::Boolean operator>>= (const CORBA::Any_var &,
00378 CORBA::ULong &);
00379 TAO_AnyTypeCode_Export CORBA::Boolean operator>>= (const CORBA::Any_var &,
00380 CORBA::LongLong &);
00381 TAO_AnyTypeCode_Export CORBA::Boolean operator>>= (const CORBA::Any_var &,
00382 CORBA::ULongLong &);
00383 TAO_AnyTypeCode_Export CORBA::Boolean operator>>= (const CORBA::Any_var &,
00384 CORBA::Float &);
00385 TAO_AnyTypeCode_Export CORBA::Boolean operator>>= (const CORBA::Any_var &,
00386 CORBA::Double &);
00387 TAO_AnyTypeCode_Export CORBA::Boolean operator>>= (const CORBA::Any_var &,
00388 CORBA::Any &);
00389 TAO_AnyTypeCode_Export CORBA::Boolean operator>>= (const CORBA::Any_var &,
00390 CORBA::TypeCode_ptr &);
00391 TAO_AnyTypeCode_Export CORBA::Boolean operator>>= (const CORBA::Any_var &,
00392 const char *&);
00393 TAO_AnyTypeCode_Export CORBA::Boolean operator>>= (const CORBA::Any_var &,
00394 const CORBA::WChar *&);
00395 TAO_AnyTypeCode_Export CORBA::Boolean operator>>= (const CORBA::Any_var &,
00396 CORBA::Any::to_boolean);
00397 TAO_AnyTypeCode_Export CORBA::Boolean operator>>= (const CORBA::Any_var &,
00398 CORBA::Any::to_octet);
00399 TAO_AnyTypeCode_Export CORBA::Boolean operator>>= (const CORBA::Any_var &,
00400 CORBA::Any::to_char);
00401 TAO_AnyTypeCode_Export CORBA::Boolean operator>>= (const CORBA::Any_var &,
00402 CORBA::Any::to_wchar);
00403 TAO_AnyTypeCode_Export CORBA::Boolean operator>>= (const CORBA::Any_var &,
00404 CORBA::Any::to_string);
00405 TAO_AnyTypeCode_Export CORBA::Boolean operator>>= (const CORBA::Any_var &,
00406 CORBA::Any::to_wstring);
00407 TAO_AnyTypeCode_Export CORBA::Boolean operator>>= (const CORBA::Any_var &,
00408 CORBA::Any::to_object);
00409
00410 TAO_END_VERSIONED_NAMESPACE_DECL
00411
00412 #endif
00413
00414 #include "ace/post.h"
00415
00416 #endif