summaryrefslogtreecommitdiff
path: root/TAO/tao/Valuetype/ValueBase.h
diff options
context:
space:
mode:
authornobody <nobody@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2005-06-08 13:46:20 +0000
committernobody <nobody@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2005-06-08 13:46:20 +0000
commit14c6bbb9b3030abba9f0e4b38378f6a3b0d1c9cd (patch)
treeabc0c527b8245a58e54912fd754a3b7af610493e /TAO/tao/Valuetype/ValueBase.h
parentae441d3b2159370e6ad339365c96aca7718842b2 (diff)
downloadATCD-14c6bbb9b3030abba9f0e4b38378f6a3b0d1c9cd.tar.gz
This commit was manufactured by cvs2svn to create tag 'ACE-5_4_6'.ACE-5_4_6
Diffstat (limited to 'TAO/tao/Valuetype/ValueBase.h')
-rw-r--r--TAO/tao/Valuetype/ValueBase.h242
1 files changed, 0 insertions, 242 deletions
diff --git a/TAO/tao/Valuetype/ValueBase.h b/TAO/tao/Valuetype/ValueBase.h
deleted file mode 100644
index 16470ba5c03..00000000000
--- a/TAO/tao/Valuetype/ValueBase.h
+++ /dev/null
@@ -1,242 +0,0 @@
-// -*- C++ -*-
-
-//=============================================================================
-/**
- * @file ValueBase.h
- *
- * $Id$
- *
- * @author Torsten Kuepper <kuepper2@lfa.uni-wuppertal.de>
- */
-//=============================================================================
-
-#ifndef TAO_VALUEBASE_H
-#define TAO_VALUEBASE_H
-
-#include /**/ "ace/pre.h"
-
-#include "tao/Valuetype/valuetype_export.h"
-#include "tao/orbconf.h"
-
-#if !defined (ACE_LACKS_PRAGMA_ONCE)
-# pragma once
-#endif /* ACE_LACKS_PRAGMA_ONCE */
-
-#include "tao/Valuetype/Value_CORBA_methods.h"
-#include "tao/Valuetype/Value_VarOut_T.h"
-
-#include "tao/Object_Argument_T.h"
-#include "tao/Arg_Traits_T.h"
-
-#include "ace/Basic_Types.h"
-#include "ace/CORBA_macros.h"
-#include "ace/Synch_Traits.h"
-#include "ace/Thread_Mutex.h"
-#include "ace/Null_Mutex.h"
-
-#if defined (TAO_EXPORT_MACRO)
-#undef TAO_EXPORT_MACRO
-#endif
-#define TAO_EXPORT_MACRO TAO_Valuetype_Export
-
-namespace CORBA
-{
- class ValueFactoryBase;
- typedef ValueFactoryBase *ValueFactory;
-
- class ValueBase;
-
- typedef TAO_Value_Var_T<ValueBase> ValueBase_var;
- typedef TAO_Value_Out_T<ValueBase> ValueBase_out;
-
- /**
- * @class ValueBase
- *
- * @brief Abstract baseclass for Valuetypes
- *
- * @see CORBA 2.3 - Section 20.17.5
- */
- class TAO_Valuetype_Export ValueBase
- {
- public:
- typedef ValueBase* _ptr_type;
- typedef ValueBase_var _var_type;
-
- // reference counting
- /// %! virtual CORBA::ValueBase* _copy_value (void) = 0;
- virtual void _add_ref (void) = 0;
- virtual void _remove_ref (void) = 0;
- virtual CORBA::ULong _refcount_value (void) = 0;
-
- // dynamic casting
- static CORBA::ValueBase* _downcast (CORBA::ValueBase *);
-
- /// Used in the implementation of CORBA::Any
- static void _tao_any_destructor (void *);
-
- /// TAO extension
- virtual const char* _tao_obv_repository_id (void) const = 0;
-
- // TAO internal --------------------------
-
- /// Marshal a valuetype (see operator<< in tao_idl generated file
- /// how it is called)
- static CORBA::Boolean _tao_marshal (TAO_OutputCDR &strm,
- const ValueBase *_this,
- ptrdiff_t formal_type_id = 0);
-
- /// Unmarshal a valuetype, if formal type is a pointer to
- /// ValueBase
- static CORBA::Boolean _tao_unmarshal (TAO_InputCDR &strm,
- ValueBase *&new_object);
-
- // static CORBA::Boolean
- // T::_tao_unmarshal (TAO_InputCDR &, ValueBase *&_this)
- // is typespecific for valuetype T and generated from tao_idl
- // Use this for unmarshaling.
-
- /// Both used internally and are called from T::_tao_unmarshal ()
- static CORBA::Boolean _tao_unmarshal_pre (TAO_InputCDR &strm,
- ValueFactory &,
- ValueBase *&,
- const char * const repo_id);
- CORBA::Boolean _tao_unmarshal_post (TAO_InputCDR &strm);
-
- public: // otherwise these cannot be called from a static function
-
- /// during marshal jump to the most derived part
- virtual CORBA::Boolean _tao_marshal_v (TAO_OutputCDR &) const = 0;
-
- /// called after obtaining the fresh object from create_for_unmarshal ()
- virtual CORBA::Boolean _tao_unmarshal_v (TAO_InputCDR &) = 0;
-
- protected:
- ValueBase (void);
- ValueBase (const ValueBase&);
- virtual ~ValueBase (void);
-
- private:
- ValueBase & operator= (const ValueBase &);
-
-#ifdef SUN_CC_HAS_PVFC_BUG
- // Need ugly fix for sun cc "pure virtual function called" bug.
- private:
- unsigned long tao_sun_cc_pvfc_bug_fix_;
-
-#endif /* SUN_CC_HAS_PVFC_BUG */
-
- }; // ValueBase
-
- /// Valuetype-related type codes.
- extern TAO_Valuetype_Export TypeCode_ptr const _tc_ValueBase;
- extern TAO_Valuetype_Export TypeCode_ptr const _tc_EventBase;
- extern TAO_Valuetype_Export TypeCode_ptr const _tc_ValueModifier;
-
- /**
- * @class DefaultValueRefCountBase
- *
- * @brief Default mix-in for reference count of a valuetype.
- *
- * Default mix-in for reference count of a valuetype.
- */
- class TAO_Valuetype_Export DefaultValueRefCountBase
- : public virtual ValueBase
- {
- public:
- virtual void _add_ref (void);
- virtual void _remove_ref (void);
- virtual CORBA::ULong _refcount_value (void);
-
- /// The _tao variants are inline for fast access from T_var
- /// (if valuetype T is compiled with optimization for that.) %! (todo)
- void _tao_add_ref (void);
- void _tao_remove_ref (void);
- CORBA::ULong _tao_refcount_value (void);
-
- protected:
- DefaultValueRefCountBase (void);
- DefaultValueRefCountBase (const DefaultValueRefCountBase&);
- virtual ~DefaultValueRefCountBase ();
-
- private:
- void operator= (const DefaultValueRefCountBase &);
-
- private: // data
- CORBA::ULong _tao_reference_count_;
- ACE_SYNCH_MUTEX _tao_reference_count_lock_;
- }; // DefaultValueRefCountBase
-
- // which lock has the lowest memory overhead ?
- // %! todo refcountbase w/o locking (now memory overhead)
- // $! todo: debug aids for refcounts
-
-} // End CORBA namespace
-
-/**
- * @namespace TAO_OBV_GIOP_Flags
- *
- * @brief TAO_OBV_GIOP_Flags
- *
- * @see CORBA 2.3 -- Section 15.3.4
- */
-namespace TAO_OBV_GIOP_Flags
-{
- const CORBA::ULong Value_tag_base = 0x7fffff00L;
- const CORBA::ULong Value_tag_sigbits = 0xffffff00L;
- const CORBA::ULong Codebase_url = 1;
- const CORBA::ULong Type_info_sigbits = 0x00000006L;
- const CORBA::ULong Type_info_none = 0;
- const CORBA::ULong Type_info_single = 2;
- const CORBA::ULong Type_info_list = 6;
-
- TAO_NAMESPACE_INLINE_FUNCTION CORBA::Boolean is_null_ref (CORBA::ULong);
- TAO_NAMESPACE_INLINE_FUNCTION CORBA::Boolean is_value_tag (CORBA::ULong);
- TAO_NAMESPACE_INLINE_FUNCTION CORBA::Boolean has_codebase_url (CORBA::ULong);
- TAO_NAMESPACE_INLINE_FUNCTION CORBA::Boolean has_no_type_info (CORBA::ULong);
- TAO_NAMESPACE_INLINE_FUNCTION CORBA::Boolean has_single_type_info (CORBA::ULong);
- TAO_NAMESPACE_INLINE_FUNCTION CORBA::Boolean has_list_type_info (CORBA::ULong);
- TAO_NAMESPACE_INLINE_FUNCTION CORBA::Boolean is_chunked (CORBA::ULong);
- TAO_NAMESPACE_INLINE_FUNCTION CORBA::Boolean is_indirection_tag (CORBA::ULong);
- TAO_NAMESPACE_INLINE_FUNCTION CORBA::Boolean is_indirection (CORBA::ULong);
- TAO_NAMESPACE_INLINE_FUNCTION CORBA::Boolean is_block_size (CORBA::ULong);
- TAO_NAMESPACE_INLINE_FUNCTION CORBA::Boolean is_end_tag (CORBA::ULong);
-}
-
-TAO_Valuetype_Export CORBA::Boolean
-operator<< (TAO_OutputCDR&, const CORBA::ValueBase *);
-
-TAO_Valuetype_Export CORBA::Boolean
-operator>> (TAO_InputCDR&, CORBA::ValueBase *&);
-
-/// Used in generated code if CORBA::ValueBase is an argument or return type.
-namespace TAO
-{
- template<>
- class TAO_Valuetype_Export Arg_Traits<CORBA::ValueBase>
- : public Object_Arg_Traits_T<CORBA::ValueBase *,
- CORBA::ValueBase_var,
- CORBA::ValueBase_out,
- TAO::Value_Traits<CORBA::ValueBase> >
- {
- };
-
-
- template<>
- struct TAO_Valuetype_Export Value_Traits<CORBA::ValueBase>
- {
- static void add_ref (CORBA::ValueBase *);
- static void remove_ref (CORBA::ValueBase *);
-
- // For INOUT value type arguments, so they can use the same set
- // of arg classes as interfaces.
- static void release (CORBA::ValueBase *);
- };
-}
-
-#if defined (__ACE_INLINE__)
-# include "ValueBase.inl"
-#endif /* __ACE_INLINE__*/
-
-#include /**/ "ace/post.h"
-
-#endif /* TAO_VALUEBASE_H */