00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef TAO_DYNUNION_I_H
00017 #define TAO_DYNUNION_I_H
00018 #include "ace/pre.h"
00019
00020 #include "tao/DynamicAny/DynamicAny.h"
00021
00022 #if !defined (ACE_LACKS_PRAGMA_ONCE)
00023 # pragma once
00024 #endif
00025
00026 #include "tao/DynamicAny/DynCommon.h"
00027 #include "tao/LocalObject.h"
00028
00029 #if defined (_MSC_VER)
00030 # pragma warning(push)
00031 # pragma warning (disable:4250)
00032 #endif
00033
00034 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00035
00036
00037
00038
00039
00040
00041 class TAO_DynamicAny_Export TAO_DynUnion_i
00042 : public virtual DynamicAny::DynUnion,
00043 public virtual TAO_DynCommon,
00044 public virtual TAO_Local_RefCounted_Object
00045 {
00046 public:
00047
00048 TAO_DynUnion_i (void);
00049
00050
00051 ~TAO_DynUnion_i (void);
00052
00053
00054 void init (const CORBA::Any& any ACE_ENV_ARG_DECL);
00055
00056
00057 void init (CORBA::TypeCode_ptr tc ACE_ENV_ARG_DECL);
00058
00059
00060 static TAO_DynUnion_i *_narrow (
00061 CORBA::Object_ptr obj
00062 ACE_ENV_ARG_DECL_WITH_DEFAULTS);
00063
00064
00065
00066 virtual DynamicAny::DynAny_ptr get_discriminator (
00067 ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00068
00069 ACE_THROW_SPEC ((
00070 CORBA::SystemException
00071 ));
00072
00073 virtual void set_discriminator (
00074 DynamicAny::DynAny_ptr d
00075 ACE_ENV_ARG_DECL_WITH_DEFAULTS)
00076
00077 ACE_THROW_SPEC ((
00078 CORBA::SystemException,
00079 DynamicAny::DynAny::TypeMismatch
00080 ));
00081
00082 virtual void set_to_default_member (
00083 ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00084
00085 ACE_THROW_SPEC ((
00086 CORBA::SystemException,
00087 DynamicAny::DynAny::TypeMismatch
00088 ));
00089
00090 virtual void set_to_no_active_member (
00091 ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00092
00093 ACE_THROW_SPEC ((
00094 CORBA::SystemException,
00095 DynamicAny::DynAny::TypeMismatch
00096 ));
00097
00098 virtual CORBA::Boolean has_no_active_member (
00099 ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00100
00101 ACE_THROW_SPEC ((
00102 CORBA::SystemException
00103 ));
00104
00105 virtual CORBA::TCKind discriminator_kind (
00106 ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00107
00108 ACE_THROW_SPEC ((
00109 CORBA::SystemException
00110 ));
00111
00112 virtual DynamicAny::DynAny_ptr member (
00113 ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00114
00115 ACE_THROW_SPEC ((
00116 CORBA::SystemException,
00117 DynamicAny::DynAny::InvalidValue
00118 ));
00119
00120 virtual char * member_name (
00121 ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00122
00123 ACE_THROW_SPEC ((
00124 CORBA::SystemException,
00125 DynamicAny::DynAny::InvalidValue
00126 ));
00127
00128 virtual CORBA::TCKind member_kind (
00129 ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00130
00131 ACE_THROW_SPEC ((
00132 CORBA::SystemException,
00133 DynamicAny::DynAny::InvalidValue
00134 ));
00135
00136
00137
00138 virtual void from_any (
00139 const CORBA::Any & value
00140 ACE_ENV_ARG_DECL_WITH_DEFAULTS)
00141
00142 ACE_THROW_SPEC ((
00143 CORBA::SystemException,
00144 DynamicAny::DynAny::TypeMismatch,
00145 DynamicAny::DynAny::InvalidValue
00146 ));
00147
00148 virtual CORBA::Any * to_any (
00149 ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00150
00151 ACE_THROW_SPEC ((
00152 CORBA::SystemException
00153 ));
00154
00155 virtual CORBA::Boolean equal (
00156 DynamicAny::DynAny_ptr dyn_any
00157 ACE_ENV_ARG_DECL_WITH_DEFAULTS)
00158
00159 ACE_THROW_SPEC ((
00160 CORBA::SystemException
00161 ));
00162
00163 virtual void destroy (
00164 ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00165
00166 ACE_THROW_SPEC ((
00167 CORBA::SystemException
00168 ));
00169
00170 virtual DynamicAny::DynAny_ptr current_component (
00171 ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00172
00173 ACE_THROW_SPEC ((
00174 CORBA::SystemException,
00175 DynamicAny::DynAny::TypeMismatch
00176 ));
00177
00178 private:
00179
00180
00181 void set_from_any (const CORBA::Any &any,
00182 CORBA::Boolean from_factory
00183 ACE_ENV_ARG_DECL_WITH_DEFAULTS)
00184 ACE_THROW_SPEC ((
00185 CORBA::SystemException,
00186 DynamicAny::DynAny::TypeMismatch,
00187 DynamicAny::DynAnyFactory::InconsistentTypeCode
00188 ));
00189
00190
00191 void init_common (void);
00192
00193
00194 CORBA::Boolean label_match (const CORBA::Any &my_any,
00195 const CORBA::Any &other_any
00196 ACE_ENV_ARG_DECL_WITH_DEFAULTS)
00197 ACE_THROW_SPEC ((
00198 CORBA::SystemException
00199 ));
00200
00201
00202 TAO_DynUnion_i (const TAO_DynUnion_i &src);
00203 TAO_DynUnion_i &operator= (const TAO_DynUnion_i &src);
00204
00205 private:
00206
00207 DynamicAny::DynAny_var member_;
00208 DynamicAny::DynAny_var discriminator_;
00209
00210
00211 CORBA::ULong member_slot_;
00212 };
00213
00214 TAO_END_VERSIONED_NAMESPACE_DECL
00215
00216 #if defined(_MSC_VER)
00217 # pragma warning(pop)
00218 #endif
00219
00220 #include "ace/post.h"
00221 #endif