diff options
author | Ossama Othman <ossama-othman@users.noreply.github.com> | 2005-02-21 00:39:47 +0000 |
---|---|---|
committer | Ossama Othman <ossama-othman@users.noreply.github.com> | 2005-02-21 00:39:47 +0000 |
commit | f03f8fa805272bbde758d441950b48196169081e (patch) | |
tree | 13187151a95a9b00dc86a351d734c29fcdad097d | |
parent | 00b58e1c5c514e64e2ca378859c5a0d5d1cb7d2b (diff) | |
download | ATCD-f03f8fa805272bbde758d441950b48196169081e.tar.gz |
*** empty log message ***
46 files changed, 714 insertions, 575 deletions
diff --git a/TAO/ChangeLog b/TAO/ChangeLog index ff8d964ddee..1e85cb98740 100644 --- a/TAO/ChangeLog +++ b/TAO/ChangeLog @@ -1,39 +1,4 @@ -Mon Feb 14 22:56:17 2005 Ossama Othman <ossama@dre.vanderbilt.edu> - - * tao/Argument_T.h (Const_Argument_T, Mutable_Argument_T): - - New file. Contains new base class templates that enable - polymorphic invocations of the client and server side - *_Argument_T<>::arg() method. These classes are the key to - using the same skeleton code for both collocated and - uncollocated invocations without having to resort to complicated - argument conversion code. Both of these class templates - subclass the TAO::Argument class. - - * tao/BD_String_Argument_T.h: - * tao/Basic_Argument_T.h: - * tao/Fixed_Array_Argument_T.h: - * tao/Fixed_Size_Argument_T.h: - * tao/Object_Argument_T.h: - * tao/Special_Basic_Argument_T.h: - * tao/Special_Basic_Argument_T.inl: - * tao/UB_String_Argument_T.h: - * tao/Var_Array_Argument_T.h: - * tao/Var_Size_Argument_T.h: - * tao/PortableServer/BD_String_SArgument_T.h: - * tao/PortableServer/Basic_SArgument_T.h: - * tao/PortableServer/Fixed_Array_SArgument_T.h: - * tao/PortableServer/Fixed_Size_SArgument_T.h: - * tao/PortableServer/Object_SArgument_T.h: - * tao/PortableServer/Special_Basic_SArgument_T.h: - * tao/PortableServer/UB_String_SArgument_T.h: - * tao/PortableServer/Var_Array_SArgument_T.h: - * tao/PortableServer/Var_Size_SArgument_T.h: - - Inherit from TAO::{Const,Mutable}_Argument_T<> class template - instead of TAO::Argument to enable polymorphic invocation of the - arg() method used in the stubs and skeletons. See - "tao/Argument_T.h" details above. +Sun Feb 20 16:34:57 2005 Ossama Othman <ossama@dre.vanderbilt.edu> * TAO_IDL/be/be_visitor_argument/request_info_arglist.cpp: * TAO_IDL/be/be_visitor_argument/request_info_ch.cpp: diff --git a/TAO/TAO_IDL/be/be_codegen.cpp b/TAO/TAO_IDL/be/be_codegen.cpp index efe40dcd247..4458094de7f 100644 --- a/TAO/TAO_IDL/be/be_codegen.cpp +++ b/TAO/TAO_IDL/be/be_codegen.cpp @@ -1905,6 +1905,19 @@ TAO_CodeGen::gen_skel_arg_file_includes (TAO_OutStream * stream) "tao/PortableServer/TypeCode_SArg_Traits.h"); this->gen_standard_include (stream, "tao/PortableServer/Object_SArg_Traits.h"); + + if (be_global->gen_thru_poa_collocation ()) + { + // We need the stub side argument templates when thru-POA + // collocation is enabled for type resolution. + // this->gen_stub_arg_file_includes (stream); + + // Always needed for CORBA::Boolean handling in _is_a() skeleton + // code when an unconstrained (non-local) IDL interface is defined. + this->gen_cond_file_include (idl_global->non_local_iface_seen_, + "tao/Special_Basic_Arguments.h", + stream); + } } void diff --git a/TAO/TAO_IDL/be/be_visitor_arg_traits.cpp b/TAO/TAO_IDL/be/be_visitor_arg_traits.cpp index 8d48a11f1bf..23c0d64ac76 100644 --- a/TAO/TAO_IDL/be/be_visitor_arg_traits.cpp +++ b/TAO/TAO_IDL/be/be_visitor_arg_traits.cpp @@ -195,31 +195,31 @@ be_visitor_arg_traits::visit_valuetype (be_valuetype *node) if (node->seen_in_operation ()) { - TAO_OutStream *os = this->ctx_->stream (); + TAO_OutStream & os = *this->ctx_->stream (); std::string guard_suffix = std::string (this->S_) + std::string ("arg_traits"); // This should be generated even for imported nodes. The ifdef // guard prevents multiple declarations. - os->gen_ifdef_macro (node->flat_name (), guard_suffix.c_str ()); - - *os << be_nl << be_nl - << "template<>" << be_nl - << "class " << be_global->stub_export_macro () << " " - << this->S_ << "Arg_Traits<" - << node->name () << ">" << be_idt_nl - << ": public" << be_idt << be_idt_nl - << "Object_" << this->S_ << "Arg_Traits_T<" << be_idt << be_idt_nl - << node->name () << " *," << be_nl - << node->name () << "_var," << be_nl - << node->name () << "_out," << be_nl - << "TAO::Value_Traits<" << node->name () << ">" << be_uidt_nl - << ">" << be_uidt << be_uidt << be_uidt << be_uidt_nl - << "{" << be_nl - << "};"; - - os->gen_endif (); + os.gen_ifdef_macro (node->flat_name (), guard_suffix.c_str ()); + + os << be_nl << be_nl + << "template<>" << be_nl + << "class " << be_global->stub_export_macro () << " " + << this->S_ << "Arg_Traits<" + << node->name () << ">" << be_idt_nl + << ": public" << be_idt << be_idt_nl + << "Object_" << this->S_ << "Arg_Traits_T<" << be_idt << be_idt_nl + << node->name () << " *," << be_nl + << node->name () << "_var," << be_nl + << node->name () << "_out," << be_nl + << "TAO::Value_Traits<" << node->name () << ">" << be_uidt_nl + << ">" << be_uidt << be_uidt << be_uidt << be_uidt_nl + << "{" << be_nl + << "};"; + + os.gen_endif (); } if (this->visit_scope (node) != 0) @@ -316,7 +316,7 @@ be_visitor_arg_traits::visit_operation (be_operation *node) << be_nl << be_nl; } - *os << "ACE_TEMPLATE_SPECIALIZATION" << be_nl + *os << "template<>" << be_nl << "class " << be_global->stub_export_macro () << " " << this->S_ << "Arg_Traits<" << node->flat_name () << ">" << be_idt_nl @@ -377,7 +377,7 @@ be_visitor_arg_traits::visit_attribute (be_attribute *node) *os << be_nl << be_nl << "struct " << node->flat_name () << " {};" << be_nl << be_nl - << "ACE_TEMPLATE_SPECIALIZATION" << be_nl + << "template<>" << be_nl << "class " << be_global->stub_export_macro () << " " << this->S_ << "Arg_Traits<" << node->flat_name () << ">" << be_idt_nl @@ -442,7 +442,7 @@ be_visitor_arg_traits::visit_argument (be_argument *node) << be_nl << be_nl; } - *os << "ACE_TEMPLATE_SPECIALIZATION" << be_nl + *os << "template<>" << be_nl << "class " << be_global->stub_export_macro () << " " << this->S_ << "Arg_Traits<" << node->flat_name () << ">" << be_idt_nl @@ -479,7 +479,7 @@ be_visitor_arg_traits::visit_sequence (be_sequence *node) os->gen_ifdef_macro (alias->flat_name (), guard_suffix.c_str ()); *os << be_nl << be_nl - << "ACE_TEMPLATE_SPECIALIZATION" << be_nl + << "template<>" << be_nl << "class " << be_global->stub_export_macro () << " " << this->S_ << "Arg_Traits<" << alias->name () << ">" << be_idt_nl @@ -555,7 +555,7 @@ be_visitor_arg_traits::visit_string (be_string *node) } *os << be_nl << be_nl - << "ACE_TEMPLATE_SPECIALIZATION" << be_nl + << "template<>" << be_nl << "class " << be_global->stub_export_macro () << " " << this->S_ << "Arg_Traits<"; @@ -599,18 +599,19 @@ be_visitor_arg_traits::visit_array (be_array *node) // Generate the array traits specialization definitions, // guarded by #ifdef on unaliased array element type and length. - ACE_CString unique; + ACE_CString unique (this->S_); + unique += ACE_CString ("_"); be_type *bt = be_type::narrow_from_decl (node->base_type ()); AST_Decl::NodeType nt = bt->node_type (); if (nt == AST_Decl::NT_typedef) { be_typedef *td = be_typedef::narrow_from_decl (bt); - unique = td->primitive_base_type ()->flat_name (); + unique += td->primitive_base_type ()->flat_name (); } else { - unique = bt->flat_name (); + unique += bt->flat_name (); } char buf[NAMEBUFSIZE]; @@ -630,7 +631,7 @@ be_visitor_arg_traits::visit_array (be_array *node) os->gen_ifdef_macro (unique.fast_rep ()); *os << be_nl << be_nl - << "ACE_TEMPLATE_SPECIALIZATION" << be_nl + << "template<>" << be_nl << "class " << be_global->stub_export_macro () << " " << this->S_ << "Arg_Traits<" << node->name () << ">" << be_idt_nl @@ -688,7 +689,7 @@ be_visitor_arg_traits::visit_enum (be_enum *node) os->gen_ifdef_macro (node->flat_name (), guard_suffix.c_str ()); *os << be_nl << be_nl - << "ACE_TEMPLATE_SPECIALIZATION" << be_nl + << "template<>" << be_nl << "class " << be_global->stub_export_macro () << " " << this->S_ << "Arg_Traits<" << node->name () << ">" << be_idt_nl @@ -729,7 +730,7 @@ be_visitor_arg_traits::visit_structure (be_structure *node) os->gen_ifdef_macro (node->flat_name (), guard_suffix.c_str ()); *os << be_nl << be_nl - << "ACE_TEMPLATE_SPECIALIZATION" << be_nl + << "template<>" << be_nl << "class " << be_global->stub_export_macro () << " " << this->S_ << "Arg_Traits<" << node->name () << ">" << be_idt_nl @@ -843,7 +844,7 @@ be_visitor_arg_traits::visit_union (be_union *node) os->gen_ifdef_macro (node->flat_name (), guard_suffix.c_str ()); *os << be_nl << be_nl - << "ACE_TEMPLATE_SPECIALIZATION" << be_nl + << "template<>" << be_nl << "class " << be_global->stub_export_macro () << " " << this->S_ << "Arg_Traits<" << node->name () << ">" << be_idt_nl diff --git a/TAO/TAO_IDL/be/be_visitor_array/array_ci.cpp b/TAO/TAO_IDL/be/be_visitor_array/array_ci.cpp index a0ef398247a..f863ede4891 100644 --- a/TAO/TAO_IDL/be/be_visitor_array/array_ci.cpp +++ b/TAO/TAO_IDL/be/be_visitor_array/array_ci.cpp @@ -188,7 +188,7 @@ int be_visitor_array_ci::visit_array (be_array *node) unique += "_traits"; *os << be_nl << be_nl - << "ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION" << be_nl +// << "ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION" << be_nl << "ACE_INLINE" << be_nl << "void" << be_nl << "TAO::Array_Traits<" << be_idt << be_idt_nl @@ -203,7 +203,7 @@ int be_visitor_array_ci::visit_array (be_array *node) << "}"; *os << be_nl << be_nl - << "ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION" << be_nl +// << "ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION" << be_nl << "ACE_INLINE" << be_nl << fname << "_slice *" << be_nl << "TAO::Array_Traits<" << be_idt << be_idt_nl @@ -218,7 +218,7 @@ int be_visitor_array_ci::visit_array (be_array *node) << "}"; *os << be_nl << be_nl - << "ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION" << be_nl +// << "ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION" << be_nl << "ACE_INLINE" << be_nl << "void" << be_nl << "TAO::Array_Traits<" << be_idt << be_idt_nl @@ -234,7 +234,7 @@ int be_visitor_array_ci::visit_array (be_array *node) << "}"; *os << be_nl << be_nl - << "ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION" << be_nl +// << "ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION" << be_nl << "ACE_INLINE" << be_nl << fname << "_slice *" << be_nl << "TAO::Array_Traits<" << be_idt << be_idt_nl diff --git a/TAO/TAO_IDL/be/be_visitor_component/component_cs.cpp b/TAO/TAO_IDL/be/be_visitor_component/component_cs.cpp index d9aa9352aad..861b469cd59 100644 --- a/TAO/TAO_IDL/be/be_visitor_component/component_cs.cpp +++ b/TAO/TAO_IDL/be/be_visitor_component/component_cs.cpp @@ -66,7 +66,7 @@ be_visitor_component_cs::visit_component (be_component *node) << "// Traits specializations for " << node->name () << "."; *os << be_nl << be_nl - << "ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION " << be_nl +// << "ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION " << be_nl << node->name () << "_ptr" << be_nl << "TAO::Objref_Traits<" << node->name () << ">::duplicate (" << be_idt << be_idt_nl @@ -77,7 +77,7 @@ be_visitor_component_cs::visit_component (be_component *node) << "}"; *os << be_nl << be_nl - << "ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION " << be_nl +// << "ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION " << be_nl << "void" << be_nl << "TAO::Objref_Traits<" << node->name () << ">::release (" << be_idt << be_idt_nl @@ -88,7 +88,7 @@ be_visitor_component_cs::visit_component (be_component *node) << "}"; *os << be_nl << be_nl - << "ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION " << be_nl +// << "ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION " << be_nl << node->name () << "_ptr" << be_nl << "TAO::Objref_Traits<" << node->name () << ">::nil (void)" << be_nl @@ -97,7 +97,7 @@ be_visitor_component_cs::visit_component (be_component *node) << "}"; *os << be_nl << be_nl - << "ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION " << be_nl +// << "ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION " << be_nl << "CORBA::Boolean" << be_nl << "TAO::Objref_Traits<" << node->name () << ">::marshal (" << be_idt << be_idt_nl diff --git a/TAO/TAO_IDL/be/be_visitor_interface/interface_cs.cpp b/TAO/TAO_IDL/be/be_visitor_interface/interface_cs.cpp index 3e2d56dd80d..77b8a6b3e2d 100644 --- a/TAO/TAO_IDL/be/be_visitor_interface/interface_cs.cpp +++ b/TAO/TAO_IDL/be/be_visitor_interface/interface_cs.cpp @@ -65,7 +65,7 @@ be_visitor_interface_cs::visit_interface (be_interface *node) << "// Traits specializations for " << node->name () << "."; *os << be_nl << be_nl - << "ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION" << be_nl +// << "ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION" << be_nl << node->name () << "_ptr" << be_nl << "TAO::Objref_Traits<" << node->name () << ">::duplicate (" << be_idt << be_idt_nl @@ -76,7 +76,7 @@ be_visitor_interface_cs::visit_interface (be_interface *node) << "}"; *os << be_nl << be_nl - << "ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION" << be_nl +// << "ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION" << be_nl << "void" << be_nl << "TAO::Objref_Traits<" << node->name () << ">::release (" << be_idt << be_idt_nl @@ -87,7 +87,7 @@ be_visitor_interface_cs::visit_interface (be_interface *node) << "}"; *os << be_nl << be_nl - << "ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION" << be_nl +// << "ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION" << be_nl << node->name () << "_ptr" << be_nl << "TAO::Objref_Traits<" << node->name () << ">::nil (void)" << be_nl @@ -96,7 +96,7 @@ be_visitor_interface_cs::visit_interface (be_interface *node) << "}"; *os << be_nl << be_nl - << "ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION" << be_nl +// << "ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION" << be_nl << "CORBA::Boolean" << be_nl << "TAO::Objref_Traits<" << node->name () << ">::marshal (" << be_idt << be_idt_nl diff --git a/TAO/TAO_IDL/be/be_visitor_interface/interface_sh.cpp b/TAO/TAO_IDL/be/be_visitor_interface/interface_sh.cpp index f70d2e88783..62d93ce439a 100644 --- a/TAO/TAO_IDL/be/be_visitor_interface/interface_sh.cpp +++ b/TAO/TAO_IDL/be/be_visitor_interface/interface_sh.cpp @@ -94,10 +94,10 @@ be_visitor_interface_sh::visit_interface (be_interface *node) << "_ptr;" << be_nl << be_nl; // Forward class declarations. - if (be_global->gen_thru_poa_collocation ()) - { - *os << "class " << node->thru_poa_proxy_impl_name () << ";" << be_nl; - } +// if (be_global->gen_thru_poa_collocation ()) +// { +// *os << "class " << node->thru_poa_proxy_impl_name () << ";" << be_nl; +// } if (be_global->gen_direct_collocation ()) { @@ -270,7 +270,7 @@ be_visitor_interface_sh::visit_interface (be_interface *node) LM_ERROR, "be_visitor_interface_sh::" "visit_interface - " - "codegen for thru_poa_collocated class failed\n" + "codegen for strategized proxy broker class failed\n" ), -1 ); @@ -280,21 +280,21 @@ be_visitor_interface_sh::visit_interface (be_interface *node) ctx = *this->ctx_; // Generate the collocated class. - if (be_global->gen_thru_poa_collocation ()) - { - ctx = *this->ctx_; - ctx.state (TAO_CodeGen::TAO_INTERFACE_THRU_POA_PROXY_IMPL_SH); - be_visitor_interface_thru_poa_proxy_impl_sh itppi_visitor (&ctx); - - if (node->accept (&itppi_visitor) == -1) - { - ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_interface_sh::" - "visit_interface - " - "codegen for thru_poa_collocated class failed\n"), - -1); - } - } +// if (be_global->gen_thru_poa_collocation ()) +// { +// ctx = *this->ctx_; +// ctx.state (TAO_CodeGen::TAO_INTERFACE_THRU_POA_PROXY_IMPL_SH); +// be_visitor_interface_thru_poa_proxy_impl_sh itppi_visitor (&ctx); + +// if (node->accept (&itppi_visitor) == -1) +// { +// ACE_ERROR_RETURN ((LM_ERROR, +// "be_visitor_interface_sh::" +// "visit_interface - " +// "codegen for thru_poa_collocated class failed\n"), +// -1); +// } +// } ctx = *this->ctx_; @@ -310,7 +310,7 @@ be_visitor_interface_sh::visit_interface (be_interface *node) LM_ERROR, "be_visitor_interface_sh::" "visit_interface - " - "codegen for thru_poa_collocated class failed\n" + "codegen for direct collocated class failed\n" ), -1 ); diff --git a/TAO/TAO_IDL/be/be_visitor_interface/interface_si.cpp b/TAO/TAO_IDL/be/be_visitor_interface/interface_si.cpp index 793b46238a2..3624b80903f 100644 --- a/TAO/TAO_IDL/be/be_visitor_interface/interface_si.cpp +++ b/TAO/TAO_IDL/be/be_visitor_interface/interface_si.cpp @@ -81,8 +81,9 @@ be_visitor_interface_si::visit_interface (be_interface *node) return -1; } - if (be_global->gen_thru_poa_collocation () - || be_global->gen_direct_collocation ()) + if (// be_global->gen_thru_poa_collocation () + // || + be_global->gen_direct_collocation ()) { status = node->traverse_inheritance_graph ( diff --git a/TAO/TAO_IDL/be/be_visitor_interface/interface_ss.cpp b/TAO/TAO_IDL/be/be_visitor_interface/interface_ss.cpp index 4cbe5f9191f..8e4fa72fa30 100644 --- a/TAO/TAO_IDL/be/be_visitor_interface/interface_ss.cpp +++ b/TAO/TAO_IDL/be/be_visitor_interface/interface_ss.cpp @@ -375,10 +375,12 @@ be_visitor_interface_ss::visit_interface (be_interface *node) { // server_request.operation_details () will be non-zero in the // thru-POA collocation case. Use them if available. - *os << "," << be_nl - << "server_request.operation_details ()" << be_nl - << "? server_request.operation_details ()->args ()" << be_nl - << ": args"; + *os << "," << be_nl; + + if (be_global->gen_thru_poa_collocation ()) + *os << "server_request.operation_details ()," << be_nl; + + *os << "args"; } *os << ");" << be_uidt_nl << be_nl; diff --git a/TAO/TAO_IDL/be/be_visitor_operation/operation_ss.cpp b/TAO/TAO_IDL/be/be_visitor_operation/operation_ss.cpp index 85e715fee8e..5c9a2bbc8df 100644 --- a/TAO/TAO_IDL/be/be_visitor_operation/operation_ss.cpp +++ b/TAO/TAO_IDL/be/be_visitor_operation/operation_ss.cpp @@ -257,10 +257,12 @@ be_visitor_operation_ss::gen_skel_operation_body (be_operation * node, { // server_request.operation_details () will be non-zero in the // thru-POA collocation case. Use them if available. - *os << "," << be_nl - << "server_request.operation_details ()" << be_nl - << "? server_request.operation_details ()->args ()" << be_nl - << ": args"; + *os << "," << be_nl; + + if (be_global->gen_thru_poa_collocation ()) + *os << "server_request.operation_details ()," << be_nl; + + *os << "args"; } *os << ");" << be_uidt_nl << be_nl; diff --git a/TAO/TAO_IDL/be/be_visitor_operation/upcall_command_ss.cpp b/TAO/TAO_IDL/be/be_visitor_operation/upcall_command_ss.cpp index e948c012ca4..cbfdc64764a 100644 --- a/TAO/TAO_IDL/be/be_visitor_operation/upcall_command_ss.cpp +++ b/TAO/TAO_IDL/be/be_visitor_operation/upcall_command_ss.cpp @@ -80,8 +80,12 @@ be_visitor_operation_upcall_command_ss::visit_operation (be_operation * node) // has no arguments. if (!node->void_return_type () || node->argument_count () > 0) { - os << "," << be_nl - << "TAO::Argument * const args[])" << be_nl; + os << "," << be_nl; + + if (be_global->gen_thru_poa_collocation ()) + os << "TAO_Operation_Details const * operation_details," << be_nl; + + os << "TAO::Argument * const args[])" << be_nl; } else { @@ -94,8 +98,12 @@ be_visitor_operation_upcall_command_ss::visit_operation (be_operation * node) // initializer for the class argument array member/attribute. if (!node->void_return_type () || node->argument_count () > 0) { - os << be_nl - << ", args_ (args)"; + os << be_nl; + + if (be_global->gen_thru_poa_collocation ()) + os << ", operation_details_ (operation_details)" << be_nl; + + os << ", args_ (args)"; } os << be_uidt_nl; @@ -109,13 +117,39 @@ be_visitor_operation_upcall_command_ss::visit_operation (be_operation * node) if (!node->void_return_type ()) { - os << "static_cast<TAO::SArg_Traits< "; + os << "TAO::SArg_Traits< "; + this->gen_arg_template_param_name (node, node->return_type (), &os); - os << ">::ret_base *> (this->args_[0])->arg () =" << be_idt_nl; + os << ">::ret_arg_type retval =" << be_idt_nl; + + if (be_global->gen_thru_poa_collocation ()) + { + os << "get_ret_arg< "; + + this->gen_arg_template_param_name (node, + node->return_type (), + &os); + + os << "> (" << be_idt_nl + << "this->operation_details_," << be_nl + << "this->args_);" << be_uidt; + } + else + { + os << "static_cast<TAO::SArg_Traits< "; + + this->gen_arg_template_param_name (node, + node->return_type (), + &os); + + os << ">::ret_val *> (this->args_[0])->arg ();"; + } + + os << be_uidt_nl << be_nl; } if (this->gen_upcall (node) == -1) @@ -148,8 +182,13 @@ be_visitor_operation_upcall_command_ss::visit_operation (be_operation * node) // operation has no arguments. if (!node->void_return_type () || node->argument_count () > 0) { - os << be_nl - << "TAO::Argument * const * const args_;"; + os << be_nl; + + if (be_global->gen_thru_poa_collocation ()) + os << "TAO_Operation_Details const * const operation_details_;" << be_nl; + + + os << "TAO::Argument * const * const args_;"; } os << be_uidt_nl @@ -161,35 +200,19 @@ be_visitor_operation_upcall_command_ss::visit_operation (be_operation * node) int be_visitor_operation_upcall_command_ss::gen_upcall (be_operation * node) { - // @@ Based on - // be_visitor_operation_thru_poa_proxy_impl_ss::gen_invoke(). - TAO_OutStream & os = *this->ctx_->stream (); - os << "this->servant_->" << node->local_name () << " (" - << be_idt; - UTL_ScopeActiveIterator si (node, UTL_Scope::IK_decls); - if (si.is_done ()) - { - os << be_nl - << "ACE_ENV_SINGLE_ARG_PARAMETER" << be_uidt_nl - << ");"; - - return 0; - } - - int index = 1; + unsigned int index = 1; for (; !si.is_done (); si.next (), ++index) { AST_Argument * const arg = AST_Argument::narrow_from_decl (si.item ()); - os << (index == 1 ? "" : ",") << be_nl - << "static_cast<TAO::SArg_Traits< "; + os << "TAO::SArg_Traits< "; this->gen_arg_template_param_name (arg, arg->field_type (), @@ -211,13 +234,118 @@ be_visitor_operation_upcall_command_ss::gen_upcall (be_operation * node) break; } - os << "_arg_base *> (this->args_[" << index << "])->arg ()"; + os << "_arg_type arg_" << index << " =" << be_idt_nl; + + if (be_global->gen_thru_poa_collocation ()) + { + os << "get_"; + + switch (arg->direction ()) + { + case AST_Argument::dir_IN: + os << "in"; + break; + case AST_Argument::dir_INOUT: + os << "inout"; + break; + case AST_Argument::dir_OUT: + os << "out"; + default: + break; + } + + os << "_arg< "; + + this->gen_arg_template_param_name (arg, + arg->field_type (), + &os); + + os << "> (" << be_idt_nl + << "this->operation_details_," << be_nl + << "this->args_," << be_nl + << index << ");" << be_uidt_nl; + } + else + { + os << "static_cast<TAO::SArg_Traits< "; + + this->gen_arg_template_param_name (arg, + arg->field_type (), + &os); + + os << ">::ret_val *> (this->args_[" << index << "])->arg ();" + << be_nl; + } + + os << be_uidt_nl; + } - // End the upcall - os << be_nl - << "ACE_ENV_ARG_PARAMETER" << be_uidt_nl - << ");"; + + + if (!node->void_return_type ()) + { + os << be_nl + << "retval =" << be_idt_nl; + } + + os << "this->servant_->" << node->local_name () << " (" + << be_idt_nl; + + size_t const count = node->argument_count (); + + for (unsigned int i = 0; i < count; ++i) + os << (i == 0 ? "" : ", ") << "arg_" << i + 1 << be_nl; + + if (count > 0) + os << "ACE_ENV_ARG_PARAMETER);" << be_uidt_nl; + else + os << "ACE_ENV_SINGLE_ARG_PARAMETER);" << be_uidt_nl; + +// UTL_ScopeActiveIterator si (node, +// UTL_Scope::IK_decls); + +// if (si.is_done ()) +// { +// os << be_nl +// << "ACE_ENV_SINGLE_ARG_PARAMETER" << be_uidt_nl +// << ");"; + +// return 0; +// } + +// int index = 1; + +// for (; !si.is_done (); si.next (), ++index) +// { +// AST_Argument * const arg = +// AST_Argument::narrow_from_decl (si.item ()); + +// os << (index == 1 ? "" : ",") << be_nl +// << "static_cast<TAO::SArg_Traits< "; + +// this->gen_arg_template_param_name (arg, +// arg->field_type (), +// &os); + +// os << ">::"; + +// switch (arg->direction ()) +// { +// case AST_Argument::dir_IN: +// os << "in"; +// break; +// case AST_Argument::dir_INOUT: +// os << "inout"; +// break; +// case AST_Argument::dir_OUT: +// os << "out"; +// default: +// break; +// } + +// os << "_arg_val *> (this->args_[" << index << "])->arg ()"; +// } return 0; } diff --git a/TAO/TAO_IDL/be/be_visitor_root/root.cpp b/TAO/TAO_IDL/be/be_visitor_root/root.cpp index f6887fe9cee..7e3c6c57ac5 100644 --- a/TAO/TAO_IDL/be/be_visitor_root/root.cpp +++ b/TAO/TAO_IDL/be/be_visitor_root/root.cpp @@ -46,8 +46,10 @@ int be_visitor_root::visit_root (be_root *node) -1); } + TAO_OutStream * const os = this->ctx_->stream (); + int status = 0; - be_visitor_context ctx = *this->ctx_; + be_visitor_context ctx = * this->ctx_; switch (this->ctx_->state ()) { @@ -96,6 +98,104 @@ int be_visitor_root::visit_root (be_root *node) -1); } } + + // Generate stub/skeleton argument selection function templates + // in skeleton. + if (be_global->gen_thru_poa_collocation ()) + { + *os << be_nl << be_nl + << "// Stub/skeleton argument selection function templates." + << be_nl + << "// TAO_IDL - Generated from " + << __FILE__ << ":" << __LINE__; + + *os << be_nl << be_nl + << "namespace" << be_nl + << "{" << be_idt_nl; + + // Return value selection function template + *os << "template<typename T>" << be_nl + << "typename TAO::SArg_Traits<T>::ret_arg_type" << be_nl + << "get_ret_arg (TAO_Operation_Details const * details," + << be_nl + << " TAO::Argument * const * skel_args)" << be_nl + << "{" << be_idt_nl + << "return" << be_idt_nl + << "details" << be_nl + << "? static_cast<typename TAO::Arg_Traits<T>::ret_val *> (" + << be_idt << be_idt_nl + // return value is always the first element in the + // TAO::Argument array + << "details->args ()[0])->arg ()" + << be_uidt << be_uidt_nl + << ": static_cast<typename TAO::SArg_Traits<T>::ret_val *> (" + << be_idt << be_idt_nl + << "skel_args[0])->arg ();" << be_uidt << be_uidt + << be_uidt << be_uidt_nl + << "}" << be_nl << be_nl; + + // IN argument selection function template + *os << "template<typename T>" << be_nl + << "typename TAO::SArg_Traits<T>::in_arg_type" << be_nl + << "get_in_arg (TAO_Operation_Details const * details," + << be_nl + << " TAO::Argument * const * skel_args," << be_nl + << " size_t i)" << be_nl + << "{" << be_idt_nl + << "return" << be_idt_nl + << "details" << be_nl + << "? static_cast<typename TAO::Arg_Traits<T>::in_arg_val *> (" + << be_idt << be_idt_nl + << "details->args ()[i])->arg ()" + << be_uidt << be_uidt_nl + << ": static_cast<typename TAO::SArg_Traits<T>::in_arg_val *> (" + << be_idt << be_idt_nl + << "skel_args[i])->arg ();" << be_uidt << be_uidt + << be_uidt << be_uidt_nl + << "}" << be_nl << be_nl; + + // INOUT argument selection function template + *os << "template<typename T>" << be_nl + << "typename TAO::SArg_Traits<T>::inout_arg_type" << be_nl + << "get_inout_arg (TAO_Operation_Details const * details," + << be_nl + << " TAO::Argument * const * skel_args," << be_nl + << " size_t i)" << be_nl + << "{" << be_idt_nl + << "return" << be_idt_nl + << "details" << be_nl + << "? static_cast<typename TAO::Arg_Traits<T>::inout_arg_val *> (" + << be_idt << be_idt_nl + << "details->args ()[i])->arg ()" + << be_uidt << be_uidt_nl + << ": static_cast<typename TAO::SArg_Traits<T>::inout_arg_val *> (" + << be_idt << be_idt_nl + << "skel_args[i])->arg ();" << be_uidt << be_uidt + << be_uidt << be_uidt_nl + << "}" << be_nl << be_nl; + + // OUT argument selection function template + *os << "template<typename T>" << be_nl + << "typename TAO::SArg_Traits<T>::out_arg_type" << be_nl + << "get_out_arg (TAO_Operation_Details const * details," + << be_nl + << " TAO::Argument * const * skel_args," << be_nl + << " size_t i)" << be_nl + << "{" << be_idt_nl + << "return" << be_idt_nl + << "details" << be_nl + << "? static_cast<typename TAO::Arg_Traits<T>::out_arg_val *> (" + << be_idt << be_idt_nl + << "details->args ()[i])->arg ()" + << be_uidt << be_uidt_nl + << ": static_cast<typename TAO::SArg_Traits<T>::out_arg_val *> (" + << be_idt << be_idt_nl + << "skel_args[i])->arg ();" << be_uidt << be_uidt + << be_uidt << be_uidt_nl + << "}" << be_uidt << be_uidt_nl; + + *os << "}" << be_uidt_nl; + } } break; @@ -111,8 +211,6 @@ int be_visitor_root::visit_root (be_root *node) -1); } - TAO_OutStream *os = this->ctx_->stream (); - // If we are generating the client header file, this is the place to // generate the proxy broker factory function pointer declarations // and the extern declarations for non-defined interfaces. diff --git a/TAO/TAO_IDL/be/be_visitor_traits.cpp b/TAO/TAO_IDL/be/be_visitor_traits.cpp index 189ad0d4f06..b4c528f9780 100644 --- a/TAO/TAO_IDL/be/be_visitor_traits.cpp +++ b/TAO/TAO_IDL/be/be_visitor_traits.cpp @@ -110,7 +110,7 @@ be_visitor_traits::visit_interface (be_interface *node) os->gen_ifdef_macro (node->flat_name (), "traits"); *os << be_nl << be_nl - << "ACE_TEMPLATE_SPECIALIZATION" << be_nl + << "template<>" << be_nl << "struct " << be_global->stub_export_macro () << " Objref_Traits<" << " ::" << node->name () << ">" << be_nl << "{" << be_idt_nl @@ -185,7 +185,7 @@ be_visitor_traits::visit_valuetype (be_valuetype *node) os->gen_ifdef_macro (node->flat_name (), "traits"); *os << be_nl << be_nl - << "ACE_TEMPLATE_SPECIALIZATION" << be_nl + << "template<>" << be_nl << "struct " << be_global->stub_export_macro () << " Value_Traits<" << node->name () << ">" << be_nl << "{" << be_idt_nl @@ -387,7 +387,7 @@ be_visitor_traits::visit_array (be_array *node) TAO_OutStream *os = this->ctx_->stream (); *os << be_nl << be_nl - << "ACE_TEMPLATE_SPECIALIZATION" << be_nl + << "template<>" << be_nl << "struct " << be_global->stub_export_macro () << " Array_Traits<" << be_idt << be_idt_nl << name << "," << be_nl diff --git a/TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_cs.cpp b/TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_cs.cpp index 7d20399e061..3feafa171ed 100644 --- a/TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_cs.cpp +++ b/TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_cs.cpp @@ -68,7 +68,7 @@ be_visitor_valuetype_cs::visit_valuetype (be_valuetype *node) if (node->is_defined ()) { *os << be_nl << be_nl - << "ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION " << be_nl +// << "ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION " << be_nl << "void" << be_nl << "TAO::Value_Traits<" << node->name () << ">::add_ref (" << be_idt << be_idt_nl @@ -79,7 +79,7 @@ be_visitor_valuetype_cs::visit_valuetype (be_valuetype *node) << "}"; *os << be_nl << be_nl - << "ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION " << be_nl +// << "ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION " << be_nl << "void" << be_nl << "TAO::Value_Traits<" << node->name () << ">::remove_ref (" << be_idt << be_idt_nl @@ -90,7 +90,7 @@ be_visitor_valuetype_cs::visit_valuetype (be_valuetype *node) << "}"; *os << be_nl << be_nl - << "ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION " << be_nl +// << "ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION " << be_nl << "void" << be_nl << "TAO::Value_Traits<" << node->name () << ">::release (" << be_idt << be_idt_nl diff --git a/TAO/tao/Any_Arg_Traits.h b/TAO/tao/Any_Arg_Traits.h index cb17d0caa7b..5cbf50e0558 100644 --- a/TAO/tao/Any_Arg_Traits.h +++ b/TAO/tao/Any_Arg_Traits.h @@ -16,13 +16,14 @@ #include /**/ "ace/pre.h" +#include "tao/TAO_Export.h" + #if !defined (ACE_LACKS_PRAGMA_ONCE) # pragma once #endif /* ACE_LACKS_PRAGMA_ONCE */ -#include "tao/Arg_Traits_T.h" #include "tao/Var_Size_Argument_T.h" -#include "tao/TAO_Export.h" +#include "tao/Arg_Traits_T.h" namespace CORBA { diff --git a/TAO/tao/Argument_T.h b/TAO/tao/Argument_T.h deleted file mode 100644 index 27c1a66fbd9..00000000000 --- a/TAO/tao/Argument_T.h +++ /dev/null @@ -1,111 +0,0 @@ -// -*- C++ -*- - -//============================================================================= -/** - * @file Argument_T.h - * - * $Id$ - * - * @author Ossama Othman - */ -//============================================================================= - - -#ifndef TAO_ARGUMENT_T_H -#define TAO_ARGUMENT_T_H - -#include /**/ "ace/pre.h" - -#include "tao/Argument.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - - -namespace TAO -{ - /** - * @class Const_Argument_T - * - * @brief Type-specific base class subclassed by stub and skeleton - * and argument class templates that have a @c const @c - * arg() method. - * - * The purpose of this class is to make it possible to - * polymorphically retrieve an argument from either stub or skeleton - * argument class template. Both the corresponding stub and - * skeleton argument class templates must of course have the same - * template parameter type in order for the polymorphism to work. - * Use of polymorphism in this manner allows us to avoid having to - * convert between client and server side arguments, which can be - * tedious, and ultimately allows the server side thru-POA - * collocated and uncollocated code paths to share the same single - * set of skeleton code. - * - * This abstract base class requires that subclasses define @c const - * @c arg() method for the sake of const-correctness. The template - * parameter @c T corresponds to the type of argument passed to an - * IDL-defined operation according to the C++ mapping. For example, - * given the following IDL: - * - * @code - * typedef sequence<short> ShortSeq; - * - * interface Foo { - * void op (in ShortSeq s); - * }; - * @endcode - * - * the @c Const_Argument_T template parameter @c T would be: - * - * @code - * ShortSeq const & - * @endcode - * - * since that would be parameter type for the corresponding C++ - * @c Foo::op() function. - * - * @note This class template is generally only suitable for IDL "@c in" - * parameters since they are read-only. - * - * @see Mutable_Argument_T - */ - template <typename T> - class Const_Argument_T : public Argument - { - public: - - virtual T arg (void) const = 0; - - }; - - /** - * @class Mutable_Argument_T - * - * @brief Type-specific base class subclassed by stub and skeleton - * and argument class templates that have a non- @c const @c - * arg() method. - * - * This class template serves the same purpose as the - * @c Const_Argument_T class template except that it is suitable for - * argument subclasses corresponding to mutable parameters (e.g. IDL - * "@c inout", "@c out" and return values. It is not meant for use - * with IDL "@c in" parameters. - * - * @see Const_Argument_T - */ - template <typename T> - class Mutable_Argument_T : public Argument - { - public: - - virtual T arg (void) = 0; - - }; - -} - -#include /**/ "ace/post.h" - -#endif /* TAO_ARGUMENT_T_H */ diff --git a/TAO/tao/BD_String_Argument_T.h b/TAO/tao/BD_String_Argument_T.h index 6c8265c6694..e76d4851a35 100644 --- a/TAO/tao/BD_String_Argument_T.h +++ b/TAO/tao/BD_String_Argument_T.h @@ -33,7 +33,7 @@ namespace TAO * */ template<typename S, typename to_S, typename from_S, size_t BOUND> - class In_BD_String_Argument_T : public Const_Argument_T<S const *> + class In_BD_String_Argument_T : public Argument { public: In_BD_String_Argument_T (const S * x); @@ -44,7 +44,7 @@ namespace TAO virtual void interceptor_param (Dynamic::Parameter &); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S const * arg (void) const; + S const * arg (void) const; private: @@ -59,7 +59,7 @@ namespace TAO * */ template<typename S, typename to_S, typename from_S, size_t BOUND> - class Inout_BD_String_Argument_T : public Mutable_Argument_T<S *&> + class Inout_BD_String_Argument_T : public Argument { public: Inout_BD_String_Argument_T (S *& x); @@ -69,10 +69,10 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_param (Dynamic::Parameter &); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S *& arg (void); + S *& arg (void); private: - mutable S *& x_; + S *& x_; }; /** @@ -86,7 +86,7 @@ namespace TAO typename to_S, typename from_S, size_t BOUND> - class Out_BD_String_Argument_T : public Mutable_Argument_T<S *&> + class Out_BD_String_Argument_T : public Argument { public: Out_BD_String_Argument_T (S_out x); @@ -95,7 +95,7 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_param (Dynamic::Parameter &); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S *& arg (void); + S *& arg (void); private: S *& x_; @@ -112,7 +112,7 @@ namespace TAO typename to_S, typename from_S, size_t BOUND> - class Ret_BD_String_Argument_T : public Mutable_Argument_T<S *&> + class Ret_BD_String_Argument_T : public Argument { public: Ret_BD_String_Argument_T (void); @@ -121,7 +121,7 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_result (CORBA::Any *); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S *& arg (void); + S *& arg (void); S * excp (void); S * retn (void); diff --git a/TAO/tao/Basic_Argument_T.h b/TAO/tao/Basic_Argument_T.h index ad03c589294..a53abcf7850 100644 --- a/TAO/tao/Basic_Argument_T.h +++ b/TAO/tao/Basic_Argument_T.h @@ -31,7 +31,7 @@ namespace TAO * */ template<typename S> - class In_Basic_Argument_T : public Const_Argument_T<S> + class In_Basic_Argument_T : public Argument { public: In_Basic_Argument_T (S const & x); @@ -40,7 +40,7 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_param (Dynamic::Parameter &); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S arg (void) const; + S arg (void) const; private: S const & x_; @@ -53,7 +53,7 @@ namespace TAO * */ template<typename S> - class Inout_Basic_Argument_T : public Mutable_Argument_T<S &> + class Inout_Basic_Argument_T : public Argument { public: Inout_Basic_Argument_T (S & x); @@ -63,7 +63,7 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_param (Dynamic::Parameter &); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S & arg (void); + S & arg (void); private: S & x_; @@ -76,7 +76,7 @@ namespace TAO * */ template<typename S> - class Out_Basic_Argument_T : public Mutable_Argument_T<S &> + class Out_Basic_Argument_T : public Argument { public: Out_Basic_Argument_T (S & x); @@ -85,7 +85,7 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_param (Dynamic::Parameter &); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S & arg (void); + S & arg (void); private: mutable S & x_; @@ -98,7 +98,7 @@ namespace TAO * */ template<typename S> - class Ret_Basic_Argument_T : public Mutable_Argument_T<S &> + class Ret_Basic_Argument_T : public Argument { public: Ret_Basic_Argument_T (void); @@ -107,7 +107,7 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_result (CORBA::Any *); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S & arg (void); + S & arg (void); S excp (void); S retn (void); diff --git a/TAO/tao/Fixed_Array_Argument_T.h b/TAO/tao/Fixed_Array_Argument_T.h index 1797fa10c96..11400d9b0c8 100644 --- a/TAO/tao/Fixed_Array_Argument_T.h +++ b/TAO/tao/Fixed_Array_Argument_T.h @@ -30,7 +30,7 @@ namespace TAO * */ template<typename S, typename S_slice, typename S_forany> - class In_Fixed_Array_Argument_T : public Const_Argument_T<S_slice const *> + class In_Fixed_Array_Argument_T : public Argument { public: In_Fixed_Array_Argument_T (const S_slice * x); @@ -39,7 +39,7 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_param (Dynamic::Parameter &); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S_slice const * arg (void) const; + S_slice const * arg (void) const; private: S_forany x_; @@ -52,7 +52,7 @@ namespace TAO * */ template<typename S, typename S_slice, typename S_forany> - class Inout_Fixed_Array_Argument_T : public Mutable_Argument_T<S_slice *> + class Inout_Fixed_Array_Argument_T : public Argument { public: Inout_Fixed_Array_Argument_T (S_slice *&x); @@ -62,7 +62,7 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_param (Dynamic::Parameter &); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S_slice * arg (void); + S_slice * arg (void); private: S_forany x_; @@ -75,7 +75,7 @@ namespace TAO * */ template<typename S, typename S_slice, typename S_forany> - class Out_Fixed_Array_Argument_T : public Mutable_Argument_T<S_slice *&> + class Out_Fixed_Array_Argument_T : public Argument { public: Out_Fixed_Array_Argument_T (S_slice *& x); @@ -84,7 +84,7 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_param (Dynamic::Parameter &); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S_slice *& arg (void); + S_slice *& arg (void); private: S_forany x_; @@ -101,7 +101,7 @@ namespace TAO typename S_var, typename S_forany, typename S_tag> - class Ret_Fixed_Array_Argument_T : public Mutable_Argument_T<S_slice *&> + class Ret_Fixed_Array_Argument_T : public Argument { public: Ret_Fixed_Array_Argument_T (void); @@ -110,7 +110,7 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_result (CORBA::Any *); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S_slice *& arg (void); + S_slice *& arg (void); S_slice * excp (void); S_slice * retn (void); diff --git a/TAO/tao/Fixed_Size_Argument_T.h b/TAO/tao/Fixed_Size_Argument_T.h index fb0db9eb3d1..0843b934c44 100644 --- a/TAO/tao/Fixed_Size_Argument_T.h +++ b/TAO/tao/Fixed_Size_Argument_T.h @@ -30,7 +30,7 @@ namespace TAO * */ template<typename S> - class In_Fixed_Size_Argument_T : public Const_Argument_T<S const &> + class In_Fixed_Size_Argument_T : public Argument { public: In_Fixed_Size_Argument_T (S const & x); @@ -39,7 +39,7 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_param (Dynamic::Parameter &); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S const & arg (void) const; + S const & arg (void) const; private: S const * x_; @@ -52,7 +52,7 @@ namespace TAO * */ template<typename S> - class Inout_Fixed_Size_Argument_T : public Mutable_Argument_T<S &> + class Inout_Fixed_Size_Argument_T : public Argument { public: Inout_Fixed_Size_Argument_T (S & x); @@ -62,7 +62,7 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_param (Dynamic::Parameter &); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S & arg (void); + S & arg (void); private: S * x_; @@ -75,7 +75,7 @@ namespace TAO * */ template<typename S> - class Out_Fixed_Size_Argument_T : public Mutable_Argument_T<S &> + class Out_Fixed_Size_Argument_T : public Argument { public: Out_Fixed_Size_Argument_T (S & x); @@ -84,7 +84,7 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_param (Dynamic::Parameter &); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S & arg (void); + S & arg (void); private: @@ -98,7 +98,7 @@ namespace TAO * */ template<typename S> - class Ret_Fixed_Size_Argument_T : public Mutable_Argument_T<S &> + class Ret_Fixed_Size_Argument_T : public Argument { public: Ret_Fixed_Size_Argument_T (void); @@ -107,7 +107,7 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_result (CORBA::Any *); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S & arg (void); + S & arg (void); S excp (void); S retn (void); diff --git a/TAO/tao/Object_Argument_T.h b/TAO/tao/Object_Argument_T.h index 15d63cafa4d..65178344bba 100644 --- a/TAO/tao/Object_Argument_T.h +++ b/TAO/tao/Object_Argument_T.h @@ -36,7 +36,7 @@ namespace TAO * */ template<typename S_ptr> - class In_Object_Argument_T : public Const_Argument_T<S_ptr> + class In_Object_Argument_T : public Argument { public: In_Object_Argument_T (S_ptr x); @@ -45,7 +45,7 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_param (Dynamic::Parameter &); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S_ptr arg (void) const; + S_ptr arg (void) const; private: S_ptr x_; @@ -58,7 +58,7 @@ namespace TAO * */ template<typename S_ptr, typename S_traits> - class Inout_Object_Argument_T : public Mutable_Argument_T<S_ptr &> + class Inout_Object_Argument_T : public Argument { public: Inout_Object_Argument_T (S_ptr & x); @@ -68,7 +68,7 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_param (Dynamic::Parameter &); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S_ptr & arg (void); + S_ptr & arg (void); private: S_ptr & x_; @@ -81,7 +81,7 @@ namespace TAO * */ template<typename S_ptr, typename S_out> - class Out_Object_Argument_T : public Mutable_Argument_T<S_out> + class Out_Object_Argument_T : public Argument { public: Out_Object_Argument_T (S_out & x); @@ -90,7 +90,7 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_param (Dynamic::Parameter &); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S_out arg (void); + S_out arg (void); private: S_ptr & x_; @@ -103,7 +103,7 @@ namespace TAO * */ template<typename S_ptr, typename S_var> - class Ret_Object_Argument_T : public Mutable_Argument_T<S_ptr &> + class Ret_Object_Argument_T : public Argument { public: @@ -113,7 +113,7 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_result (CORBA::Any *); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S_ptr & arg (void); + S_ptr & arg (void); S_ptr excp (void); S_ptr retn (void); diff --git a/TAO/tao/PortableServer/Any_SArg_Traits.h b/TAO/tao/PortableServer/Any_SArg_Traits.h index d73a10d85bb..393bb958210 100644 --- a/TAO/tao/PortableServer/Any_SArg_Traits.h +++ b/TAO/tao/PortableServer/Any_SArg_Traits.h @@ -12,8 +12,8 @@ //============================================================================= -#ifndef TAO_ANY_ARG_TRAITS_H -#define TAO_ANY_ARG_TRAITS_H +#ifndef TAO_ANY_SARG_TRAITS_H +#define TAO_ANY_SARG_TRAITS_H #include /**/ "ace/pre.h" @@ -24,8 +24,6 @@ #include "tao/PortableServer/Var_Size_SArgument_T.h" #include "tao/PortableServer/portableserver_export.h" -#include "tao/Arg_Traits_T.h" - namespace CORBA { class Any; diff --git a/TAO/tao/PortableServer/BD_String_SArgument_T.cpp b/TAO/tao/PortableServer/BD_String_SArgument_T.cpp index a5d0e07bd7f..37ae58694da 100644 --- a/TAO/tao/PortableServer/BD_String_SArgument_T.cpp +++ b/TAO/tao/PortableServer/BD_String_SArgument_T.cpp @@ -1,7 +1,7 @@ // $Id$ -#ifndef TAO_BD_STRING_SARGUMENT_T_C -#define TAO_BD_STRING_SARGUMENT_T_C +#ifndef TAO_BD_STRING_SARGUMENT_T_CPP +#define TAO_BD_STRING_SARGUMENT_T_CPP #include "tao/PortableServer/BD_String_SArgument_T.h" #include "tao/Dynamic_ParameterC.h" @@ -10,9 +10,6 @@ #include "tao/BD_String_SArgument_T.inl" #endif /* __ACE_INLINE__ */ -ACE_RCSID (PortableServer, - BD_String_SArgument_T, - "$Id$") template<typename S, typename S_var, @@ -155,4 +152,4 @@ interceptor_result (CORBA::Any * any) #endif /* TAO_HAS_INTERCEPTORS */ -#endif /* TAO_BD_STRING_SARGUMENT_T_C */ +#endif /* TAO_BD_STRING_SARGUMENT_T_CPP */ diff --git a/TAO/tao/PortableServer/BD_String_SArgument_T.h b/TAO/tao/PortableServer/BD_String_SArgument_T.h index 8b8fdf8d33f..ee3e8434d4b 100644 --- a/TAO/tao/PortableServer/BD_String_SArgument_T.h +++ b/TAO/tao/PortableServer/BD_String_SArgument_T.h @@ -173,10 +173,12 @@ namespace TAO from_T, BOUND> ret_val; - typedef Const_Argument_T<in_type> in_arg_base; - typedef Mutable_Argument_T<inout_type> inout_arg_base; - typedef Mutable_Argument_T<inout_type> out_arg_base; - typedef Mutable_Argument_T<inout_type> ret_base; + // Typedefs corresponding to return value of arg() method in both + // the client and server side argument class templates. + typedef in_type in_arg_type; + typedef inout_type inout_arg_type; + typedef inout_type out_arg_type; + typedef inout_type ret_arg_type; }; diff --git a/TAO/tao/PortableServer/Basic_SArgument_T.cpp b/TAO/tao/PortableServer/Basic_SArgument_T.cpp index 1b3dc22fa06..79301cfb9aa 100644 --- a/TAO/tao/PortableServer/Basic_SArgument_T.cpp +++ b/TAO/tao/PortableServer/Basic_SArgument_T.cpp @@ -1,7 +1,7 @@ // $Id$ -#ifndef TAO_BASIC_SARGUMENT_T_C -#define TAO_BASIC_SARGUMENT_T_C +#ifndef TAO_BASIC_SARGUMENT_T_CPP +#define TAO_BASIC_SARGUMENT_T_CPP #include "tao/PortableServer/Basic_SArgument_T.h" #include "tao/Dynamic_ParameterC.h" @@ -10,9 +10,6 @@ #include "tao/PortableServer/Basic_SArgument_T.inl" #endif /* __ACE_INLINE__ */ -ACE_RCSID (PortableServer, - Basic_SArgument_T, - "$Id$") template<typename S> CORBA::Boolean @@ -102,4 +99,4 @@ TAO::Ret_Basic_SArgument_T<S>::interceptor_result (CORBA::Any * any) #endif /* TAO_HAS_INTERCEPTORS */ -#endif /* TAO_BASIC_SARGUMENT_T_C */ +#endif /* TAO_BASIC_SARGUMENT_T_CPP */ diff --git a/TAO/tao/PortableServer/Basic_SArgument_T.h b/TAO/tao/PortableServer/Basic_SArgument_T.h index c10f61ec8ee..9353fda1fb7 100644 --- a/TAO/tao/PortableServer/Basic_SArgument_T.h +++ b/TAO/tao/PortableServer/Basic_SArgument_T.h @@ -31,7 +31,7 @@ namespace TAO * */ template<typename S> - class In_Basic_SArgument_T : public Const_Argument_T<S> + class In_Basic_SArgument_T : public Argument { public: In_Basic_SArgument_T (void); @@ -40,7 +40,7 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_param (Dynamic::Parameter &); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S arg (void) const; + S arg (void) const; private: S x_; @@ -53,7 +53,7 @@ namespace TAO * */ template<typename S> - class Inout_Basic_SArgument_T : public Mutable_Argument_T<S &> + class Inout_Basic_SArgument_T : public Argument { public: Inout_Basic_SArgument_T (void); @@ -63,7 +63,7 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_param (Dynamic::Parameter &); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S & arg (void); + S & arg (void); private: S x_; @@ -76,7 +76,7 @@ namespace TAO * */ template<typename S> - class Out_Basic_SArgument_T : public Mutable_Argument_T<S &> + class Out_Basic_SArgument_T : public Argument { public: Out_Basic_SArgument_T (void); @@ -85,7 +85,7 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_param (Dynamic::Parameter &); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S & arg (void); + S & arg (void); private: S x_; @@ -98,7 +98,7 @@ namespace TAO * */ template<typename S> - class Ret_Basic_SArgument_T : public Mutable_Argument_T<S &> + class Ret_Basic_SArgument_T : public Argument { public: Ret_Basic_SArgument_T (void); @@ -107,7 +107,7 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_result (CORBA::Any *); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S & arg (void); + S & arg (void); private: S x_; @@ -132,10 +132,12 @@ namespace TAO typedef Out_Basic_SArgument_T<T> out_arg_val; typedef Ret_Basic_SArgument_T<T> ret_val; - typedef Const_Argument_T<in_type> in_arg_base; - typedef Mutable_Argument_T<inout_type> inout_arg_base; - typedef Mutable_Argument_T<out_type> out_arg_base; - typedef Mutable_Argument_T<out_type> ret_base; + // Typedefs corresponding to return value of arg() method in both + // the client and server side argument class templates. + typedef in_type in_arg_type; + typedef inout_type inout_arg_type; + typedef out_type out_arg_type; + typedef out_type ret_arg_type; }; }; diff --git a/TAO/tao/PortableServer/Fixed_Array_SArgument_T.cpp b/TAO/tao/PortableServer/Fixed_Array_SArgument_T.cpp index 04b28148cb2..424e0a8f5b4 100644 --- a/TAO/tao/PortableServer/Fixed_Array_SArgument_T.cpp +++ b/TAO/tao/PortableServer/Fixed_Array_SArgument_T.cpp @@ -1,7 +1,7 @@ // $Id$ -#ifndef TAO_FIXED_ARRAY_SARGUMENT_T_C -#define TAO_FIXED_ARRAY_SARGUMENT_T_C +#ifndef TAO_FIXED_ARRAY_SARGUMENT_T_CPP +#define TAO_FIXED_ARRAY_SARGUMENT_T_CPP #include "tao/PortableServer/Fixed_Array_SArgument_T.h" #include "tao/Dynamic_ParameterC.h" @@ -10,13 +10,12 @@ #include "tao/PortableServer/Fixed_Array_SArgument_T.inl" #endif /* __ACE_INLINE__ */ -ACE_RCSID (PortableServer, - Fixed_Array_SArgument_T, - "$Id$") -template<typename S, typename S_forany> +template<typename S, typename S_slice, typename S_forany> CORBA::Boolean -TAO::In_Fixed_Array_SArgument_T<S,S_forany>::demarshal (TAO_InputCDR &cdr) +TAO::In_Fixed_Array_SArgument_T<S, + S_slice, + S_forany>::demarshal (TAO_InputCDR &cdr) { S_forany tmp (this->x_); return cdr >> tmp; @@ -24,9 +23,11 @@ TAO::In_Fixed_Array_SArgument_T<S,S_forany>::demarshal (TAO_InputCDR &cdr) #if TAO_HAS_INTERCEPTORS == 1 -template<typename S, typename S_forany> +template<typename S, typename S_slice, typename S_forany> void -TAO::In_Fixed_Array_SArgument_T<S,S_forany>::interceptor_param ( +TAO::In_Fixed_Array_SArgument_T<S, + S_slice, + S_forany>::interceptor_param ( Dynamic::Parameter & p ) { @@ -38,16 +39,20 @@ TAO::In_Fixed_Array_SArgument_T<S,S_forany>::interceptor_param ( // =========================================================== -template<typename S, typename S_forany> +template<typename S, typename S_slice, typename S_forany> CORBA::Boolean -TAO::Inout_Fixed_Array_SArgument_T<S,S_forany>::marshal (TAO_OutputCDR & cdr) +TAO::Inout_Fixed_Array_SArgument_T<S, + S_slice, + S_forany>::marshal (TAO_OutputCDR & cdr) { return cdr << S_forany (this->x_); } -template<typename S, typename S_forany> +template<typename S, typename S_slice, typename S_forany> CORBA::Boolean -TAO::Inout_Fixed_Array_SArgument_T<S,S_forany>::demarshal (TAO_InputCDR & cdr) +TAO::Inout_Fixed_Array_SArgument_T<S, + S_slice, + S_forany>::demarshal (TAO_InputCDR & cdr) { S_forany tmp (this->x_); return cdr >> tmp; @@ -55,9 +60,11 @@ TAO::Inout_Fixed_Array_SArgument_T<S,S_forany>::demarshal (TAO_InputCDR & cdr) #if TAO_HAS_INTERCEPTORS == 1 -template<typename S, typename S_forany> +template<typename S, typename S_slice, typename S_forany> void -TAO::Inout_Fixed_Array_SArgument_T<S,S_forany>::interceptor_param ( +TAO::Inout_Fixed_Array_SArgument_T<S, + S_slice, + S_forany>::interceptor_param ( Dynamic::Parameter & p ) { @@ -69,20 +76,23 @@ TAO::Inout_Fixed_Array_SArgument_T<S,S_forany>::interceptor_param ( // ============================================================== -template<typename S, typename S_forany> +template<typename S, typename S_slice, typename S_forany> CORBA::Boolean -TAO::Out_Fixed_Array_SArgument_T<S,S_forany>::marshal (TAO_OutputCDR &cdr) +TAO::Out_Fixed_Array_SArgument_T<S, + S_slice, + S_forany>::marshal (TAO_OutputCDR &cdr) { return cdr << S_forany (this->x_); } #if TAO_HAS_INTERCEPTORS == 1 -template<typename S, typename S_forany> +template<typename S, typename S_slice, typename S_forany> void -TAO::Out_Fixed_Array_SArgument_T<S,S_forany>::interceptor_param ( - Dynamic::Parameter & p - ) +TAO::Out_Fixed_Array_SArgument_T<S, + S_slice, + S_forany>::interceptor_param ( + Dynamic::Parameter & p) { p.argument <<= S_forany (this->x_); p.mode = CORBA::PARAM_OUT; @@ -114,4 +124,4 @@ TAO::Ret_Fixed_Array_SArgument_T<S_slice,S_var,S_forany>::interceptor_result ( #endif /* TAO_HAS_INTERCEPTORS */ -#endif /* TAO_FIXED_ARRAY_SARGUMENT_T_C */ +#endif /* TAO_FIXED_ARRAY_SARGUMENT_T_CPP */ diff --git a/TAO/tao/PortableServer/Fixed_Array_SArgument_T.h b/TAO/tao/PortableServer/Fixed_Array_SArgument_T.h index 1097f1639ba..cfc47f4ca71 100644 --- a/TAO/tao/PortableServer/Fixed_Array_SArgument_T.h +++ b/TAO/tao/PortableServer/Fixed_Array_SArgument_T.h @@ -30,8 +30,8 @@ namespace TAO * @brief IN skeleton argument of fixed size element array. * */ - template<typename S, typename S_forany> - class In_Fixed_Array_SArgument_T : public Const_Argument_T<S const &> + template<typename S, typename S_slice, typename S_forany> + class In_Fixed_Array_SArgument_T : public Argument { public: In_Fixed_Array_SArgument_T (void); @@ -40,10 +40,10 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_param (Dynamic::Parameter &); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S const & arg (void) const; + S_slice const * arg (void) const; private: - S x_; + S_forany x_; }; /** @@ -52,8 +52,8 @@ namespace TAO * @brief INOUT skeleton argument of fixed size element array. * */ - template<typename S, typename S_forany> - class Inout_Fixed_Array_SArgument_T : public Mutable_Argument_T<S &> + template<typename S, typename S_slice, typename S_forany> + class Inout_Fixed_Array_SArgument_T : public Argument { public: Inout_Fixed_Array_SArgument_T (void); @@ -63,10 +63,10 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_param (Dynamic::Parameter &); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S & arg (void); + S_slice * arg (void); private: - S x_; + S_forany x_; }; /** @@ -75,8 +75,8 @@ namespace TAO * @brief OUT skeleton argument of fixed size element array. * */ - template<typename S, typename S_forany> - class Out_Fixed_Array_SArgument_T : public Mutable_Argument_T<S &> + template<typename S, typename S_slice, typename S_forany> + class Out_Fixed_Array_SArgument_T : public Argument { public: Out_Fixed_Array_SArgument_T (void); @@ -85,10 +85,10 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_param (Dynamic::Parameter &); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S & arg (void); + S_slice *& arg (void); private: - S x_; + S_forany x_; }; /** @@ -98,7 +98,7 @@ namespace TAO * */ template<typename S_slice, typename S_var, typename S_forany> - class Ret_Fixed_Array_SArgument_T : public Mutable_Argument_T<S_slice *&> + class Ret_Fixed_Array_SArgument_T : public Argument { public: Ret_Fixed_Array_SArgument_T (void); @@ -107,7 +107,7 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_result (CORBA::Any *); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S_slice *& arg (void); + S_slice *& arg (void); private: S_var x_; @@ -130,17 +130,25 @@ namespace TAO typedef T inout_type; typedef T out_type; - typedef In_Fixed_Array_SArgument_T<T,T_forany> in_arg_val; - typedef Inout_Fixed_Array_SArgument_T<T,T_forany> inout_arg_val; - typedef Out_Fixed_Array_SArgument_T<T,T_forany> out_arg_val; + typedef In_Fixed_Array_SArgument_T<T, + T_slice, + T_forany> in_arg_val; + typedef Inout_Fixed_Array_SArgument_T<T, + T_slice, + T_forany> inout_arg_val; + typedef Out_Fixed_Array_SArgument_T<T, + T_slice, + T_forany> out_arg_val; typedef Ret_Fixed_Array_SArgument_T<T_slice, T_var, T_forany> ret_val; - typedef Const_Argument_T<T_slice const *> in_arg_base; - typedef Mutable_Argument_T<ret_type> inout_arg_base; - typedef Mutable_Argument_T<ret_type &> out_arg_base; - typedef Mutable_Argument_T<ret_type &> ret_base; + // Typedefs corresponding to return value of arg() method in both + // the client and server side argument class templates. + typedef T_slice const * in_arg_type; + typedef ret_type inout_arg_type; + typedef ret_type & out_arg_type; + typedef ret_type & ret_arg_type; }; }; diff --git a/TAO/tao/PortableServer/Fixed_Array_SArgument_T.inl b/TAO/tao/PortableServer/Fixed_Array_SArgument_T.inl index 4595eecce77..95349e884b7 100644 --- a/TAO/tao/PortableServer/Fixed_Array_SArgument_T.inl +++ b/TAO/tao/PortableServer/Fixed_Array_SArgument_T.inl @@ -1,49 +1,59 @@ +// -*- C++ -*- +// // $Id$ -template<typename S, typename S_forany> +template<typename S, typename S_slice, typename S_forany> ACE_INLINE -TAO::In_Fixed_Array_SArgument_T<S,S_forany>::In_Fixed_Array_SArgument_T (void) +TAO::In_Fixed_Array_SArgument_T<S, + S_slice, + S_forany>::In_Fixed_Array_SArgument_T (void) {} -template<typename S, typename S_forany> +template<typename S, typename S_slice, typename S_forany> ACE_INLINE -const S & -TAO::In_Fixed_Array_SArgument_T<S,S_forany>::arg (void) const +S_slice const * +TAO::In_Fixed_Array_SArgument_T<S, S_slice, S_forany>::arg (void) const { - return this->x_; + return this->x_.in (); } // =========================================================================== -template<typename S, typename S_forany> +template<typename S, typename S_slice, typename S_forany> ACE_INLINE -TAO::Inout_Fixed_Array_SArgument_T<S,S_forany>:: +TAO::Inout_Fixed_Array_SArgument_T<S, + S_slice, + S_forany>:: Inout_Fixed_Array_SArgument_T (void) {} -template<typename S, typename S_forany> +template<typename S, typename S_slice, typename S_forany> ACE_INLINE -S & -TAO::Inout_Fixed_Array_SArgument_T<S,S_forany>::arg (void) +S_slice * +TAO::Inout_Fixed_Array_SArgument_T<S, + S_slice, + S_forany>::arg (void) { - return this->x_; + return this->x_.inout (); } // =========================================================================== -template<typename S, typename S_forany> +template<typename S, typename S_slice, typename S_forany> ACE_INLINE -TAO::Out_Fixed_Array_SArgument_T<S,S_forany>::Out_Fixed_Array_SArgument_T ( - void - ) +TAO::Out_Fixed_Array_SArgument_T<S, + S_slice, + S_forany>::Out_Fixed_Array_SArgument_T (void) {} -template<typename S, typename S_forany> +template<typename S, typename S_slice, typename S_forany> ACE_INLINE -S & -TAO::Out_Fixed_Array_SArgument_T<S,S_forany>::arg (void) +S_slice *& +TAO::Out_Fixed_Array_SArgument_T<S, + S_slice, + S_forany>::arg (void) { - return this->x_; + return this->x_.out (); } // =========================================================================== diff --git a/TAO/tao/PortableServer/Fixed_Size_SArgument_T.h b/TAO/tao/PortableServer/Fixed_Size_SArgument_T.h index a70b595df7a..befd5b779ae 100644 --- a/TAO/tao/PortableServer/Fixed_Size_SArgument_T.h +++ b/TAO/tao/PortableServer/Fixed_Size_SArgument_T.h @@ -36,7 +36,7 @@ namespace TAO * size IDL types. */ template<typename S> - class In_Fixed_Size_SArgument_T : public Const_Argument_T<S const &> + class In_Fixed_Size_SArgument_T : public Argument { public: @@ -57,7 +57,7 @@ namespace TAO //@} /// Retrieve underlying argument. - virtual S const & arg (void) const; + S const & arg (void) const; private: @@ -75,7 +75,7 @@ namespace TAO * */ template<typename S> - class Inout_Fixed_Size_SArgument_T : public Mutable_Argument_T<S &> + class Inout_Fixed_Size_SArgument_T : public Argument { public: @@ -98,7 +98,7 @@ namespace TAO #endif /* TAO_HAS_INTERCEPTORS == 1 */ //@} - virtual S & arg (void); + S & arg (void); private: @@ -114,7 +114,7 @@ namespace TAO * */ template<typename S> - class Out_Fixed_Size_SArgument_T : public Mutable_Argument_T<S &> + class Out_Fixed_Size_SArgument_T : public Argument { public: @@ -136,7 +136,7 @@ namespace TAO #endif /* TAO_HAS_INTERCEPTORS == 1 */ //@} - virtual S & arg (void); + S & arg (void); private: @@ -153,7 +153,7 @@ namespace TAO * */ template<typename S> - class Ret_Fixed_Size_SArgument_T : public Mutable_Argument_T<S &> + class Ret_Fixed_Size_SArgument_T : public Argument { public: @@ -175,7 +175,7 @@ namespace TAO #endif /* TAO_HAS_INTERCEPTORS == 1 */ //@} - virtual S & arg (void); + S & arg (void); private: @@ -204,10 +204,12 @@ namespace TAO typedef Out_Fixed_Size_SArgument_T<T> out_arg_val; typedef Ret_Fixed_Size_SArgument_T<T> ret_val; - typedef Const_Argument_T<in_type> in_arg_base; - typedef Mutable_Argument_T<inout_type> inout_arg_base; - typedef Mutable_Argument_T<out_type> out_arg_base; - typedef Mutable_Argument_T<ret_type> ret_base; + // Typedefs corresponding to return value of arg() method in both + // the client and server side argument class templates. + typedef in_type in_arg_type; + typedef inout_type inout_arg_type; + typedef out_type out_arg_type; + typedef ret_type ret_arg_type; }; diff --git a/TAO/tao/PortableServer/Object_SArgument_T.cpp b/TAO/tao/PortableServer/Object_SArgument_T.cpp index 0a59e263d77..9a0c2906035 100644 --- a/TAO/tao/PortableServer/Object_SArgument_T.cpp +++ b/TAO/tao/PortableServer/Object_SArgument_T.cpp @@ -1,7 +1,7 @@ // $Id$ -#ifndef TAO_OBJECT_SARGUMENT_T_C -#define TAO_OBJECT_SARGUMENT_T_C +#ifndef TAO_OBJECT_SARGUMENT_T_CPP +#define TAO_OBJECT_SARGUMENT_T_CPP #include "tao/PortableServer/Object_SArgument_T.h" #include "tao/Dynamic_ParameterC.h" @@ -10,9 +10,6 @@ #include "tao/PortableServer/Object_SArgument_T.inl" #endif /* __ACE_INLINE__ */ -ACE_RCSID (PortableServer, - Object_SArgument_T, - "$Id$") template<typename S_ptr, typename S_var> CORBA::Boolean @@ -110,4 +107,4 @@ TAO::Ret_Object_SArgument_T<S_ptr,S_var>::interceptor_result ( #endif /* TAO_HAS_INTERCEPTORS */ -#endif /* TAO_OBJECT_SARGUMENT_T_C */ +#endif /* TAO_OBJECT_SARGUMENT_T_CPP */ diff --git a/TAO/tao/PortableServer/Object_SArgument_T.h b/TAO/tao/PortableServer/Object_SArgument_T.h index 23d1e920bfd..ffd58104e41 100644 --- a/TAO/tao/PortableServer/Object_SArgument_T.h +++ b/TAO/tao/PortableServer/Object_SArgument_T.h @@ -36,7 +36,7 @@ namespace TAO * */ template<typename S_ptr, typename S_var> - class In_Object_SArgument_T : public Const_Argument_T<S_ptr> + class In_Object_SArgument_T : public Argument { public: @@ -44,7 +44,7 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_param (Dynamic::Parameter &); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S_ptr arg (void) const; + S_ptr arg (void) const; private: S_var x_; @@ -57,7 +57,7 @@ namespace TAO * */ template<typename S_ptr, typename S_var> - class Inout_Object_SArgument_T : public Mutable_Argument_T<S_ptr &> + class Inout_Object_SArgument_T : public Argument { public: Inout_Object_SArgument_T (void); @@ -67,7 +67,7 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_param (Dynamic::Parameter &); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S_ptr & arg (void); + S_ptr & arg (void); private: S_var x_; @@ -80,7 +80,7 @@ namespace TAO * */ template<typename S_ptr, typename S_var, typename S_out> - class Out_Object_SArgument_T : public Mutable_Argument_T<S_out> + class Out_Object_SArgument_T : public Argument { public: Out_Object_SArgument_T (void); @@ -89,7 +89,7 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_param (Dynamic::Parameter &); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S_out arg (void); + S_out arg (void); private: S_var x_; @@ -102,7 +102,7 @@ namespace TAO * */ template<typename S_ptr, typename S_var> - class Ret_Object_SArgument_T : public Mutable_Argument_T<S_ptr &> + class Ret_Object_SArgument_T : public Argument { public: Ret_Object_SArgument_T (void); @@ -111,7 +111,7 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_result (CORBA::Any *); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S_ptr & arg (void); + S_ptr & arg (void); private: S_var x_; @@ -136,10 +136,12 @@ namespace TAO typedef Out_Object_SArgument_T<T_ptr,T_var,T_out> out_arg_val; typedef Ret_Object_SArgument_T<T_ptr,T_var> ret_val; - typedef Const_Argument_T<in_type> in_arg_base; - typedef Mutable_Argument_T<inout_type> inout_arg_base; - typedef Mutable_Argument_T<out_type> out_arg_base; - typedef Mutable_Argument_T<inout_type> ret_base; + // Typedefs corresponding to return value of arg() method in both + // the client and server side argument class templates. + typedef in_type in_arg_type; + typedef inout_type inout_arg_type; + typedef out_type out_arg_type; + typedef inout_type ret_arg_type; }; } diff --git a/TAO/tao/PortableServer/Special_Basic_SArgument_T.cpp b/TAO/tao/PortableServer/Special_Basic_SArgument_T.cpp index b2e595f4d76..515032f91a2 100644 --- a/TAO/tao/PortableServer/Special_Basic_SArgument_T.cpp +++ b/TAO/tao/PortableServer/Special_Basic_SArgument_T.cpp @@ -1,7 +1,7 @@ // $Id$ -#ifndef TAO_SPECIAL_BASIC_SARGUMENT_T_C -#define TAO_SPECIAL_BASIC_SARGUMENT_T_C +#ifndef TAO_SPECIAL_BASIC_SARGUMENT_T_CPP +#define TAO_SPECIAL_BASIC_SARGUMENT_T_CPP #include "tao/PortableServer/Special_Basic_SArgument_T.h" #include "tao/Dynamic_ParameterC.h" @@ -10,9 +10,6 @@ #include "tao/PortableServer/Special_Basic_SArgument_T.inl" #endif /* __ACE_INLINE__ */ -ACE_RCSID (PortableServer, - Special_Basic_SArgument_T, - "$Id$") // ============================================================ @@ -122,4 +119,4 @@ TAO::Ret_Special_Basic_SArgument_T<S,to_S,from_S>::interceptor_result ( #endif /* TAO_HAS_INTERCEPTORS */ -#endif /* TAO_SPECIAL_BASIC_SARGUMENT_T_C */ +#endif /* TAO_SPECIAL_BASIC_SARGUMENT_T_CPP */ diff --git a/TAO/tao/PortableServer/Special_Basic_SArgument_T.h b/TAO/tao/PortableServer/Special_Basic_SArgument_T.h index fb3916fa1da..c9759cee60f 100644 --- a/TAO/tao/PortableServer/Special_Basic_SArgument_T.h +++ b/TAO/tao/PortableServer/Special_Basic_SArgument_T.h @@ -31,7 +31,7 @@ namespace TAO * */ template<typename S, typename to_S, typename from_S> - class In_Special_Basic_SArgument_T : public Const_Argument_T<S const &> + class In_Special_Basic_SArgument_T : public Argument { public: In_Special_Basic_SArgument_T (void); @@ -40,7 +40,7 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_param (Dynamic::Parameter &); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S const & arg (void) const; + S const & arg (void) const; private: S x_; @@ -53,7 +53,7 @@ namespace TAO * */ template<typename S, typename to_S, typename from_S> - class Inout_Special_Basic_SArgument_T : public Mutable_Argument_T<S &> + class Inout_Special_Basic_SArgument_T : public Argument { public: Inout_Special_Basic_SArgument_T (void); @@ -63,7 +63,7 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_param (Dynamic::Parameter &); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S & arg (void); + S & arg (void); private: S x_; @@ -76,7 +76,7 @@ namespace TAO * */ template<typename S, typename to_S, typename from_S> - class Out_Special_Basic_SArgument_T : public Mutable_Argument_T<S &> + class Out_Special_Basic_SArgument_T : public Argument { public: Out_Special_Basic_SArgument_T (void); @@ -85,7 +85,7 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_param (Dynamic::Parameter &); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S & arg (void); + S & arg (void); private: S x_; @@ -98,7 +98,7 @@ namespace TAO * */ template<typename S, typename to_S, typename from_S> - class Ret_Special_Basic_SArgument_T : public Mutable_Argument_T<S &> + class Ret_Special_Basic_SArgument_T : public Argument { public: Ret_Special_Basic_SArgument_T (void); @@ -107,7 +107,7 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_result (CORBA::Any *); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S & arg (void); + S & arg (void); private: S x_; @@ -133,10 +133,12 @@ namespace TAO typedef Out_Special_Basic_SArgument_T<T,to_T,from_T> out_arg_val; typedef Ret_Special_Basic_SArgument_T<T,to_T,from_T> ret_val; - typedef Const_Argument_T<T const &> in_arg_base; - typedef Mutable_Argument_T<inout_type> inout_arg_base; - typedef Mutable_Argument_T<out_type> out_arg_base; - typedef Mutable_Argument_T<out_type> ret_base; + // Typedefs corresponding to return value of arg() method in both + // the client and server side argument class templates. + typedef T const & in_arg_type; + typedef inout_type inout_arg_type; + typedef out_type out_arg_type; + typedef out_type ret_arg_type; }; }; diff --git a/TAO/tao/PortableServer/UB_String_SArgument_T.cpp b/TAO/tao/PortableServer/UB_String_SArgument_T.cpp index b53eb6e62fb..d73fa550b34 100644 --- a/TAO/tao/PortableServer/UB_String_SArgument_T.cpp +++ b/TAO/tao/PortableServer/UB_String_SArgument_T.cpp @@ -1,7 +1,7 @@ // $Id$ -#ifndef TAO_UB_STRING_SARGUMENT_T_C -#define TAO_UB_STRING_SARGUMENT_T_C +#ifndef TAO_UB_STRING_SARGUMENT_T_CPP +#define TAO_UB_STRING_SARGUMENT_T_CPP #include "tao/PortableServer/UB_String_SArgument_T.h" #include "tao/Dynamic_ParameterC.h" @@ -10,9 +10,6 @@ #include "tao/PortableServer/UB_String_SArgument_T.inl" #endif /* __ACE_INLINE__ */ -ACE_RCSID (PortableServer, - UB_String_SArgument_T, - "$Id$") template<typename S, typename S_var> CORBA::Boolean @@ -108,4 +105,4 @@ TAO::Ret_UB_String_SArgument_T<S,S_var>::interceptor_result (CORBA::Any * any) #endif /* TAO_HAS_INTERCEPTORS */ -#endif /* TAO_UB_STRING_SARGUMENT_T_C */ +#endif /* TAO_UB_STRING_SARGUMENT_T_CPP */ diff --git a/TAO/tao/PortableServer/UB_String_SArgument_T.h b/TAO/tao/PortableServer/UB_String_SArgument_T.h index 3d4baf07599..a9b4e405e1a 100644 --- a/TAO/tao/PortableServer/UB_String_SArgument_T.h +++ b/TAO/tao/PortableServer/UB_String_SArgument_T.h @@ -30,7 +30,7 @@ namespace TAO * */ template<typename S, typename S_var> - class In_UB_String_SArgument_T : public Const_Argument_T<S const *> + class In_UB_String_SArgument_T : public Argument { public: In_UB_String_SArgument_T (void); @@ -39,7 +39,7 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_param (Dynamic::Parameter &); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S const * arg (void) const; + S const * arg (void) const; private: S_var x_; @@ -52,7 +52,7 @@ namespace TAO * */ template<typename S, typename S_var> - class Inout_UB_String_SArgument_T : public Mutable_Argument_T<S *&> + class Inout_UB_String_SArgument_T : public Argument { public: Inout_UB_String_SArgument_T (void); @@ -62,7 +62,7 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_param (Dynamic::Parameter &); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S *& arg (void); + S *& arg (void); private: S_var x_; @@ -75,7 +75,7 @@ namespace TAO * */ template<typename S, typename S_var> - class Out_UB_String_SArgument_T : public Mutable_Argument_T<S *&> + class Out_UB_String_SArgument_T : public Argument { public: Out_UB_String_SArgument_T (void); @@ -84,7 +84,7 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_param (Dynamic::Parameter &); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S *& arg (void); + S *& arg (void); private: S_var x_; @@ -97,7 +97,7 @@ namespace TAO * */ template<typename S, typename S_var> - class Ret_UB_String_SArgument_T : public Mutable_Argument_T<S *&> + class Ret_UB_String_SArgument_T : public Argument { public: Ret_UB_String_SArgument_T (void); @@ -106,7 +106,7 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_result (CORBA::Any *); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S *& arg (void); + S *& arg (void); private: S_var x_; @@ -131,10 +131,12 @@ namespace TAO typedef Out_UB_String_SArgument_T<T,T_var> out_arg_val; typedef Ret_UB_String_SArgument_T<T,T_var> ret_val; - typedef Const_Argument_T<in_type> in_arg_base; - typedef Mutable_Argument_T<inout_type> inout_arg_base; - typedef Mutable_Argument_T<inout_type> out_arg_base; - typedef Mutable_Argument_T<inout_type> ret_base; + // Typedefs corresponding to return value of arg() method in both + // the client and server side argument class templates. + typedef in_type in_arg_type; + typedef inout_type inout_arg_type; + typedef inout_type out_arg_type; + typedef inout_type ret_arg_type; }; }; diff --git a/TAO/tao/PortableServer/Var_Array_SArgument_T.cpp b/TAO/tao/PortableServer/Var_Array_SArgument_T.cpp index 9966380ca6f..3bf33ee7e48 100644 --- a/TAO/tao/PortableServer/Var_Array_SArgument_T.cpp +++ b/TAO/tao/PortableServer/Var_Array_SArgument_T.cpp @@ -1,7 +1,7 @@ // $Id$ -#ifndef TAO_VAR_ARRAY_SARGUMENT_T_C -#define TAO_VAR_ARRAY_SARGUMENT_T_C +#ifndef TAO_VAR_ARRAY_SARGUMENT_T_CPP +#define TAO_VAR_ARRAY_SARGUMENT_T_CPP #include "tao/PortableServer/Var_Array_SArgument_T.h" #include "tao/Dynamic_ParameterC.h" @@ -10,27 +10,26 @@ #include "tao/PortableServer/Var_Array_SArgument_T.inl" #endif /* __ACE_INLINE__ */ -ACE_RCSID (PortableServer, - Var_Array_SArgument_T, - "$Id$") -template<typename S, typename S_forany> +template<typename S, typename S_slice, typename S_forany> CORBA::Boolean -TAO::In_Var_Array_SArgument_T<S,S_forany>::demarshal (TAO_InputCDR &cdr) +TAO::In_Var_Array_SArgument_T<S, + S_slice, + S_forany>::demarshal (TAO_InputCDR & cdr) { - S_forany tmp (this->x_); - return cdr >> tmp; + return cdr >> this->x_; } #if TAO_HAS_INTERCEPTORS == 1 -template<typename S, typename S_forany> +template<typename S, typename S_slice, typename S_forany> void -TAO::In_Var_Array_SArgument_T<S,S_forany>::interceptor_param ( - Dynamic::Parameter & p - ) +TAO::In_Var_Array_SArgument_T<S, + S_slice, + S_forany>::interceptor_param ( + Dynamic::Parameter & p) { - p.argument <<= S_forany (this->x_); + p.argument <<= this->x_; p.mode = CORBA::PARAM_IN; } @@ -38,30 +37,32 @@ TAO::In_Var_Array_SArgument_T<S,S_forany>::interceptor_param ( // =========================================================== -template<typename S, typename S_forany> +template<typename S, typename S_slice, typename S_forany> CORBA::Boolean -TAO::Inout_Var_Array_SArgument_T<S,S_forany>::marshal (TAO_OutputCDR & cdr) +TAO::Inout_Var_Array_SArgument_T<S, + S_slice, + S_forany>::marshal (TAO_OutputCDR & cdr) { - return cdr << S_forany (this->x_); + return cdr << this->x_; } -template<typename S, typename S_forany> +template<typename S, typename S_slice, typename S_forany> CORBA::Boolean -TAO::Inout_Var_Array_SArgument_T<S,S_forany>::demarshal (TAO_InputCDR & cdr) +TAO::Inout_Var_Array_SArgument_T<S, + S_slice, + S_forany>::demarshal (TAO_InputCDR & cdr) { - S_forany tmp (this->x_); - return cdr >> tmp; + return cdr >> this->x_; } #if TAO_HAS_INTERCEPTORS == 1 -template<typename S, typename S_forany> +template<typename S, typename S_slice, typename S_forany> void -TAO::Inout_Var_Array_SArgument_T<S,S_forany>::interceptor_param ( - Dynamic::Parameter & p - ) +TAO::Inout_Var_Array_SArgument_T<S, S_slice, S_forany>::interceptor_param ( + Dynamic::Parameter & p) { - p.argument <<= S_forany (this->x_); + p.argument <<= this->x_; p.mode = CORBA::PARAM_INOUT; } @@ -75,7 +76,7 @@ TAO::Out_Var_Array_SArgument_T<S_slice,S_var,S_forany>::marshal ( TAO_OutputCDR & cdr ) { - return cdr << S_forany (this->x_.ptr ()); + return cdr << this->x_.ptr (); } #if TAO_HAS_INTERCEPTORS == 1 @@ -116,4 +117,4 @@ TAO::Ret_Var_Array_SArgument_T<S_slice,S_var,S_forany>::interceptor_result ( #endif /* TAO_HAS_INTERCEPTORS */ -#endif /* TAO_VAR_ARRAY_SARGUMENT_T_C */ +#endif /* TAO_VAR_ARRAY_SARGUMENT_T_CPP */ diff --git a/TAO/tao/PortableServer/Var_Array_SArgument_T.h b/TAO/tao/PortableServer/Var_Array_SArgument_T.h index 7c560c08d59..e203c4b1c0a 100644 --- a/TAO/tao/PortableServer/Var_Array_SArgument_T.h +++ b/TAO/tao/PortableServer/Var_Array_SArgument_T.h @@ -29,20 +29,21 @@ namespace TAO * @brief IN skeleton argument of variable size element array. * */ - template<typename S, typename S_forany> - class In_Var_Array_SArgument_T : public Const_Argument_T<S const &> + template<typename S, typename S_slice, typename S_forany> + class In_Var_Array_SArgument_T : public Argument { public: + In_Var_Array_SArgument_T (void); virtual CORBA::Boolean demarshal (TAO_InputCDR &); #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_param (Dynamic::Parameter &); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S const & arg (void) const; + S_slice const * arg (void) const; private: - S x_; + S_forany x_; }; /** @@ -51,8 +52,8 @@ namespace TAO * @brief INOUT skeleton argument of variable size element array. * */ - template<typename S, typename S_forany> - class Inout_Var_Array_SArgument_T : public Mutable_Argument_T<S &> + template<typename S, typename S_slice, typename S_forany> + class Inout_Var_Array_SArgument_T : public Argument { public: Inout_Var_Array_SArgument_T (void); @@ -62,10 +63,10 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_param (Dynamic::Parameter &); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S & arg (void); + S_slice * arg (void); private: - S x_; + S_forany x_; }; /** @@ -75,7 +76,7 @@ namespace TAO * */ template<typename S_slice, typename S_var, typename S_forany> - class Out_Var_Array_SArgument_T : public Mutable_Argument_T<S_slice *&> + class Out_Var_Array_SArgument_T : public Argument { public: Out_Var_Array_SArgument_T (void); @@ -84,7 +85,7 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_param (Dynamic::Parameter &); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S_slice *& arg (void); + S_slice *& arg (void); private: S_var x_; @@ -97,7 +98,7 @@ namespace TAO * */ template<typename S_slice, typename S_var, typename S_forany> - class Ret_Var_Array_SArgument_T : public Mutable_Argument_T<S_slice *&> + class Ret_Var_Array_SArgument_T : public Argument { public: Ret_Var_Array_SArgument_T (void); @@ -106,7 +107,7 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_result (CORBA::Any *); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S_slice *& arg (void); + S_slice *& arg (void); private: S_var x_; @@ -130,8 +131,12 @@ namespace TAO typedef T inout_type; typedef T_out out_type; - typedef In_Var_Array_SArgument_T<T,T_forany> in_arg_val; - typedef Inout_Var_Array_SArgument_T<T,T_forany> inout_arg_val; + typedef In_Var_Array_SArgument_T<T, + T_slice, + T_forany> in_arg_val; + typedef Inout_Var_Array_SArgument_T<T, + T_slice, + T_forany> inout_arg_val; typedef Out_Var_Array_SArgument_T<T_slice, T_var, T_forany> out_arg_val; @@ -139,10 +144,12 @@ namespace TAO T_var, T_forany> ret_val; - typedef Const_Argument_T<T_slice const *> in_arg_base; - typedef Mutable_Argument_T<ret_type> inout_arg_base; - typedef Mutable_Argument_T<ret_type &> out_arg_base; - typedef Mutable_Argument_T<ret_type &> ret_base; + // Typedefs corresponding to return value of arg() method in both + // the client and server side argument class templates. + typedef T_slice const * in_arg_type; + typedef ret_type inout_arg_type; + typedef ret_type & out_arg_type; + typedef ret_type & ret_arg_type; }; }; diff --git a/TAO/tao/PortableServer/Var_Array_SArgument_T.inl b/TAO/tao/PortableServer/Var_Array_SArgument_T.inl index 74909b17512..58bf2c6dbb9 100644 --- a/TAO/tao/PortableServer/Var_Array_SArgument_T.inl +++ b/TAO/tao/PortableServer/Var_Array_SArgument_T.inl @@ -1,32 +1,41 @@ +// -*- C++ -*- +// // $Id$ -template<typename S, typename S_forany> +template<typename S, typename S_slice, typename S_forany> ACE_INLINE -TAO::In_Var_Array_SArgument_T<S,S_forany>::In_Var_Array_SArgument_T (void) +TAO::In_Var_Array_SArgument_T<S, + S_slice, + S_forany>::In_Var_Array_SArgument_T (void) {} -template<typename S, typename S_forany> +template<typename S, typename S_slice, typename S_forany> ACE_INLINE -const S & -TAO::In_Var_Array_SArgument_T<S,S_forany>::arg (void) const +S_slice const * +TAO::In_Var_Array_SArgument_T<S, + S_slice, + S_forany>::arg (void) const { - return this->x_; + return this->x_.in (); } // ========================================================================== -template<typename S, typename S_forany> +template<typename S, typename S_slice, typename S_forany> ACE_INLINE -TAO::Inout_Var_Array_SArgument_T<S,S_forany>:: -Inout_Var_Array_SArgument_T (void) +TAO::Inout_Var_Array_SArgument_T<S, + S_slice, + S_forany>::Inout_Var_Array_SArgument_T (void) {} -template<typename S, typename S_forany> -S & -TAO::Inout_Var_Array_SArgument_T<S,S_forany>::arg (void) +template<typename S, typename S_slice, typename S_forany> +S_slice * +TAO::Inout_Var_Array_SArgument_T<S, + S_slice, + S_forany>::arg (void) { - return this->x_; + return this->x_.inout (); } // ========================================================================== diff --git a/TAO/tao/PortableServer/Var_Size_SArgument_T.cpp b/TAO/tao/PortableServer/Var_Size_SArgument_T.cpp index 94e787cdc0a..d2e25bebae1 100644 --- a/TAO/tao/PortableServer/Var_Size_SArgument_T.cpp +++ b/TAO/tao/PortableServer/Var_Size_SArgument_T.cpp @@ -1,7 +1,7 @@ // $Id$ -#ifndef TAO_VAR_SIZE_SARGUMENT_T_C -#define TAO_VAR_SIZE_SARGUMENT_T_C +#ifndef TAO_VAR_SIZE_SARGUMENT_T_CPP +#define TAO_VAR_SIZE_SARGUMENT_T_CPP #include "tao/PortableServer/Var_Size_SArgument_T.h" #include "tao/Dynamic_ParameterC.h" @@ -10,9 +10,6 @@ #include "tao/PortableServer/Var_Size_SArgument_T.inl" #endif /* __ACE_INLINE__ */ -ACE_RCSID (PortableServer, - Var_Size_SArgument_T, - "$Id$") template<typename S> CORBA::Boolean @@ -104,4 +101,4 @@ TAO::Ret_Var_Size_SArgument_T<S,S_var>::interceptor_result (CORBA::Any * any) #endif /* TAO_HAS_INTERCEPTORS */ -#endif /* TAO_VAR_SIZE_SARGUMENT_T_C */ +#endif /* TAO_VAR_SIZE_SARGUMENT_T_CPP */ diff --git a/TAO/tao/PortableServer/Var_Size_SArgument_T.h b/TAO/tao/PortableServer/Var_Size_SArgument_T.h index 7eb015fb692..709a04730d8 100644 --- a/TAO/tao/PortableServer/Var_Size_SArgument_T.h +++ b/TAO/tao/PortableServer/Var_Size_SArgument_T.h @@ -29,7 +29,7 @@ namespace TAO * */ template<typename S> - class In_Var_Size_SArgument_T : public Const_Argument_T<S const &> + class In_Var_Size_SArgument_T : public Argument { public: @@ -37,7 +37,7 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_param (Dynamic::Parameter &); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S const & arg (void) const; + S const & arg (void) const; private: S * x_; @@ -50,7 +50,7 @@ namespace TAO * */ template<typename S> - class Inout_Var_Size_SArgument_T : public Mutable_Argument_T<S &> + class Inout_Var_Size_SArgument_T : public Argument { public: Inout_Var_Size_SArgument_T (void); @@ -60,7 +60,7 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_param (Dynamic::Parameter &); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S & arg (void); + S & arg (void); private: S * x_; @@ -73,7 +73,7 @@ namespace TAO * */ template<typename S, typename S_var> - class Out_Var_Size_SArgument_T : public Mutable_Argument_T<S *&> + class Out_Var_Size_SArgument_T : public Argument { public: Out_Var_Size_SArgument_T (void); @@ -82,7 +82,7 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_param (Dynamic::Parameter &); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S *& arg (void); + S *& arg (void); private: S_var x_; @@ -95,7 +95,7 @@ namespace TAO * */ template<typename S, typename S_var> - class Ret_Var_Size_SArgument_T : public Mutable_Argument_T<S *&> + class Ret_Var_Size_SArgument_T : public Argument { public: Ret_Var_Size_SArgument_T (void); @@ -104,7 +104,7 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_result (CORBA::Any *); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S *& arg (void); + S *& arg (void); private: S_var x_; @@ -130,10 +130,12 @@ namespace TAO typedef Out_Var_Size_SArgument_T<T,T_var> out_arg_val; typedef Ret_Var_Size_SArgument_T<T,T_var> ret_val; - typedef Const_Argument_T<in_type> in_arg_base; - typedef Mutable_Argument_T<inout_type> inout_arg_base; - typedef Mutable_Argument_T<ret_type &> out_arg_base; - typedef Mutable_Argument_T<ret_type &> ret_base; + // Typedefs corresponding to return value of arg() method in both + // the client and server side argument class templates. + typedef in_type in_arg_type; + typedef inout_type inout_arg_type; + typedef ret_type & out_arg_type; + typedef ret_type & ret_arg_type; }; } diff --git a/TAO/tao/Special_Basic_Argument_T.h b/TAO/tao/Special_Basic_Argument_T.h index 9b785e9a5a4..ef1a884b055 100644 --- a/TAO/tao/Special_Basic_Argument_T.h +++ b/TAO/tao/Special_Basic_Argument_T.h @@ -32,7 +32,7 @@ namespace TAO * */ template<typename S, typename to_S, typename from_S> - class In_Special_Basic_Argument_T : public Const_Argument_T<S const &> + class In_Special_Basic_Argument_T : public Argument { public: In_Special_Basic_Argument_T (S const &); @@ -41,7 +41,7 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_param (Dynamic::Parameter &); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S const & arg (void) const; + S const & arg (void) const; private: S const & x_; @@ -54,7 +54,7 @@ namespace TAO * */ template<typename S, typename to_S, typename from_S> - class Inout_Special_Basic_Argument_T : public Mutable_Argument_T<S &> + class Inout_Special_Basic_Argument_T : public Argument { public: Inout_Special_Basic_Argument_T (S & x); @@ -64,7 +64,7 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_param (Dynamic::Parameter &); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S & arg (void); + S & arg (void); private: S & x_; @@ -77,7 +77,7 @@ namespace TAO * */ template<typename S, typename to_S, typename from_S> - class Out_Special_Basic_Argument_T : public Mutable_Argument_T<S &> + class Out_Special_Basic_Argument_T : public Argument { public: Out_Special_Basic_Argument_T (S & x); @@ -86,7 +86,7 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_param (Dynamic::Parameter &); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S & arg (void); + S & arg (void); private: mutable S & x_; @@ -99,7 +99,7 @@ namespace TAO * */ template<typename S, typename to_S, typename from_S> - class Ret_Special_Basic_Argument_T : public Mutable_Argument_T<S &> + class Ret_Special_Basic_Argument_T : public Argument { public: Ret_Special_Basic_Argument_T (void); @@ -108,7 +108,7 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_result (CORBA::Any *); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S & arg (void); + S & arg (void); S excp (void); S retn (void); diff --git a/TAO/tao/UB_String_Argument_T.h b/TAO/tao/UB_String_Argument_T.h index efd429fd2fa..e8bb089ceff 100644 --- a/TAO/tao/UB_String_Argument_T.h +++ b/TAO/tao/UB_String_Argument_T.h @@ -30,7 +30,7 @@ namespace TAO * */ template<typename S> - class In_UB_String_Argument_T : public Const_Argument_T<S const *> + class In_UB_String_Argument_T : public Argument { public: In_UB_String_Argument_T (const S * x); @@ -39,7 +39,7 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_param (Dynamic::Parameter &); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S const * arg (void) const; + S const * arg (void) const; private: S const * x_; @@ -52,7 +52,7 @@ namespace TAO * */ template<typename S> - class Inout_UB_String_Argument_T : public Mutable_Argument_T<S *&> + class Inout_UB_String_Argument_T : public Argument { public: Inout_UB_String_Argument_T (S *& x); @@ -62,7 +62,7 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_param (Dynamic::Parameter &); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S *& arg (void); + S *& arg (void); private: S *& x_; @@ -75,7 +75,7 @@ namespace TAO * */ template<typename S, typename S_out> - class Out_UB_String_Argument_T : public Mutable_Argument_T<S *&> + class Out_UB_String_Argument_T : public Argument { public: Out_UB_String_Argument_T (S_out & x); @@ -84,7 +84,7 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_param (Dynamic::Parameter &); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S *& arg (void); + S *& arg (void); private: mutable S *& x_; @@ -97,7 +97,7 @@ namespace TAO * */ template<typename S, typename S_var> - class Ret_UB_String_Argument_T : public Mutable_Argument_T<S *&> + class Ret_UB_String_Argument_T : public Argument { public: Ret_UB_String_Argument_T (void); @@ -106,7 +106,7 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_result (CORBA::Any *); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S *& arg (void); + S *& arg (void); S * excp (void); S * retn (void); diff --git a/TAO/tao/Var_Array_Argument_T.h b/TAO/tao/Var_Array_Argument_T.h index 7ee49b43b43..6042219fc22 100644 --- a/TAO/tao/Var_Array_Argument_T.h +++ b/TAO/tao/Var_Array_Argument_T.h @@ -30,7 +30,7 @@ namespace TAO * */ template<typename S, typename S_slice, typename S_forany> - class In_Var_Array_Argument_T : public Const_Argument_T<S_slice const *> + class In_Var_Array_Argument_T : public Argument { public: In_Var_Array_Argument_T (const S_slice * x); @@ -39,7 +39,7 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_param (Dynamic::Parameter &); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S_slice const * arg (void) const; + S_slice const * arg (void) const; private: S_forany x_; @@ -52,7 +52,7 @@ namespace TAO * */ template<typename S, typename S_slice, typename S_forany> - class Inout_Var_Array_Argument_T : public Mutable_Argument_T<S_slice *> + class Inout_Var_Array_Argument_T : public Argument { public: Inout_Var_Array_Argument_T (S_slice *&x); @@ -62,7 +62,7 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_param (Dynamic::Parameter &); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S_slice * arg (void); + S_slice * arg (void); private: S_forany x_; @@ -80,7 +80,7 @@ namespace TAO typename S_out, typename S_forany, typename S_tag> - class Out_Var_Array_Argument_T : public Mutable_Argument_T<S_slice *&> + class Out_Var_Array_Argument_T : public Argument { public: Out_Var_Array_Argument_T (S_out x); @@ -89,7 +89,7 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_param (Dynamic::Parameter &); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S_slice *& arg (void); + S_slice *& arg (void); private: S_slice *& x_; @@ -106,7 +106,7 @@ namespace TAO typename S_var, typename S_forany, typename S_tag> - class Ret_Var_Array_Argument_T : public Mutable_Argument_T<S_slice *&> + class Ret_Var_Array_Argument_T : public Argument { public: Ret_Var_Array_Argument_T (void); @@ -115,7 +115,7 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_result (CORBA::Any *); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S_slice *& arg (void); + S_slice *& arg (void); S_slice * excp (void); S_slice * retn (void); diff --git a/TAO/tao/Var_Array_Argument_T.inl b/TAO/tao/Var_Array_Argument_T.inl index bc1c0bf0f45..a189584da2e 100644 --- a/TAO/tao/Var_Array_Argument_T.inl +++ b/TAO/tao/Var_Array_Argument_T.inl @@ -11,7 +11,7 @@ In_Var_Array_Argument_T (const S_slice * x) template<typename S, typename S_slice, typename S_forany> ACE_INLINE -const S_slice * +S_slice const * TAO::In_Var_Array_Argument_T<S,S_slice,S_forany>::arg (void) const { return this->x_.in (); diff --git a/TAO/tao/Var_Size_Argument_T.h b/TAO/tao/Var_Size_Argument_T.h index e0d34c7c442..6fa5ea16f3d 100644 --- a/TAO/tao/Var_Size_Argument_T.h +++ b/TAO/tao/Var_Size_Argument_T.h @@ -30,7 +30,7 @@ namespace TAO * */ template<typename S> - class In_Var_Size_Argument_T : public Const_Argument_T<S const &> + class In_Var_Size_Argument_T : public Argument { public: In_Var_Size_Argument_T (S const & x); @@ -39,7 +39,7 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_param (Dynamic::Parameter &); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S const & arg (void) const; + S const & arg (void) const; private: const S * x_; @@ -52,7 +52,7 @@ namespace TAO * */ template<typename S> - class Inout_Var_Size_Argument_T : public Mutable_Argument_T<S &> + class Inout_Var_Size_Argument_T : public Argument { public: Inout_Var_Size_Argument_T (S & x); @@ -62,7 +62,7 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_param (Dynamic::Parameter &); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S & arg (void); + S & arg (void); private: S * x_; @@ -75,7 +75,7 @@ namespace TAO * */ template<typename S, typename S_out> - class Out_Var_Size_Argument_T : public Mutable_Argument_T<S *&> + class Out_Var_Size_Argument_T : public Argument { public: Out_Var_Size_Argument_T (S_out x); @@ -84,7 +84,7 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_param (Dynamic::Parameter &); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S *& arg (void); + S *& arg (void); private: S *& x_; @@ -97,7 +97,7 @@ namespace TAO * */ template<typename S, typename S_var> - class Ret_Var_Size_Argument_T : public Mutable_Argument_T<S *&> + class Ret_Var_Size_Argument_T : public Argument { public: Ret_Var_Size_Argument_T (void); @@ -106,7 +106,7 @@ namespace TAO #if TAO_HAS_INTERCEPTORS == 1 virtual void interceptor_result (CORBA::Any *); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - virtual S *& arg (void); + S *& arg (void); S * excp (void); S * retn (void); |