00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #ifndef TAO_ANY_BASIC_IMPL_H
00014 #define TAO_ANY_BASIC_IMPL_H
00015
00016 #include "ace/pre.h"
00017
00018 #include "tao/AnyTypeCode/Any_Impl.h"
00019
00020 #if !defined (ACE_LACKS_PRAGMA_ONCE)
00021 # pragma once
00022 #endif
00023
00024 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00025
00026 namespace CORBA
00027 {
00028 class Any;
00029 }
00030
00031 namespace TAO
00032 {
00033
00034
00035
00036
00037
00038
00039 class TAO_AnyTypeCode_Export Any_Basic_Impl : public Any_Impl
00040 {
00041 public:
00042 Any_Basic_Impl (CORBA::TypeCode_ptr,
00043 void *value);
00044
00045 virtual ~Any_Basic_Impl (void);
00046
00047 static void insert (CORBA::Any &,
00048 CORBA::TypeCode_ptr,
00049 const void *);
00050 static CORBA::Boolean extract (const CORBA::Any &,
00051 CORBA::TypeCode_ptr,
00052 void *);
00053
00054 virtual CORBA::Boolean marshal_value (TAO_OutputCDR &);
00055
00056 CORBA::Boolean demarshal_value (TAO_InputCDR &);
00057 CORBA::Boolean demarshal_value (TAO_InputCDR &,
00058 CORBA::Long);
00059
00060 virtual void _tao_decode (TAO_InputCDR &);
00061
00062 static Any_Basic_Impl *create_empty (CORBA::TypeCode_ptr);
00063
00064 private:
00065 static void assign_value (void *, Any_Basic_Impl *);
00066
00067 static void assign_value (void *,
00068 Any_Basic_Impl *,
00069 CORBA::Long tck);
00070 private:
00071 CORBA::Long kind_;
00072 union
00073 {
00074 CORBA::Short s;
00075 CORBA::UShort us;
00076 CORBA::Long l;
00077 CORBA::ULong ul;
00078 CORBA::Float f;
00079 CORBA::Double d;
00080 CORBA::Boolean b;
00081 CORBA::Char c;
00082 CORBA::Octet o;
00083 CORBA::LongLong ll;
00084 #if !defined (ACE_LACKS_LONGLONG_T) && !defined (ACE_LACKS_UNSIGNEDLONGLONG_T)
00085 CORBA::ULongLong ull;
00086 #elif defined (ACE_LACKS_UNSIGNEDLONGLONG_T)
00087
00088
00089 CORBA::LongLong ull;
00090 #endif
00091 CORBA::LongDouble ld;
00092 CORBA::WChar wc;
00093 }u_;
00094 };
00095 }
00096
00097 TAO_END_VERSIONED_NAMESPACE_DECL
00098
00099 #include "ace/post.h"
00100
00101 #endif