00001 // -*- C++ -*- 00002 // 00003 // DynAny_i.h,v 1.17 2006/03/10 07:19:07 jtc Exp 00004 00005 //============================================================================= 00006 /** 00007 * @file DynAny_i.h 00008 * 00009 * DynAny_i.h,v 1.17 2006/03/10 07:19:07 jtc Exp 00010 * 00011 * @author Jeff Parsons <parsons@cs.wustl.edu> 00012 */ 00013 //============================================================================= 00014 00015 00016 #ifndef TAO_DYNANY_I_H 00017 #define TAO_DYNANY_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 /* ACE_LACKS_PRAGMA_ONCE */ 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 /* _MSC_VER */ 00033 00034 TAO_BEGIN_VERSIONED_NAMESPACE_DECL 00035 00036 /** 00037 * @class TAO_DynAny_i 00038 * 00039 * @brief Implementation of the basic Dynamic Any datatype. 00040 */ 00041 class TAO_DynamicAny_Export TAO_DynAny_i 00042 : public virtual DynamicAny::DynAny, 00043 public virtual TAO_DynCommon, 00044 public virtual TAO_Local_RefCounted_Object 00045 { 00046 public: 00047 /// Constructor. 00048 TAO_DynAny_i (void); 00049 00050 /// Destructor. 00051 ~TAO_DynAny_i (void); 00052 00053 /// Initialize using just a TypeCode 00054 void init (CORBA::TypeCode_ptr tc 00055 ACE_ENV_ARG_DECL); 00056 00057 /// Initialize using an Any. 00058 void init (const CORBA::Any& any 00059 ACE_ENV_ARG_DECL); 00060 00061 // = LocalObject methods. 00062 static TAO_DynAny_i *_narrow ( 00063 CORBA::Object_ptr obj 00064 ACE_ENV_ARG_DECL_WITH_DEFAULTS); 00065 00066 // = DynAny common functions not implemented in class TAO_DynCommon. 00067 00068 virtual void from_any ( 00069 const CORBA::Any & value 00070 ACE_ENV_ARG_DECL_WITH_DEFAULTS) 00071 00072 ACE_THROW_SPEC (( 00073 CORBA::SystemException, 00074 DynamicAny::DynAny::TypeMismatch, 00075 DynamicAny::DynAny::InvalidValue 00076 )); 00077 00078 virtual CORBA::Any * to_any ( 00079 ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) 00080 00081 ACE_THROW_SPEC (( 00082 CORBA::SystemException 00083 )); 00084 00085 virtual CORBA::Boolean equal ( 00086 DynamicAny::DynAny_ptr dyn_any 00087 ACE_ENV_ARG_DECL_WITH_DEFAULTS) 00088 00089 ACE_THROW_SPEC (( 00090 CORBA::SystemException 00091 )); 00092 00093 virtual void destroy ( 00094 ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) 00095 00096 ACE_THROW_SPEC (( 00097 CORBA::SystemException 00098 )); 00099 00100 virtual DynamicAny::DynAny_ptr current_component ( 00101 ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) 00102 00103 ACE_THROW_SPEC (( 00104 CORBA::SystemException, 00105 DynamicAny::DynAny::TypeMismatch 00106 )); 00107 00108 private: 00109 /// Check if the typecode is acceptable. 00110 void check_typecode (CORBA::TypeCode_ptr tc 00111 ACE_ENV_ARG_DECL); 00112 00113 /// Used when we are created from a typecode. 00114 void set_to_default_value (CORBA::TypeCode_ptr tc 00115 ACE_ENV_ARG_DECL); 00116 00117 /// Called by both versions of init(). 00118 void init_common (void); 00119 00120 // Use copy() or assign() instead of these. 00121 TAO_DynAny_i (const TAO_DynAny_i &src); 00122 TAO_DynAny_i &operator= (const TAO_DynAny_i &src); 00123 }; 00124 00125 TAO_END_VERSIONED_NAMESPACE_DECL 00126 00127 #if defined(_MSC_VER) 00128 # pragma warning(pop) 00129 #endif /* _MSC_VER */ 00130 00131 #include /**/ "ace/post.h" 00132 #endif /* TAO_DYNANY_I_H */