DynStruct_i.h

Go to the documentation of this file.
00001 // -*- C++ -*-
00002 //
00003 // DynStruct_i.h,v 1.18 2006/03/10 07:19:08 jtc Exp
00004 
00005 //=============================================================================
00006 /**
00007  *  @file    DynStruct_i.h
00008  *
00009  *  DynStruct_i.h,v 1.18 2006/03/10 07:19:08 jtc Exp
00010  *
00011  *  @author Jeff Parsons <parsons@cs.wustl.edu>
00012  */
00013 //=============================================================================
00014 
00015 
00016 #ifndef TAO_DYNSTRUCT_I_H
00017 #define TAO_DYNSTRUCT_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 #include "ace/Containers.h"
00029 
00030 #if defined (_MSC_VER)
00031 # pragma warning(push)
00032 # pragma warning (disable:4250)
00033 #endif /* _MSC_VER */
00034 
00035 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00036 
00037 /**
00038  * @class TAO_DynStruct_i
00039  *
00040  * Implementation of Dynamic Any type for Structs
00041  */
00042 class TAO_DynamicAny_Export TAO_DynStruct_i
00043   : public virtual DynamicAny::DynStruct,
00044     public virtual TAO_DynCommon,
00045     public virtual TAO_Local_RefCounted_Object
00046 {
00047 public:
00048   /// Constructor.
00049   TAO_DynStruct_i (void);
00050 
00051   /// Destructor.
00052   ~TAO_DynStruct_i (void);
00053 
00054   /// Initialize using just a TypeCode.
00055   void init (CORBA::TypeCode_ptr tc
00056              ACE_ENV_ARG_DECL);
00057 
00058   /// Initialize using an Any.
00059   void init (const CORBA::Any& any
00060              ACE_ENV_ARG_DECL);
00061 
00062   // = LocalObject methods.
00063   static TAO_DynStruct_i *_narrow (
00064       CORBA::Object_ptr obj
00065       ACE_ENV_ARG_DECL_WITH_DEFAULTS);
00066 
00067   // = Functions specific to DynStruct.
00068 
00069   virtual DynamicAny::FieldName current_member_name (
00070       ACE_ENV_SINGLE_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::TCKind current_member_kind (
00079       ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00080 
00081     ACE_THROW_SPEC ((
00082         CORBA::SystemException,
00083         DynamicAny::DynAny::TypeMismatch,
00084         DynamicAny::DynAny::InvalidValue
00085       ));
00086 
00087   virtual DynamicAny::NameValuePairSeq *get_members (
00088       ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00089 
00090     ACE_THROW_SPEC ((
00091         CORBA::SystemException
00092       ));
00093 
00094   virtual void set_members (
00095       const DynamicAny::NameValuePairSeq& value
00096       ACE_ENV_ARG_DECL_WITH_DEFAULTS)
00097 
00098     ACE_THROW_SPEC ((
00099         CORBA::SystemException,
00100         DynamicAny::DynAny::TypeMismatch,
00101         DynamicAny::DynAny::InvalidValue
00102       ));
00103 
00104   virtual DynamicAny::NameDynAnyPairSeq * get_members_as_dyn_any (
00105       ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00106 
00107     ACE_THROW_SPEC ((
00108         CORBA::SystemException
00109       ));
00110 
00111   virtual void set_members_as_dyn_any (
00112       const DynamicAny::NameDynAnyPairSeq & value
00113       ACE_ENV_ARG_DECL_WITH_DEFAULTS)
00114 
00115     ACE_THROW_SPEC ((
00116         CORBA::SystemException,
00117         DynamicAny::DynAny::TypeMismatch,
00118         DynamicAny::DynAny::InvalidValue
00119       ));
00120 
00121   // = DynAny common functions not implemented in class TAO_DynCommon.
00122 
00123   virtual void from_any (
00124       const CORBA::Any & value
00125       ACE_ENV_ARG_DECL_WITH_DEFAULTS)
00126 
00127     ACE_THROW_SPEC ((
00128         CORBA::SystemException,
00129         DynamicAny::DynAny::TypeMismatch,
00130         DynamicAny::DynAny::InvalidValue
00131       ));
00132 
00133   virtual CORBA::Any * to_any (
00134       ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00135 
00136     ACE_THROW_SPEC ((
00137         CORBA::SystemException
00138       ));
00139 
00140   virtual CORBA::Boolean equal (
00141       DynamicAny::DynAny_ptr dyn_any
00142       ACE_ENV_ARG_DECL_WITH_DEFAULTS)
00143 
00144     ACE_THROW_SPEC ((
00145         CORBA::SystemException
00146       ));
00147 
00148   virtual void destroy (
00149       ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00150 
00151     ACE_THROW_SPEC ((
00152         CORBA::SystemException
00153       ));
00154 
00155   virtual DynamicAny::DynAny_ptr current_component (
00156       ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00157 
00158     ACE_THROW_SPEC ((
00159       CORBA::SystemException,
00160       DynamicAny::DynAny::TypeMismatch
00161     ));
00162 
00163 private:
00164   /// Check if the typecode is acceptable.
00165   void check_typecode (CORBA::TypeCode_ptr tc
00166                        ACE_ENV_ARG_DECL);
00167 
00168   /// Code common to the constructor from an Any arg and the member
00169   /// function from_any().
00170   void set_from_any (const CORBA::Any &any
00171                      ACE_ENV_ARG_DECL);
00172 
00173   /// Called by both versions of init().
00174   void init_common (void);
00175 
00176   // = Use copy() or assign() instead of these.
00177   TAO_DynStruct_i (const TAO_DynStruct_i &src);
00178   TAO_DynStruct_i &operator= (const TAO_DynStruct_i &src);
00179 
00180 private:
00181   /// Each component is also a DynAny.
00182   ACE_Array_Base<DynamicAny::DynAny_var> da_members_;
00183 };
00184 
00185 TAO_END_VERSIONED_NAMESPACE_DECL
00186 
00187 #if defined(_MSC_VER)
00188 # pragma warning(pop)
00189 #endif /* _MSC_VER */
00190 
00191 #include /**/ "ace/post.h"
00192 #endif /* TAO_DYNSTRUCT_I_H */

Generated on Thu Nov 9 13:02:09 2006 for TAO_DynamicAny by doxygen 1.3.6