diff options
author | bala <balanatarajan@users.noreply.github.com> | 2003-10-25 14:14:29 +0000 |
---|---|---|
committer | bala <balanatarajan@users.noreply.github.com> | 2003-10-25 14:14:29 +0000 |
commit | 6e709c5a5e2cd8791f638f5a8333fc30257a6669 (patch) | |
tree | 66b761eb4508d60f48d9f27066eb5f6736406253 | |
parent | b4fc474c68da5b22ac89d954ef00c52ebe8c2d46 (diff) | |
download | ATCD-6e709c5a5e2cd8791f638f5a8333fc30257a6669.tar.gz |
ChangeLogTag:Sat Oct 25 09:15:21 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu>
-rw-r--r-- | TAO/ChangeLog_ref | 24 | ||||
-rw-r--r-- | TAO/tao/Any.cpp | 46 | ||||
-rw-r--r-- | TAO/tao/Object.cpp | 7 | ||||
-rw-r--r-- | TAO/tao/Policy.pidl | 4 | ||||
-rw-r--r-- | TAO/tao/PolicyC.cpp | 10 | ||||
-rw-r--r-- | TAO/tao/Policy_ForwardC.cpp | 2 | ||||
-rw-r--r-- | TAO/tao/PortableInterceptorC.cpp | 6 | ||||
-rw-r--r-- | TAO/tao/PortableServer/PortableServerC.cpp | 5 | ||||
-rw-r--r-- | TAO/tao/Typecode.cpp | 54 | ||||
-rw-r--r-- | TAO/tao/Valuetype/ValueBase.cpp | 32 | ||||
-rw-r--r-- | TAO/tao/Valuetype/ValueBase.h | 16 | ||||
-rw-r--r-- | TAO/tao/Valuetype/ValueFactory.cpp | 31 | ||||
-rw-r--r-- | TAO/tao/Valuetype/ValueFactory.h | 23 |
13 files changed, 204 insertions, 56 deletions
diff --git a/TAO/ChangeLog_ref b/TAO/ChangeLog_ref index 4f663f28f78..33a205aab06 100644 --- a/TAO/ChangeLog_ref +++ b/TAO/ChangeLog_ref @@ -1,3 +1,27 @@ +Sat Oct 25 09:15:21 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu> + + * tao/Any.cpp: + * tao/Object.cpp: + * tao/PolicyC.cpp: + * tao/Policy_ForwardC.cpp: + * tao/PortableInterceptorC.cpp: + * tao/Typecode.cpp: + * tao/PortableServer/PortableServerC.cpp: + + More explicit template instantiations. + + * tao/Valuetype/ValueBase.cpp: + * tao/Valuetype/ValueBase.h: + * tao/Valuetype/ValueFactory.cpp: + * tao/Valuetype/ValueFactory.h: + + Template specializations for Value_Traits<ValueBase> and + Value_Traits<ValueFactoryBase>. + + * tao/Policy.pidl: + + Fixed command line arguments. + Sat Oct 25 000:28:02 2003 Jeff Parsons <j.parsons@vanderbilt.edu> * tao/Any.cpp: diff --git a/TAO/tao/Any.cpp b/TAO/tao/Any.cpp index 904116eed11..81282d8ecdc 100644 --- a/TAO/tao/Any.cpp +++ b/TAO/tao/Any.cpp @@ -10,6 +10,11 @@ #include "ace/Log_Msg.h" +#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) \ + || defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) +#include "Var_Size_Argument_T.h" +#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ + #if !defined (__ACE_INLINE__) # include "tao/Any.i" #endif /* ! __ACE_INLINE__ */ @@ -777,13 +782,14 @@ template class TAO::Arg_Traits<CORBA::Any>; template class TAO::Var_Size_Arg_Traits_T<CORBA::Any, CORBA::Any_var, CORBA::Any_out>; -template class TAO::In_Var_Size_Argument_T<CORBA::Any>; -template class TAO::Inout_Var_Size_Argument_T<CORBA::Any>; -template class TAO::Out_Var_Size_Argument_T<CORBA::Any, - CORBA::Any_out>; -template class TAO::Ret_Var_Size_Argument_T<CORBA::Any, - CORBA::Any_var>; +template TAO::In_Var_Size_Argument_T<CORBA::Any>; +template TAO::Out_Var_Size_Argument_T<CORBA::Any, CORBA::Any_out>; +template TAO::Inout_Var_Size_Argument_T<CORBA::Any>; +template TAO::Ret_Var_Size_Argument_T<CORBA::Any, CORBA::Any_var>; + +#if 0 +// Needed in the future.. template class TAO::SArg_Traits<CORBA::Any>; template class TAO::Var_Size_SArg_Traits_T<CORBA::Any, CORBA::Any_var, @@ -794,18 +800,19 @@ template class TAO::Out_Var_Size_SArgument_T<CORBA::Any, CORBA::Any_var>; template class TAO::Ret_Var_Size_SArgument_T<CORBA::Any, CORBA::Any_var>; +#endif /*if 0*/ #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -#pragma instantiate TAO::Any_Special_Impl_T< - char, - CORBA::Any::from_string, - CORBA::Any::to_string +#pragma instantiate TAO::Any_Special_Impl_T< \ + char, \ + CORBA::Any::from_string, \ + CORBA::Any::to_string \ > -#pragma instantiate TAO::Any_Special_Impl_T< - CORBA::WChar, - CORBA::Any::from_wstring, - CORBA::Any::to_wstring +#pragma instantiate TAO::Any_Special_Impl_T< \ + CORBA::WChar, \ + CORBA::Any::from_wstring, \ + CORBA::Any::to_wstring \ > #pragma instantiate TAO::Any_Dual_Impl_T<CORBA::Any> @@ -817,6 +824,9 @@ template class TAO::Ret_Var_Size_SArgument_T<CORBA::Any, #pragma instantiate TAO::Arg_Traits<CORBA::Any> #pragma instantiate TAO::Var_Size_Arg_Traits_T<CORBA::Any, \ + CORBA::Any_var, \ + CORBA::Any_out> +#pragma instantiate TAO::Var_Size_Arg_Traits_T<CORBA::Any, \ CORBA::Any_var, \ CORBA::Any_out> #pragma instantiate TAO::In_Var_Size_Argument_T<CORBA::Any> @@ -837,4 +847,12 @@ template class TAO::Ret_Var_Size_SArgument_T<CORBA::Any, #pragma instantiate TAO::Ret_Var_Size_SArgument_T<CORBA::Any, \ CORBA::Any_var> +#pragma instantiate TAO::In_Var_Size_Argument_T<CORBA::Any> + +#pragma instantiate TAO::Out_Var_Size_Argument_T<CORBA::Any, \ + CORBA::Any_out> +#pragma instantiate TAO::Inout_Var_Size_Argument_T<CORBA::Any> +#pragma instantiate TAO::Ret_Var_Size_Argument_T<CORBA::Any, \ + CORBA::Any_var> + #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/tao/Object.cpp b/TAO/tao/Object.cpp index 62158c09569..2868e27e5fa 100644 --- a/TAO/tao/Object.cpp +++ b/TAO/tao/Object.cpp @@ -998,13 +998,13 @@ template class TAO_Pseudo_Var_T<CORBA::Object>; template class TAO_Pseudo_Out_T<CORBA::Object, CORBA::Object_var>; template class TAO::Arg_Traits<CORBA::Object>; -template class +template class TAO::Object_Arg_Traits_T<CORBA::Object_ptr, CORBA::Object_var, CORBA::Object_out, TAO::Objref_Traits<CORBA::Object> >; template class TAO::In_Object_Argument_T<CORBA::Object_ptr>; -template class +template class TAO::Inout_Object_Argument_T<CORBA::Object_ptr, TAO::Objref_Traits<CORBA::Object> >; template class TAO::Out_Object_Argument_T<CORBA::Object_ptr, @@ -1012,6 +1012,8 @@ template class TAO::Out_Object_Argument_T<CORBA::Object_ptr, template class TAO::Ret_Object_Argument_T<CORBA::Object_ptr, CORBA::Object_var>; +#if 0 +// Needed in the future template class TAO::SArg_Traits<CORBA::Object>; template class TAO::Object_SArg_Traits_T<CORBA::Object_ptr, CORBA::Object_var, @@ -1025,6 +1027,7 @@ template class TAO::Out_Object_SArgument_T<CORBA::Object_ptr, CORBA::Object_out>; template class TAO::Ret_Object_SArgument_T<CORBA::Object_ptr, CORBA::Object_var>; +#endif /*if 0*/ #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) diff --git a/TAO/tao/Policy.pidl b/TAO/tao/Policy.pidl index 1374580b17b..2f6ccffaea2 100644 --- a/TAO/tao/Policy.pidl +++ b/TAO/tao/Policy.pidl @@ -17,9 +17,9 @@ * command used for this is: * * tao_idl.exe - * -o orig -Gp -Gd -Ge 1 + * -o orig -Gp -Gd -Ge 1 -GT * -Wb,export_macro=TAO_Export - * -Wb,export_include="tao/corbafwd.h" + * -Wb,export_include="tao/TAO_Export.h" * -Wb,pre_include="ace/pre.h" * -Wb,post_include="ace/post.h" * Policy.pidl diff --git a/TAO/tao/PolicyC.cpp b/TAO/tao/PolicyC.cpp index 625c0babc47..63a434fec6d 100644 --- a/TAO/tao/PolicyC.cpp +++ b/TAO/tao/PolicyC.cpp @@ -1788,6 +1788,11 @@ CORBA::Boolean operator>> ( CORBA::PolicyCurrent >; +template class + TAO::Any_Dual_Impl_T<CORBA::PolicyError>; +template class + TAO::Any_Dual_Impl_T<CORBA::InvalidPolicies>; + #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) #if !defined (_CORBA_POLICY__ARG_TRAITS_TMPLINST_CS_) @@ -1858,4 +1863,9 @@ CORBA::Boolean operator>> ( CORBA::PolicyCurrent \ > +#pragma instantiate \ + TAO::Any_Dual_Impl_T<CORBA::PolicyError> +#pragma instantiate \ + TAO::Any_Dual_Impl_T<CORBA::InvalidPolicies> + #endif /* !ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/tao/Policy_ForwardC.cpp b/TAO/tao/Policy_ForwardC.cpp index 582d6e06f1d..d9ca2494fa2 100644 --- a/TAO/tao/Policy_ForwardC.cpp +++ b/TAO/tao/Policy_ForwardC.cpp @@ -799,6 +799,6 @@ CORBA::Boolean operator>> ( # pragma instantiate \ TAO::Any_Basic_Impl_T< \ CORBA::SetOverrideType \ - > +x > #endif /* !ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/tao/PortableInterceptorC.cpp b/TAO/tao/PortableInterceptorC.cpp index 17f73ce292f..aadbf2f7bfa 100644 --- a/TAO/tao/PortableInterceptorC.cpp +++ b/TAO/tao/PortableInterceptorC.cpp @@ -3544,6 +3544,12 @@ operator>>= ( PortableInterceptor::ORBInitializer >; + template class + TAO::Any_Dual_Impl_T<PortableInterceptor::ForwardRequest>; + + template class + TAO::Any_Dual_Impl_T<PortableInterceptor::InvalidSlot>; + #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) # pragma instantiate TAO::Objref_Traits<PortableInterceptor::Interceptor> diff --git a/TAO/tao/PortableServer/PortableServerC.cpp b/TAO/tao/PortableServer/PortableServerC.cpp index 5e843e2f973..d1c82ed6434 100644 --- a/TAO/tao/PortableServer/PortableServerC.cpp +++ b/TAO/tao/PortableServer/PortableServerC.cpp @@ -7575,11 +7575,6 @@ CORBA::Boolean operator>> ( PortableServer::RequestProcessingPolicy >; - template class - TAO::Any_Basic_Impl_T< - PortableServer::POAManager::State - >; - template class TAO::Objref_Traits<PortableServer::POAManager>; template class diff --git a/TAO/tao/Typecode.cpp b/TAO/tao/Typecode.cpp index 5c02dc74dc2..8e4891ebd7d 100644 --- a/TAO/tao/Typecode.cpp +++ b/TAO/tao/Typecode.cpp @@ -3766,14 +3766,14 @@ operator>> (TAO_InputCDR& cdr, CORBA::TypeCode *&x) return 1; } -CORBA::Boolean +CORBA::Boolean operator<< (TAO_OutputCDR &strm, const CORBA::TCKind &_tao_enumval) { CORBA::ULong _tao_temp = _tao_enumval; return strm << _tao_temp; } -CORBA::Boolean +CORBA::Boolean operator>> (TAO_InputCDR &strm, CORBA::TCKind &_tao_enumval) { CORBA::ULong _tao_temp = 0; @@ -3789,8 +3789,7 @@ operator>> (TAO_InputCDR &strm, CORBA::TCKind &_tao_enumval) #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class TAO_Pseudo_Object_Manager<CORBA::TypeCode, - CORBA::TypeCode_var>; +template class TAO_Pseudo_Object_Manager<CORBA::TypeCode>; template class ACE_Hash_Map_Entry<const char *, ACE_Unbounded_Queue<CORBA::Long> *>; @@ -3823,20 +3822,24 @@ template class TAO_Pseudo_Out_T<CORBA::TypeCode, CORBA::TypeCode_var>; template class TAO::Objref_Traits<CORBA::TypeCode>; template class TAO::Arg_Traits<CORBA::TypeCode>; -template class - TAO::Object_Arg_Traits_T<CORBA::TypeCode_ptr, - CORBA::TypeCode_var, - CORBA::TypeCode_out, - TAO::Objref_Traits<CORBA::TypeCode> >; -template class TAO::In_Object_Argument_T<CORBA::TypeCode_ptr>; -template class - TAO::Inout_Object_Argument_T<CORBA::TypeCode_ptr, - TAO::Objref_Traits<CORBA::TypeCode> >; -template class TAO::Out_Object_Argument_T<CORBA::TypeCode_ptr, - CORBA::TypeCode_out>; -template class TAO::Ret_Object_Argument_T<CORBA::TypeCode_ptr, - CORBA::TypeCode_var>; +template class TAO::Object_Arg_Traits_T<CORBA::TypeCode_ptr, + CORBA::TypeCode_var, + CORBA::TypeCode_out, + TAO::Objref_Traits<CORBA::TypeCode> >; + +template TAO::Ret_Object_Argument_T<CORBA::TypeCode*, + TAO_Pseudo_Var_T<CORBA::TypeCode> >; + +template TAO::In_Object_Argument_T<CORBA::TypeCode*>; + +template TAO::Inout_Object_Argument_T<CORBA::TypeCode*, + TAO::Objref_Traits<CORBA::TypeCode> >; +template TAO::Out_Object_Argument_T<CORBA::TypeCode*, + TAO_Pseudo_Out_T<CORBA::TypeCode, + TAO_Pseudo_Var_T<CORBA::TypeCode> > >; + +#if 0 template class TAO::SArg_Traits<CORBA::TypeCode>; template class TAO::Object_SArg_Traits_T<CORBA::TypeCode_ptr, CORBA::TypeCode_var, @@ -3850,11 +3853,10 @@ template class TAO::Out_Object_SArgument_T<CORBA::TypeCode_ptr, CORBA::TypeCode_out>; template class TAO::Ret_Object_SArgument_T<CORBA::TypeCode_ptr, CORBA::TypeCode_var>; - +#endif /*if 0*/ #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -#pragma instantiate TAO_Pseudo_Object_Manager<CORBA::TypeCode, \ - CORBA::TypeCode_var> +#pragma instantiate TAO_Pseudo_Object_Manager<CORBA::TypeCode> #pragma instantiate ACE_Hash_Map_Entry<const char *, \ ACE_Unbounded_Queue<CORBA::Long> *> @@ -3916,4 +3918,16 @@ template class TAO::Ret_Object_SArgument_T<CORBA::TypeCode_ptr, #pragma instantiate TAO::Ret_Object_SArgument_T<CORBA::TypeCode_ptr, \ CORBA::TypeCode_var> +#pragma instantiate TAO::Ret_Object_Argument_T<CORBA::TypeCode*, + TAO_Pseudo_Var_T<CORBA::TypeCode> > + +#pragma instantiate TAO::In_Object_Argument_T<CORBA::TypeCode*> + +#pragma instantiate TAO::Inout_Object_Argument_T<CORBA::TypeCode*, + TAO::Objref_Traits<CORBA::TypeCode> > + +#pragma instantiate TAO::Out_Object_Argument_T<CORBA::TypeCode*, + TAO_Pseudo_Out_T<CORBA::TypeCode, + TAO_Pseudo_Var_T<CORBA::TypeCode> > > + #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/tao/Valuetype/ValueBase.cpp b/TAO/tao/Valuetype/ValueBase.cpp index 356994efa9c..264de9bbf87 100644 --- a/TAO/tao/Valuetype/ValueBase.cpp +++ b/TAO/tao/Valuetype/ValueBase.cpp @@ -365,8 +365,8 @@ CORBA::DefaultValueRefCountBase::DefaultValueRefCountBase (void) void CORBA::DefaultValueRefCountBase::_tao_add_ref (void) { - ACE_GUARD (TAO_SYNCH_MUTEX, - guard, + ACE_GUARD (TAO_SYNCH_MUTEX, + guard, this->_tao_reference_count_lock_); ++this->_tao_reference_count_; @@ -376,8 +376,8 @@ void CORBA::DefaultValueRefCountBase::_tao_remove_ref (void) { { - ACE_GUARD (TAO_SYNCH_MUTEX, - guard, + ACE_GUARD (TAO_SYNCH_MUTEX, + guard, this->_tao_reference_count_lock_); --this->_tao_reference_count_; @@ -439,3 +439,27 @@ operator>> (TAO_InputCDR &strm, _tao_valuetype); } +// =============== Template Specializations ===================== +namespace TAO +{ + void + Value_Traits<CORBA::ValueBase>::tao_add_ref ( + CORBA::ValueBase *p) + { + CORBA::add_ref (p); + } + + void + Value_Traits<CORBA::ValueBase>::tao_remove_ref ( + CORBA::ValueBase * p) + { + CORBA::remove_ref (p); + } + + void + Value_Traits<CORBA::ValueBase>::tao_release ( + CORBA::ValueBase * p) + { + CORBA::remove_ref (p); + } +} diff --git a/TAO/tao/Valuetype/ValueBase.h b/TAO/tao/Valuetype/ValueBase.h index 46dd8e30e45..a8658eb9c8f 100644 --- a/TAO/tao/Valuetype/ValueBase.h +++ b/TAO/tao/Valuetype/ValueBase.h @@ -40,7 +40,7 @@ namespace CORBA { class ValueFactoryBase; typedef ValueFactoryBase *ValueFactory; - + class ValueBase; extern TAO_Valuetype_Export void add_ref (ValueBase *); @@ -215,7 +215,7 @@ operator>> (TAO_InputCDR&, CORBA::ValueBase *&); /// Used in generated code if CORBA::ValueBase is an argument or return type. namespace TAO { - template<> + ACE_TEMPLATE_SPECIALIZATION class TAO_Valuetype_Export Arg_Traits<CORBA::ValueBase> : public Object_Arg_Traits_T<CORBA::ValueBase *, CORBA::ValueBase_var, @@ -223,6 +223,18 @@ namespace TAO TAO::Value_Traits<CORBA::ValueBase> > { }; + + + ACE_TEMPLATE_SPECIALIZATION + struct TAO_Valuetype_Export Value_Traits<CORBA::ValueBase> + { + static void tao_add_ref (CORBA::ValueBase *); + static void tao_remove_ref (CORBA::ValueBase *); + + // For INOUT value type arguments, so they can use the same set + // of arg classes as interfaces. + static void tao_release (CORBA::ValueBase *); + }; }; #if defined (__ACE_INLINE__) diff --git a/TAO/tao/Valuetype/ValueFactory.cpp b/TAO/tao/Valuetype/ValueFactory.cpp index 8308d0f8901..2f2fa4ad818 100644 --- a/TAO/tao/Valuetype/ValueFactory.cpp +++ b/TAO/tao/Valuetype/ValueFactory.cpp @@ -43,8 +43,8 @@ CORBA::ValueFactoryBase::~ValueFactoryBase (void) void CORBA::ValueFactoryBase::_add_ref (void) { - ACE_GUARD (TAO_SYNCH_MUTEX, - guard, + ACE_GUARD (TAO_SYNCH_MUTEX, + guard, this->_tao_reference_count_lock_); ++this->_tao_reference_count_; @@ -54,8 +54,8 @@ void CORBA::ValueFactoryBase::_remove_ref (void) { { - ACE_GUARD (TAO_SYNCH_MUTEX, - guard, + ACE_GUARD (TAO_SYNCH_MUTEX, + guard, this->_tao_reference_count_lock_); --this->_tao_reference_count_; @@ -76,3 +76,26 @@ CORBA::ValueFactoryBase::create_for_unmarshal_abstract (void) return 0; } +// =============== Template Specializations ===================== +namespace TAO +{ + using namespace CORBA; + + void + Value_Traits<ValueFactoryBase>::tao_add_ref (ValueFactoryBase *p) + { + CORBA::add_ref (p); + } + + void + Value_Traits<ValueFactoryBase>::tao_remove_ref (ValueFactoryBase * p) + { + CORBA::remove_ref (p); + } + + void + Value_Traits<ValueFactoryBase>::tao_release (ValueFactoryBase * p) + { + CORBA::remove_ref (p); + } +} diff --git a/TAO/tao/Valuetype/ValueFactory.h b/TAO/tao/Valuetype/ValueFactory.h index 3fb30e5834d..e2800019962 100644 --- a/TAO/tao/Valuetype/ValueFactory.h +++ b/TAO/tao/Valuetype/ValueFactory.h @@ -34,13 +34,13 @@ namespace CORBA typedef AbstractBase *AbstractBase_ptr; class ValueBase; - + class ValueFactoryBase; extern TAO_Valuetype_Export void add_ref (ValueFactoryBase *); extern TAO_Valuetype_Export void remove_ref (ValueFactoryBase *); - typedef TAO_Value_Var_T<ValueFactoryBase> + typedef TAO_Value_Var_T<ValueFactoryBase> ValueFactoryBase_var; typedef ValueFactoryBase_var ValueFactory_var; @@ -72,6 +72,25 @@ namespace CORBA } // End CORBA namespace +namespace TAO +{ + /** + * @brief Specializations needed for using with Value_Var_T + */ + ACE_TEMPLATE_SPECIALIZATION + struct TAO_Valuetype_Export Value_Traits<CORBA::ValueFactoryBase> + { + static void tao_add_ref ( + CORBA::ValueFactoryBase *); + static void tao_remove_ref ( + CORBA::ValueFactoryBase *); + + // For INOUT value type arguments, so they can use the same set + // of arg classes as interfaces. + static void tao_release ( + CORBA::ValueFactoryBase *); + }; +} // Use this macro for writing code that is independend from // the compiler support of covariant return types of pointers to // virtual inherited classes. |