DynCommon.h

Go to the documentation of this file.
00001 // -*- C++ -*-
00002 
00003 //=============================================================================
00004 /**
00005  *  @file    DynCommon.h
00006  *
00007  *  DynCommon.h,v 1.18 2006/03/10 07:19:08 jtc Exp
00008  *
00009  *  @author Jeff Parsons <parsons@cs.wustl.edu>
00010  */
00011 //=============================================================================
00012 
00013 
00014 #ifndef TAO_DYNCOMMON_H
00015 #define TAO_DYNCOMMON_H
00016 #include /**/ "ace/pre.h"
00017 
00018 #include "tao/DynamicAny/DynamicAny.h"
00019 
00020 #if !defined (ACE_LACKS_PRAGMA_ONCE)
00021 # pragma once
00022 #endif /* ACE_LACKS_PRAGMA_ONCE */
00023 
00024 #if defined (_MSC_VER)
00025 # pragma warning(push)
00026 # pragma warning (disable:4250)
00027 #endif /* _MSC_VER */
00028 
00029 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00030 
00031 /**
00032  * @class TAO_DynCommon
00033  *
00034  * Contains most of the functionality common to all the
00035  * Dynamic Any implementation classes.
00036  */
00037 class TAO_DynamicAny_Export TAO_DynCommon
00038   : public virtual DynamicAny::DynAny
00039 {
00040 public:
00041   /// Constructor.
00042   TAO_DynCommon (void);
00043 
00044   /// Destructor.
00045   virtual ~TAO_DynCommon (void);
00046 
00047   // = Some functions common to all Dynamic Any types.
00048 
00049   virtual CORBA::TypeCode_ptr type (
00050       ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00051 
00052     ACE_THROW_SPEC ((
00053         CORBA::SystemException
00054       ));
00055 
00056   virtual void assign (
00057       DynamicAny::DynAny_ptr dyn_any
00058       ACE_ENV_ARG_DECL_WITH_DEFAULTS)
00059 
00060     ACE_THROW_SPEC ((
00061         CORBA::SystemException,
00062         DynamicAny::DynAny::TypeMismatch
00063       ));
00064 
00065   virtual void insert_boolean (
00066       CORBA::Boolean value
00067       ACE_ENV_ARG_DECL_WITH_DEFAULTS)
00068 
00069     ACE_THROW_SPEC ((
00070         CORBA::SystemException,
00071         DynamicAny::DynAny::TypeMismatch,
00072         DynamicAny::DynAny::InvalidValue
00073       ));
00074 
00075   virtual void insert_octet (
00076       CORBA::Octet value
00077       ACE_ENV_ARG_DECL_WITH_DEFAULTS)
00078 
00079     ACE_THROW_SPEC ((
00080         CORBA::SystemException,
00081         DynamicAny::DynAny::TypeMismatch,
00082         DynamicAny::DynAny::InvalidValue
00083       ));
00084 
00085   virtual void insert_char (
00086       CORBA::Char value
00087       ACE_ENV_ARG_DECL_WITH_DEFAULTS)
00088 
00089     ACE_THROW_SPEC ((
00090         CORBA::SystemException,
00091         DynamicAny::DynAny::TypeMismatch,
00092         DynamicAny::DynAny::InvalidValue
00093       ));
00094 
00095   virtual void insert_short (
00096       CORBA::Short value
00097       ACE_ENV_ARG_DECL_WITH_DEFAULTS)
00098 
00099     ACE_THROW_SPEC ((
00100         CORBA::SystemException,
00101         DynamicAny::DynAny::TypeMismatch,
00102         DynamicAny::DynAny::InvalidValue
00103       ));
00104 
00105   virtual void insert_ushort (
00106       CORBA::UShort value
00107       ACE_ENV_ARG_DECL_WITH_DEFAULTS)
00108 
00109     ACE_THROW_SPEC ((
00110         CORBA::SystemException,
00111         DynamicAny::DynAny::TypeMismatch,
00112         DynamicAny::DynAny::InvalidValue
00113       ));
00114 
00115   virtual void insert_long (
00116       CORBA::Long value
00117       ACE_ENV_ARG_DECL_WITH_DEFAULTS)
00118 
00119     ACE_THROW_SPEC ((
00120         CORBA::SystemException,
00121         DynamicAny::DynAny::TypeMismatch,
00122         DynamicAny::DynAny::InvalidValue
00123       ));
00124 
00125   virtual void insert_ulong (
00126       CORBA::ULong value
00127       ACE_ENV_ARG_DECL_WITH_DEFAULTS)
00128 
00129     ACE_THROW_SPEC ((
00130         CORBA::SystemException,
00131         DynamicAny::DynAny::TypeMismatch,
00132         DynamicAny::DynAny::InvalidValue
00133       ));
00134 
00135   virtual void insert_float (
00136       CORBA::Float value
00137       ACE_ENV_ARG_DECL_WITH_DEFAULTS)
00138 
00139     ACE_THROW_SPEC ((
00140         CORBA::SystemException,
00141         DynamicAny::DynAny::TypeMismatch,
00142         DynamicAny::DynAny::InvalidValue
00143       ));
00144 
00145   virtual void insert_double (
00146       CORBA::Double value
00147       ACE_ENV_ARG_DECL_WITH_DEFAULTS)
00148 
00149     ACE_THROW_SPEC ((
00150         CORBA::SystemException,
00151         DynamicAny::DynAny::TypeMismatch,
00152         DynamicAny::DynAny::InvalidValue
00153       ));
00154 
00155   virtual void insert_string (
00156       const char * value
00157       ACE_ENV_ARG_DECL_WITH_DEFAULTS)
00158 
00159     ACE_THROW_SPEC ((
00160         CORBA::SystemException,
00161         DynamicAny::DynAny::TypeMismatch,
00162         DynamicAny::DynAny::InvalidValue
00163       ));
00164 
00165   virtual void insert_reference (
00166       CORBA::Object_ptr value
00167       ACE_ENV_ARG_DECL_WITH_DEFAULTS)
00168 
00169     ACE_THROW_SPEC ((
00170         CORBA::SystemException,
00171         DynamicAny::DynAny::TypeMismatch,
00172         DynamicAny::DynAny::InvalidValue
00173       ));
00174 
00175   virtual void insert_typecode (
00176       CORBA::TypeCode_ptr value
00177       ACE_ENV_ARG_DECL_WITH_DEFAULTS)
00178 
00179     ACE_THROW_SPEC ((
00180         CORBA::SystemException,
00181         DynamicAny::DynAny::TypeMismatch,
00182         DynamicAny::DynAny::InvalidValue
00183       ));
00184 
00185   virtual void insert_longlong (
00186       CORBA::LongLong value
00187       ACE_ENV_ARG_DECL_WITH_DEFAULTS)
00188 
00189     ACE_THROW_SPEC ((
00190         CORBA::SystemException,
00191         DynamicAny::DynAny::TypeMismatch,
00192         DynamicAny::DynAny::InvalidValue
00193       ));
00194 
00195   virtual void insert_ulonglong (
00196       CORBA::ULongLong value
00197       ACE_ENV_ARG_DECL_WITH_DEFAULTS)
00198 
00199     ACE_THROW_SPEC ((
00200         CORBA::SystemException,
00201         DynamicAny::DynAny::TypeMismatch,
00202         DynamicAny::DynAny::InvalidValue
00203       ));
00204 
00205   virtual void insert_longdouble (
00206       CORBA::LongDouble value
00207       ACE_ENV_ARG_DECL_WITH_DEFAULTS)
00208 
00209     ACE_THROW_SPEC ((
00210         CORBA::SystemException,
00211         DynamicAny::DynAny::TypeMismatch,
00212         DynamicAny::DynAny::InvalidValue
00213       ));
00214 
00215   virtual void insert_wchar (
00216       CORBA::WChar value
00217       ACE_ENV_ARG_DECL_WITH_DEFAULTS)
00218 
00219     ACE_THROW_SPEC ((
00220         CORBA::SystemException,
00221         DynamicAny::DynAny::TypeMismatch,
00222         DynamicAny::DynAny::InvalidValue
00223       ));
00224 
00225   virtual void insert_wstring (
00226       const CORBA::WChar * value
00227       ACE_ENV_ARG_DECL_WITH_DEFAULTS)
00228 
00229     ACE_THROW_SPEC ((
00230         CORBA::SystemException,
00231         DynamicAny::DynAny::TypeMismatch,
00232         DynamicAny::DynAny::InvalidValue
00233       ));
00234 
00235   virtual void insert_any (
00236       const CORBA::Any & value
00237       ACE_ENV_ARG_DECL_WITH_DEFAULTS)
00238 
00239     ACE_THROW_SPEC ((
00240         CORBA::SystemException,
00241         DynamicAny::DynAny::TypeMismatch,
00242         DynamicAny::DynAny::InvalidValue
00243       ));
00244 
00245   virtual void insert_dyn_any (
00246       DynamicAny::DynAny_ptr value
00247       ACE_ENV_ARG_DECL_WITH_DEFAULTS)
00248 
00249     ACE_THROW_SPEC ((
00250         CORBA::SystemException,
00251         DynamicAny::DynAny::TypeMismatch,
00252         DynamicAny::DynAny::InvalidValue
00253       ));
00254 
00255   virtual void insert_val (
00256       CORBA::ValueBase * value
00257       ACE_ENV_ARG_DECL_WITH_DEFAULTS)
00258 
00259     ACE_THROW_SPEC ((
00260         CORBA::SystemException,
00261         DynamicAny::DynAny::TypeMismatch,
00262         DynamicAny::DynAny::InvalidValue
00263       ));
00264 
00265   virtual CORBA::Boolean get_boolean (
00266       ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00267 
00268     ACE_THROW_SPEC ((
00269         CORBA::SystemException,
00270         DynamicAny::DynAny::TypeMismatch,
00271         DynamicAny::DynAny::InvalidValue
00272       ));
00273 
00274   virtual CORBA::Octet get_octet (
00275       ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00276 
00277     ACE_THROW_SPEC ((
00278         CORBA::SystemException,
00279         DynamicAny::DynAny::TypeMismatch,
00280         DynamicAny::DynAny::InvalidValue
00281       ));
00282 
00283   virtual CORBA::Char get_char (
00284       ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00285 
00286     ACE_THROW_SPEC ((
00287         CORBA::SystemException,
00288         DynamicAny::DynAny::TypeMismatch,
00289         DynamicAny::DynAny::InvalidValue
00290       ));
00291 
00292   virtual CORBA::Short get_short (
00293       ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00294 
00295     ACE_THROW_SPEC ((
00296         CORBA::SystemException,
00297         DynamicAny::DynAny::TypeMismatch,
00298         DynamicAny::DynAny::InvalidValue
00299       ));
00300 
00301   virtual CORBA::UShort get_ushort (
00302       ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00303 
00304     ACE_THROW_SPEC ((
00305         CORBA::SystemException,
00306         DynamicAny::DynAny::TypeMismatch,
00307         DynamicAny::DynAny::InvalidValue
00308       ));
00309 
00310   virtual CORBA::Long get_long (
00311       ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00312 
00313     ACE_THROW_SPEC ((
00314         CORBA::SystemException,
00315         DynamicAny::DynAny::TypeMismatch,
00316         DynamicAny::DynAny::InvalidValue
00317       ));
00318 
00319   virtual CORBA::ULong get_ulong (
00320       ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00321 
00322     ACE_THROW_SPEC ((
00323         CORBA::SystemException,
00324         DynamicAny::DynAny::TypeMismatch,
00325         DynamicAny::DynAny::InvalidValue
00326       ));
00327 
00328   virtual CORBA::Float get_float (
00329       ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00330 
00331     ACE_THROW_SPEC ((
00332         CORBA::SystemException,
00333         DynamicAny::DynAny::TypeMismatch,
00334         DynamicAny::DynAny::InvalidValue
00335       ));
00336 
00337   virtual CORBA::Double get_double (
00338       ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00339 
00340     ACE_THROW_SPEC ((
00341         CORBA::SystemException,
00342         DynamicAny::DynAny::TypeMismatch,
00343         DynamicAny::DynAny::InvalidValue
00344       ));
00345 
00346   virtual char * get_string (
00347       ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00348 
00349     ACE_THROW_SPEC ((
00350         CORBA::SystemException,
00351         DynamicAny::DynAny::TypeMismatch,
00352         DynamicAny::DynAny::InvalidValue
00353       ));
00354 
00355   virtual CORBA::Object_ptr get_reference (
00356       ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00357 
00358     ACE_THROW_SPEC ((
00359         CORBA::SystemException,
00360         DynamicAny::DynAny::TypeMismatch,
00361         DynamicAny::DynAny::InvalidValue
00362       ));
00363 
00364   virtual CORBA::TypeCode_ptr get_typecode (
00365       ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00366 
00367     ACE_THROW_SPEC ((
00368         CORBA::SystemException,
00369         DynamicAny::DynAny::TypeMismatch,
00370         DynamicAny::DynAny::InvalidValue
00371       ));
00372 
00373   virtual CORBA::LongLong get_longlong (
00374       ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00375 
00376     ACE_THROW_SPEC ((
00377         CORBA::SystemException,
00378         DynamicAny::DynAny::TypeMismatch,
00379         DynamicAny::DynAny::InvalidValue
00380       ));
00381 
00382   virtual CORBA::ULongLong get_ulonglong (
00383       ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00384 
00385     ACE_THROW_SPEC ((
00386         CORBA::SystemException,
00387         DynamicAny::DynAny::TypeMismatch,
00388         DynamicAny::DynAny::InvalidValue
00389       ));
00390 
00391   virtual CORBA::LongDouble get_longdouble (
00392       ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00393 
00394     ACE_THROW_SPEC ((
00395         CORBA::SystemException,
00396         DynamicAny::DynAny::TypeMismatch,
00397         DynamicAny::DynAny::InvalidValue
00398       ));
00399 
00400   virtual CORBA::WChar get_wchar (
00401       ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00402 
00403     ACE_THROW_SPEC ((
00404         CORBA::SystemException,
00405         DynamicAny::DynAny::TypeMismatch,
00406         DynamicAny::DynAny::InvalidValue
00407       ));
00408 
00409   virtual CORBA::WChar * get_wstring (
00410       ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00411 
00412     ACE_THROW_SPEC ((
00413         CORBA::SystemException,
00414         DynamicAny::DynAny::TypeMismatch,
00415         DynamicAny::DynAny::InvalidValue
00416       ));
00417 
00418   virtual CORBA::Any * get_any (
00419       ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00420 
00421     ACE_THROW_SPEC ((
00422         CORBA::SystemException,
00423         DynamicAny::DynAny::TypeMismatch,
00424         DynamicAny::DynAny::InvalidValue
00425       ));
00426 
00427   virtual DynamicAny::DynAny_ptr get_dyn_any (
00428       ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00429 
00430     ACE_THROW_SPEC ((
00431         CORBA::SystemException,
00432         DynamicAny::DynAny::TypeMismatch,
00433         DynamicAny::DynAny::InvalidValue
00434       ));
00435 
00436   virtual CORBA::ValueBase * get_val (
00437       ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00438 
00439     ACE_THROW_SPEC ((
00440         CORBA::SystemException,
00441         DynamicAny::DynAny::TypeMismatch,
00442         DynamicAny::DynAny::InvalidValue
00443       ));
00444 
00445   virtual CORBA::Boolean seek (
00446       CORBA::Long index
00447       ACE_ENV_ARG_DECL_WITH_DEFAULTS)
00448 
00449     ACE_THROW_SPEC ((
00450         CORBA::SystemException
00451       ));
00452 
00453   virtual void rewind (
00454       ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00455 
00456     ACE_THROW_SPEC ((
00457         CORBA::SystemException
00458       ));
00459 
00460   virtual CORBA::Boolean next (
00461       ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00462 
00463     ACE_THROW_SPEC ((
00464         CORBA::SystemException
00465       ));
00466 
00467   virtual DynamicAny::DynAny_ptr copy (
00468       ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00469 
00470     ACE_THROW_SPEC ((
00471         CORBA::SystemException
00472       ));
00473 
00474   virtual CORBA::ULong component_count (
00475       ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00476 
00477     ACE_THROW_SPEC ((
00478         CORBA::SystemException
00479       ));
00480 
00481 protected:
00482   /// This sets one of two flags in this base class. CORBA 2.4.2
00483   /// requires that destroy() do nothing if it is called on
00484   /// the result of current_component(), the only non-deep-copying
00485   /// method in the Dynamic Any API. If the boolean arg below is 0,
00486   /// the call is from inside current_component(), and the flag
00487   /// ref_to_component_ is set. If the boolean arg is 1, the call
00488   /// is from inside destroy(), and the container_is_destroying_
00489   /// flag is set, overriding the first flag in the component's
00490   /// destroy() method.
00491   void set_flag (
00492       DynamicAny::DynAny_ptr component,
00493       CORBA::Boolean destroying
00494       ACE_ENV_ARG_DECL
00495     )
00496     ACE_THROW_SPEC ((
00497         CORBA::SystemException
00498       ));
00499 
00500 protected:
00501   /// Were we created by current_component()?
00502   CORBA::Boolean ref_to_component_;
00503 
00504   /// Flag to let destroy() call by container override the flag above.
00505   CORBA::Boolean container_is_destroying_;
00506 
00507   /// Do we contain other Dynamic Anys?
00508   CORBA::Boolean has_components_;
00509 
00510   /// Has destroy() been called on us yet?
00511   CORBA::Boolean destroyed_;
00512 
00513   /// Slot of the current component (if any).
00514   CORBA::Long current_position_;
00515 
00516   /// Number of components, as defined by CORBA 2.4.2.
00517   CORBA::ULong component_count_;
00518 
00519   /// Holder for our type code.
00520   CORBA::TypeCode_var type_;
00521 
00522   /// Gets a value only for basic types, but used in insert_*
00523   /// and get_*, defined in this base class.
00524   CORBA::Any any_;
00525 
00526 private:
00527   // Utility functions used by insert_* and get_*.
00528 
00529   DynamicAny::DynAny_ptr check_component (ACE_ENV_SINGLE_ARG_DECL)
00530     ACE_THROW_SPEC ((
00531         CORBA::SystemException,
00532         DynamicAny::DynAny::TypeMismatch,
00533         DynamicAny::DynAny::InvalidValue
00534       ));
00535 
00536   void check_type (CORBA::TypeCode_ptr tc
00537                    ACE_ENV_ARG_DECL)
00538     ACE_THROW_SPEC ((
00539         CORBA::SystemException,
00540         DynamicAny::DynAny::TypeMismatch
00541       ));
00542 
00543   CORBA::TypeCode_ptr check_type_and_unalias (CORBA::TypeCode_ptr tc
00544                                               ACE_ENV_ARG_DECL)
00545     ACE_THROW_SPEC ((
00546         CORBA::SystemException,
00547         DynamicAny::DynAny::TypeMismatch
00548       ));
00549 };
00550 
00551 TAO_END_VERSIONED_NAMESPACE_DECL
00552 
00553 #if defined(_MSC_VER)
00554 # pragma warning(pop)
00555 #endif /* _MSC_VER */
00556 
00557 #include /**/ "ace/post.h"
00558 #endif /* TAO_DYNCOMMON_H */

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