summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2003-10-25 05:46:08 +0000
committerparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2003-10-25 05:46:08 +0000
commitb4fc474c68da5b22ac89d954ef00c52ebe8c2d46 (patch)
tree75a758e5b4aeba02cb4eca362bbab500465f9cdc
parent8133b1bbed93c3a795197a25b8faf6809ada90fd (diff)
downloadATCD-b4fc474c68da5b22ac89d954ef00c52ebe8c2d46.tar.gz
ChangeLogTag: Sat Oct 25 000:28:02 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
-rw-r--r--TAO/ChangeLog_ref53
-rw-r--r--TAO/TAO_IDL/be/be_visitor_array/any_op_cs.cpp36
-rw-r--r--TAO/TAO_IDL/be/be_visitor_enum/any_op_cs.cpp29
-rw-r--r--TAO/TAO_IDL/be/be_visitor_enum/enum_cs.cpp3
-rw-r--r--TAO/TAO_IDL/be/be_visitor_exception/any_op_cs.cpp53
-rw-r--r--TAO/TAO_IDL/be/be_visitor_interface/any_op_cs.cpp11
-rw-r--r--TAO/TAO_IDL/be/be_visitor_sequence/any_op_cs.cpp29
-rw-r--r--TAO/TAO_IDL/be/be_visitor_sequence/sequence_cs.cpp3
-rw-r--r--TAO/TAO_IDL/be/be_visitor_structure/any_op_cs.cpp29
-rw-r--r--TAO/TAO_IDL/be/be_visitor_tmplinst.cpp1
-rw-r--r--TAO/TAO_IDL/be/be_visitor_tmplinst/arg_tmplinst.cpp2
-rw-r--r--TAO/TAO_IDL/be/be_visitor_tmplinst/tmplinst_cs.cpp93
-rw-r--r--TAO/TAO_IDL/be/be_visitor_tmplinst/tmplinst_ss.cpp48
-rw-r--r--TAO/TAO_IDL/be/be_visitor_union/any_op_cs.cpp29
-rw-r--r--TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_cs.cpp2
-rw-r--r--TAO/TAO_IDL/be_include/be_visitor_tmplinst/tmplinst_cs.h2
-rw-r--r--TAO/TAO_IDL/be_include/be_visitor_tmplinst/tmplinst_ss.h2
-rw-r--r--TAO/tao/Any.cpp46
-rw-r--r--TAO/tao/Object.cpp64
-rw-r--r--TAO/tao/PortableServer/Default_ORTC.cpp36
-rw-r--r--TAO/tao/PortableServer/Default_ORTC.h4
-rw-r--r--TAO/tao/PortableServer/PortableServerC.cpp165
-rw-r--r--TAO/tao/Typecode.cpp65
23 files changed, 696 insertions, 109 deletions
diff --git a/TAO/ChangeLog_ref b/TAO/ChangeLog_ref
index 3a76d1ca7fa..4f663f28f78 100644
--- a/TAO/ChangeLog_ref
+++ b/TAO/ChangeLog_ref
@@ -1,3 +1,56 @@
+Sat Oct 25 000:28:02 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * tao/Any.cpp:
+ * tao/Object.cpp:
+ * tao/Typecode.cpp:
+
+ Added still more explicit template instantiations,
+ for the argument template helper classes parameterized
+ with the above types.
+
+ * tao/PortableServer/Default_ORTC.cpp:
+ * tao/PortableServer/Default_ORTC.h:
+
+ Updated implementation of _downcast() and removed
+ the now-unnecessary *_tao_obv_narrow() instances.
+
+ * tao/PortableServer/PortableServerC.cpp:
+
+ Updated generated code for Any operators of types
+ that are nested inside a local interface.
+
+ * TAO_IDL/be/be_visitor_tmplinst.cpp:
+ * TAO_IDL/be/be_visitor_array/any_op_cs.cpp:
+ * TAO_IDL/be/be_visitor_enum/any_op_cs.cpp:
+ * TAO_IDL/be/be_visitor_enum/enum_cs.cpp:
+ * TAO_IDL/be/be_visitor_exception/any_op_cs.cpp:
+ * TAO_IDL/be/be_visitor_interface/any_op_cs.cpp:
+ * TAO_IDL/be/be_visitor_sequence/any_op_cs.cpp:
+ * TAO_IDL/be/be_visitor_sequence/sequence_cs.cpp:
+ * TAO_IDL/be/be_visitor_structure/any_op_cs.cpp:
+ * TAO_IDL/be/be_visitor_tmplinst/arg_tmplinst.cpp:
+ * TAO_IDL/be/be_visitor_tmplinst/tmplinst_cs.cpp:
+ * TAO_IDL/be/be_visitor_tmplinst/tmplinst_ss.cpp:
+ * TAO_IDL/be/be_visitor_union/any_op_cs.cpp:
+ * TAO_IDL/be/be_visitor_valuetype/valuetype_cs.cpp:
+ * TAO_IDL/be_include/be_visitor_tmplinst/tmplinst_cs.h:
+ * TAO_IDL/be_include/be_visitor_tmplinst/tmplinst_ss.h:
+
+ - Added explicit template instantiation code generation
+ for parameters of operations associated with
+ interface attributes.
+
+ - Added generation of overrides (returning 0) of
+ Any_*_Impl::(de)marshal_value() for types that are
+ nested inside a local interface.
+
+ - Changed generated #ifdef guard around explicit template
+ instantiation of sequence base class to use a string
+ aggregated from the unaliased element type flat name and
+ the bound (if any), thus avoiding duplicate instantiations
+ of the base class when it is a parent of multiple unique
+ derived sequence classes.
+
Fri Oct 24 19:22:10 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu>
* tao/Valuetype/AbstractBase_T.h:
diff --git a/TAO/TAO_IDL/be/be_visitor_array/any_op_cs.cpp b/TAO/TAO_IDL/be/be_visitor_array/any_op_cs.cpp
index fe40142088c..9ce08329aeb 100644
--- a/TAO/TAO_IDL/be/be_visitor_array/any_op_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_array/any_op_cs.cpp
@@ -88,8 +88,7 @@ be_visitor_array_any_op_cs::visit_array (be_array *node)
<< "TAO::Any_Array_Impl_T<" << be_idt << be_idt_nl
<< node->name () << "_slice," << be_nl
<< node->name () << "_forany" << be_uidt_nl
- << ">::extract ("
- << be_idt << be_idt_nl
+ << ">::extract (" << be_idt << be_idt_nl
<< "_tao_any," << be_nl
<< node->name () << "_forany::_tao_any_destructor," << be_nl
<< node->tc_name () << "," << be_nl
@@ -100,6 +99,39 @@ be_visitor_array_any_op_cs::visit_array (be_array *node)
<< ");" << be_uidt << be_uidt << be_uidt << be_uidt_nl
<< "}";
+ // Since we don't generate CDR stream operators for types that
+ // explicitly contain a local interface (at some level), we
+ // must override these Any template class methods to avoid
+ // calling the non-existent operators. The zero return value
+ // will eventually cause CORBA::MARSHAL to be raised if this
+ // type is inserted into an Any and then marshaled.
+ if (node->is_local ())
+ {
+ TAO_OutStream *os = this->ctx_->stream ();
+
+ *os << be_nl << be_nl
+ << "ACE_TEMPLATE_SPECIALIZATION" << be_nl
+ << "CORBA::Boolean" << be_nl
+ << "TAO::Any_Array_Impl_T<" << be_idt << be_idt_nl
+ << node->name () << "_slice," << be_nl
+ << node->name () << "_forany" << be_uidt_nl
+ << ">::marshal_value (TAO_OutputCDR &)" << be_uidt_nl
+ << "{" << be_idt_nl
+ << "return 0;" << be_uidt_nl
+ << "}";
+
+ *os << be_nl << be_nl
+ << "ACE_TEMPLATE_SPECIALIZATION" << be_nl
+ << "CORBA::Boolean" << be_nl
+ << "TAO::Any_Array_Impl_T<" << be_idt << be_idt_nl
+ << node->name () << "_slice," << be_nl
+ << node->name () << "_forany" << be_uidt_nl
+ << ">::demarshal_value (TAO_OutputCDR &)" << be_uidt_nl
+ << "{" << be_idt_nl
+ << "return 0;" << be_uidt_nl
+ << "}";
+ }
+
node->cli_stub_any_op_gen (1);
return 0;
}
diff --git a/TAO/TAO_IDL/be/be_visitor_enum/any_op_cs.cpp b/TAO/TAO_IDL/be/be_visitor_enum/any_op_cs.cpp
index 84ccd9f95b5..3bbef0e165a 100644
--- a/TAO/TAO_IDL/be/be_visitor_enum/any_op_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_enum/any_op_cs.cpp
@@ -80,6 +80,35 @@ be_visitor_enum_any_op_cs::visit_enum (be_enum *node)
<< ");" << be_uidt << be_uidt << be_uidt_nl
<< "}";
+ // Since we don't generate CDR stream operators for types that
+ // explicitly contain a local interface (at some level), we
+ // must override these Any template class methods to avoid
+ // calling the non-existent operators. The zero return value
+ // will eventually cause CORBA::MARSHAL to be raised if this
+ // type is inserted into an Any and then marshaled.
+ if (node->is_local ())
+ {
+ TAO_OutStream *os = this->ctx_->stream ();
+
+ *os << be_nl << be_nl
+ << "ACE_TEMPLATE_SPECIALIZATION" << be_nl
+ << "CORBA::Boolean" << be_nl
+ << "TAO::Any_Basic_Impl_T<" << node->name ()
+ << ">::marshal_value (TAO_OutputCDR &)" << be_nl
+ << "{" << be_idt_nl
+ << "return 0;" << be_uidt_nl
+ << "}";
+
+ *os << be_nl << be_nl
+ << "ACE_TEMPLATE_SPECIALIZATION" << be_nl
+ << "CORBA::Boolean" << be_nl
+ << "TAO::Any_Basic_Impl_T<" << node->name ()
+ << ">::demarshal_value (TAO_InputCDR &)" << be_nl
+ << "{" << be_idt_nl
+ << "return 0;" << be_uidt_nl
+ << "}";
+ }
+
node->cli_stub_any_op_gen (1);
return 0;
}
diff --git a/TAO/TAO_IDL/be/be_visitor_enum/enum_cs.cpp b/TAO/TAO_IDL/be/be_visitor_enum/enum_cs.cpp
index 292e45147ed..0bb8eb73e98 100644
--- a/TAO/TAO_IDL/be/be_visitor_enum/enum_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_enum/enum_cs.cpp
@@ -44,8 +44,7 @@ int
be_visitor_enum_cs::visit_enum (be_enum *node)
{
if (node->cli_stub_gen ()
- || node->imported ()
- || node->is_local ())
+ || node->imported ())
{
return 0;
}
diff --git a/TAO/TAO_IDL/be/be_visitor_exception/any_op_cs.cpp b/TAO/TAO_IDL/be/be_visitor_exception/any_op_cs.cpp
index b5f1f26ebb0..86654cacecb 100644
--- a/TAO/TAO_IDL/be/be_visitor_exception/any_op_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_exception/any_op_cs.cpp
@@ -49,31 +49,34 @@ be_visitor_exception_any_op_cs::visit_exception (be_exception *node)
<< "// TAO_IDL - Generated from " << be_nl
<< "// " << __FILE__ << ":" << __LINE__;
- *os << be_nl << be_nl
- << "ACE_TEMPLATE_SPECIALIZATION" << be_nl
- << "CORBA::Boolean" << be_nl
- << "TAO::Any_Dual_Impl_T<" << node->name ()
- << ">::demarshal_value (" << be_idt << be_idt_nl
- << "TAO_InputCDR & cdr" << be_uidt_nl
- << ")" << be_uidt_nl
- << "{" << be_idt_nl
- << "CORBA::String_var id;" << be_nl << be_nl
- << "if ((cdr >> id.out ()) == 0)" << be_idt_nl
- << "{" << be_idt_nl
- << "return 0;" << be_uidt_nl
- << "}" << be_uidt_nl << be_nl
- << "ACE_TRY_NEW_ENV" << be_idt_nl
- << "{" << be_idt_nl
- << "this->value_->_tao_decode (cdr ACE_ENV_ARG_PARAMETER);" << be_nl
- << "ACE_TRY_CHECK;" << be_uidt_nl
- << "}" << be_uidt_nl
- << "ACE_CATCHANY" << be_idt_nl
- << "{" << be_idt_nl
- << "return 0;" << be_uidt_nl
- << "}" << be_uidt_nl
- << "ACE_ENDTRY;" << be_nl << be_nl
- << "return 1;" << be_uidt_nl
- << "}";
+ if (!node->is_local ())
+ {
+ *os << be_nl << be_nl
+ << "ACE_TEMPLATE_SPECIALIZATION" << be_nl
+ << "CORBA::Boolean" << be_nl
+ << "TAO::Any_Dual_Impl_T<" << node->name ()
+ << ">::demarshal_value (" << be_idt << be_idt_nl
+ << "TAO_InputCDR & cdr" << be_uidt_nl
+ << ")" << be_uidt_nl
+ << "{" << be_idt_nl
+ << "CORBA::String_var id;" << be_nl << be_nl
+ << "if ((cdr >> id.out ()) == 0)" << be_idt_nl
+ << "{" << be_idt_nl
+ << "return 0;" << be_uidt_nl
+ << "}" << be_uidt_nl << be_nl
+ << "ACE_TRY_NEW_ENV" << be_idt_nl
+ << "{" << be_idt_nl
+ << "this->value_->_tao_decode (cdr ACE_ENV_ARG_PARAMETER);" << be_nl
+ << "ACE_TRY_CHECK;" << be_uidt_nl
+ << "}" << be_uidt_nl
+ << "ACE_CATCHANY" << be_idt_nl
+ << "{" << be_idt_nl
+ << "return 0;" << be_uidt_nl
+ << "}" << be_uidt_nl
+ << "ACE_ENDTRY;" << be_nl << be_nl
+ << "return 1;" << be_uidt_nl
+ << "}";
+ }
// Copying insertion operator.
diff --git a/TAO/TAO_IDL/be/be_visitor_interface/any_op_cs.cpp b/TAO/TAO_IDL/be/be_visitor_interface/any_op_cs.cpp
index 24e674ded19..d30c009f4d6 100644
--- a/TAO/TAO_IDL/be/be_visitor_interface/any_op_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_interface/any_op_cs.cpp
@@ -157,14 +157,11 @@ be_visitor_interface_any_op_cs::visit_interface (be_interface *node)
<< "}";
// All we have to do is to visit the scope and generate code.
- if (!node->is_local ())
+ if (this->visit_scope (node) == -1)
{
- if (this->visit_scope (node) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_interface::visit_interface - "
- "codegen for scope failed\n"), -1);
- }
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_interface::visit_interface - "
+ "codegen for scope failed\n"), -1);
}
node->cli_stub_any_op_gen (1);
diff --git a/TAO/TAO_IDL/be/be_visitor_sequence/any_op_cs.cpp b/TAO/TAO_IDL/be/be_visitor_sequence/any_op_cs.cpp
index cd511a70aef..3a15ff9d5a6 100644
--- a/TAO/TAO_IDL/be/be_visitor_sequence/any_op_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_sequence/any_op_cs.cpp
@@ -115,6 +115,35 @@ be_visitor_sequence_any_op_cs::visit_sequence (be_sequence *node)
<< ");" << be_uidt << be_uidt << be_uidt_nl
<< "}";
+ // Since we don't generate CDR stream operators for types that
+ // explicitly contain a local interface (at some level), we
+ // must override these Any template class methods to avoid
+ // calling the non-existent operators. The zero return value
+ // will eventually cause CORBA::MARSHAL to be raised if this
+ // type is inserted into an Any and then marshaled.
+ if (node->is_local ())
+ {
+ TAO_OutStream *os = this->ctx_->stream ();
+
+ *os << be_nl << be_nl
+ << "ACE_TEMPLATE_SPECIALIZATION" << be_nl
+ << "CORBA::Boolean" << be_nl
+ << "TAO::Any_Dual_Impl_T<" << node->name ()
+ << ">::marshal_value (TAO_OutputCDR &)" << be_nl
+ << "{" << be_idt_nl
+ << "return 0;" << be_uidt_nl
+ << "}";
+
+ *os << be_nl << be_nl
+ << "ACE_TEMPLATE_SPECIALIZATION" << be_nl
+ << "CORBA::Boolean" << be_nl
+ << "TAO::Any_Dual_Impl_T<" << node->name ()
+ << ">::demarshal_value (TAO_InputCDR &)" << be_nl
+ << "{" << be_idt_nl
+ << "return 0;" << be_uidt_nl
+ << "}";
+ }
+
node->cli_stub_any_op_gen (1);
return 0;
}
diff --git a/TAO/TAO_IDL/be/be_visitor_sequence/sequence_cs.cpp b/TAO/TAO_IDL/be/be_visitor_sequence/sequence_cs.cpp
index 9e1e7eadd39..644fabe8b3a 100644
--- a/TAO/TAO_IDL/be/be_visitor_sequence/sequence_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_sequence/sequence_cs.cpp
@@ -37,13 +37,12 @@ be_visitor_sequence_cs::~be_visitor_sequence_cs (void)
int be_visitor_sequence_cs::visit_sequence (be_sequence *node)
{
- be_type *bt = be_type::narrow_from_decl (node->base_type ());
-
if (node->imported () || node->cli_stub_gen ())
{
return 0;
}
+ be_type *bt = be_type::narrow_from_decl (node->base_type ());
AST_Decl::NodeType nt = bt->node_type ();
// If our base type is an anonymous sequence, generate code for it here.
diff --git a/TAO/TAO_IDL/be/be_visitor_structure/any_op_cs.cpp b/TAO/TAO_IDL/be/be_visitor_structure/any_op_cs.cpp
index 4be0e65948e..a2d2e55facc 100644
--- a/TAO/TAO_IDL/be/be_visitor_structure/any_op_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_structure/any_op_cs.cpp
@@ -115,6 +115,35 @@ be_visitor_structure_any_op_cs::visit_structure (be_structure *node)
<< ");" << be_uidt << be_uidt << be_uidt_nl
<< "}";
+ // Since we don't generate CDR stream operators for types that
+ // explicitly contain a local interface (at some level), we
+ // must override these Any template class methods to avoid
+ // calling the non-existent operators. The zero return value
+ // will eventually cause CORBA::MARSHAL to be raised if this
+ // type is inserted into an Any and then marshaled.
+ if (node->is_local ())
+ {
+ TAO_OutStream *os = this->ctx_->stream ();
+
+ *os << be_nl << be_nl
+ << "ACE_TEMPLATE_SPECIALIZATION" << be_nl
+ << "CORBA::Boolean" << be_nl
+ << "TAO::Any_Dual_Impl_T<" << node->name ()
+ << ">::marshal_value (TAO_OutputCDR &)" << be_nl
+ << "{" << be_idt_nl
+ << "return 0;" << be_uidt_nl
+ << "}";
+
+ *os << be_nl << be_nl
+ << "ACE_TEMPLATE_SPECIALIZATION" << be_nl
+ << "CORBA::Boolean" << be_nl
+ << "TAO::Any_Dual_Impl_T<" << node->name ()
+ << ">::demarshal_value (TAO_InputCDR &)" << be_nl
+ << "{" << be_idt_nl
+ << "return 0;" << be_uidt_nl
+ << "}";
+ }
+
// all we have to do is to visit the scope and generate code
if (this->visit_scope (node) == -1)
{
diff --git a/TAO/TAO_IDL/be/be_visitor_tmplinst.cpp b/TAO/TAO_IDL/be/be_visitor_tmplinst.cpp
index edfc6ee31a9..d0b54a4f006 100644
--- a/TAO/TAO_IDL/be/be_visitor_tmplinst.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_tmplinst.cpp
@@ -23,6 +23,7 @@
#include "be_interface.h"
#include "be_valuetype.h"
#include "be_array.h"
+#include "be_attribute.h"
#include "be_enum.h"
#include "be_sequence.h"
#include "be_string.h"
diff --git a/TAO/TAO_IDL/be/be_visitor_tmplinst/arg_tmplinst.cpp b/TAO/TAO_IDL/be/be_visitor_tmplinst/arg_tmplinst.cpp
index 5ea7ca6a4d9..8bcf206fed7 100644
--- a/TAO/TAO_IDL/be/be_visitor_tmplinst/arg_tmplinst.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_tmplinst/arg_tmplinst.cpp
@@ -55,7 +55,7 @@ be_visitor_arg_tmplinst::visit_interface (be_interface *node)
switch (this->dir_)
{
- case _tao_INOUT:
+ case _tao_INOUT:
*os << "," << this->linebreak_ << be_nl
<< "TAO::Objref_Traits<" << node->name () << ">";
break;
diff --git a/TAO/TAO_IDL/be/be_visitor_tmplinst/tmplinst_cs.cpp b/TAO/TAO_IDL/be/be_visitor_tmplinst/tmplinst_cs.cpp
index 0ed777bbb29..272b0e9783e 100644
--- a/TAO/TAO_IDL/be/be_visitor_tmplinst/tmplinst_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_tmplinst/tmplinst_cs.cpp
@@ -500,7 +500,7 @@ be_visitor_tmplinst_cs::visit_array (be_array *node)
<< "TAO_" << (fixed ? "Fixed" : "Var") << "Array_Var_T<"
<< this->linebreak_ << be_idt << be_idt_nl
<< fname << "," << this->linebreak_ << be_nl
- << fname << "_slice" << this->linebreak_ << be_nl
+ << fname << "_slice" << this->linebreak_ << be_uidt_nl
<< ">" << this->suffix_ << be_uidt << be_uidt << be_uidt;
*os << be_nl << be_nl
@@ -508,7 +508,7 @@ be_visitor_tmplinst_cs::visit_array (be_array *node)
<< "TAO_Array_Out_T<" << this->linebreak_ << be_idt << be_idt_nl
<< fname << "," << this->linebreak_ << be_nl
<< fname << "_var," << this->linebreak_ << be_nl
- << fname << "_slice" << this->linebreak_ << be_nl
+ << fname << "_slice" << this->linebreak_ << be_uidt_nl
<< ">" << this->suffix_ << be_uidt << be_uidt << be_uidt;
*os << be_nl << be_nl
@@ -516,7 +516,7 @@ be_visitor_tmplinst_cs::visit_array (be_array *node)
<< "TAO_Array_Var_Base_T<" << this->linebreak_ << be_idt
<< be_idt_nl
<< fname << "," << this->linebreak_ << be_nl
- << fname << "_slice" << this->linebreak_ << be_nl
+ << fname << "_slice" << this->linebreak_ << be_uidt_nl
<< ">" << this->suffix_ << be_uidt << be_uidt << be_uidt;
}
@@ -524,7 +524,7 @@ be_visitor_tmplinst_cs::visit_array (be_array *node)
<< this->prefix_ << this->linebreak_ << be_idt << be_idt_nl
<< "TAO_Array_Forany_T<" << this->linebreak_ << be_idt << be_idt_nl
<< fname << "," << this->linebreak_ << be_nl
- << fname << "_slice" << this->linebreak_ << be_nl
+ << fname << "_slice" << this->linebreak_ << be_uidt_nl
<< ">" << this->suffix_ << be_uidt << be_uidt << be_uidt;
// For Any impl template class.
@@ -544,6 +544,54 @@ be_visitor_tmplinst_cs::visit_array (be_array *node)
}
int
+be_visitor_tmplinst_cs::visit_attribute (be_attribute *node)
+{
+ if (this->this_mode_generated (node)
+ || node->imported ()
+ || node->is_local ())
+ {
+ return 0;
+ }
+
+ const char * S = "";
+
+ be_visitor_arg_tmplinst visitor (this->ctx_,
+ this->mode_,
+ this->prefix_,
+ this->suffix_,
+ this->linebreak_,
+ S);
+ be_type *bt = be_type::narrow_from_decl (node->field_type ());
+ visitor.direction ();
+
+ if (bt->accept (&visitor) != 0)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_tmplinst_cs::"
+ "visit_attribute - "
+ "codegen for return type failed\n"),
+ -1);
+ }
+
+ if (!node->readonly ())
+ {
+ visitor.direction (AST_Argument::dir_IN);
+
+ if (bt->accept (&visitor) != 0)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_tmplinst_cs::"
+ "visit_attribute - "
+ "codegen for IN parameter failed\n"),
+ -1);
+ }
+ }
+
+ this->this_mode_generated (node, I_TRUE);
+ return 0;
+}
+
+int
be_visitor_tmplinst_cs::visit_enum (be_enum *node)
{
if (this->this_mode_generated (node))
@@ -1029,7 +1077,42 @@ be_visitor_tmplinst_cs::gen_base_class_tmplinst (be_sequence *node)
{
TAO_OutStream *os = this->ctx_->stream ();
- os->gen_ifdef_macro (node->flat_name (), "explicit");
+ // A generated sequence is a unique class type for each IDL typedef,
+ // but the base template class may not be. So, when generating the
+ // explicit template instantiation of the base class, we use the
+ // unaliased element type and the bound (if any) in the #ifdef guard to
+ // prevent duplicates.
+
+ 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);
+ bt = td->primitive_base_type ();
+ }
+
+ static char ifdef_suffix [NAMEBUFSIZE];
+
+ ACE_OS::memset (ifdef_suffix,
+ '\0',
+ NAMEBUFSIZE);
+
+ if (node->unbounded ())
+ {
+ ACE_OS::sprintf (ifdef_suffix,
+ "%s",
+ "explicit");
+ }
+ else
+ {
+ ACE_OS::sprintf (ifdef_suffix,
+ "%d_%s",
+ node->max_size ()->ev ()->u.ulval,
+ "explicit");
+ }
+
+ os->gen_ifdef_macro (bt->flat_name (), ifdef_suffix);
*os << be_nl << be_nl
<< this->prefix_ << this->linebreak_ << be_idt << be_idt_nl;
diff --git a/TAO/TAO_IDL/be/be_visitor_tmplinst/tmplinst_ss.cpp b/TAO/TAO_IDL/be/be_visitor_tmplinst/tmplinst_ss.cpp
index f7409e89445..6ead20eafd3 100644
--- a/TAO/TAO_IDL/be/be_visitor_tmplinst/tmplinst_ss.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_tmplinst/tmplinst_ss.cpp
@@ -298,6 +298,54 @@ be_visitor_tmplinst_ss::visit_array (be_array *node)
}
int
+be_visitor_tmplinst_ss::visit_attribute (be_attribute *node)
+{
+ if (this->this_mode_generated (node)
+ || node->imported ()
+ || node->is_local ())
+ {
+ return 0;
+ }
+
+ const char * S = "S";
+
+ be_visitor_arg_tmplinst visitor (this->ctx_,
+ this->mode_,
+ this->prefix_,
+ this->suffix_,
+ this->linebreak_,
+ S);
+ be_type *bt = be_type::narrow_from_decl (node->field_type ());
+ visitor.direction ();
+
+ if (bt->accept (&visitor) != 0)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_tmplinst_ss::"
+ "visit_attribute - "
+ "codegen for return type failed\n"),
+ -1);
+ }
+
+ if (!node->readonly ())
+ {
+ visitor.direction (AST_Argument::dir_IN);
+
+ if (bt->accept (&visitor) != 0)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_tmplinst_ss::"
+ "visit_attribute - "
+ "codegen for IN parameter failed\n"),
+ -1);
+ }
+ }
+
+ this->this_mode_generated (node, I_TRUE);
+ return 0;
+}
+
+int
be_visitor_tmplinst_ss::visit_enum (be_enum *node)
{
if (this->this_mode_generated (node) || !node->seen_in_operation ())
diff --git a/TAO/TAO_IDL/be/be_visitor_union/any_op_cs.cpp b/TAO/TAO_IDL/be/be_visitor_union/any_op_cs.cpp
index fc97c9ea7c3..a46c29adf36 100644
--- a/TAO/TAO_IDL/be/be_visitor_union/any_op_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_union/any_op_cs.cpp
@@ -115,6 +115,35 @@ be_visitor_union_any_op_cs::visit_union (be_union *node)
<< ");" << be_uidt << be_uidt << be_uidt_nl
<< "}";
+ // Since we don't generate CDR stream operators for types that
+ // explicitly contain a local interface (at some level), we
+ // must override these Any template class methods to avoid
+ // calling the non-existent operators. The zero return value
+ // will eventually cause CORBA::MARSHAL to be raised if this
+ // type is inserted into an Any and then marshaled.
+ if (node->is_local ())
+ {
+ TAO_OutStream *os = this->ctx_->stream ();
+
+ *os << be_nl << be_nl
+ << "ACE_TEMPLATE_SPECIALIZATION" << be_nl
+ << "CORBA::Boolean" << be_nl
+ << "TAO::Any_Dual_Impl_T<" << node->name ()
+ << ">::marshal_value (TAO_OutputCDR &)" << be_nl
+ << "{" << be_idt_nl
+ << "return 0;" << be_uidt_nl
+ << "}";
+
+ *os << be_nl << be_nl
+ << "ACE_TEMPLATE_SPECIALIZATION" << be_nl
+ << "CORBA::Boolean" << be_nl
+ << "TAO::Any_Dual_Impl_T<" << node->name ()
+ << ">::demarshal_value (TAO_InputCDR &)" << be_nl
+ << "{" << be_idt_nl
+ << "return 0;" << be_uidt_nl
+ << "}";
+ }
+
// All we have to do is to visit the scope and generate code.
if (this->visit_scope (node) == -1)
{
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 974ea63e59b..e6cc0c561e9 100644
--- a/TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_cs.cpp
@@ -105,7 +105,7 @@ be_visitor_valuetype_cs::visit_valuetype (be_valuetype *node)
<< node->name () << "::_tao_obv_repository_id (void) const" << be_nl
<< "{" << be_idt_nl
<< "return this->_tao_obv_static_repository_id ();" << be_uidt_nl
- << "}" << be_nl;
+ << "}" << be_nl << be_nl;
if (be_global->any_support ())
{
diff --git a/TAO/TAO_IDL/be_include/be_visitor_tmplinst/tmplinst_cs.h b/TAO/TAO_IDL/be_include/be_visitor_tmplinst/tmplinst_cs.h
index 46266b4a5cb..295e6bb032c 100644
--- a/TAO/TAO_IDL/be_include/be_visitor_tmplinst/tmplinst_cs.h
+++ b/TAO/TAO_IDL/be_include/be_visitor_tmplinst/tmplinst_cs.h
@@ -30,6 +30,8 @@ public:
virtual int visit_array (be_array *node);
+ virtual int visit_attribute (be_attribute *node);
+
virtual int visit_enum (be_enum *node);
virtual int visit_interface (be_interface *node);
diff --git a/TAO/TAO_IDL/be_include/be_visitor_tmplinst/tmplinst_ss.h b/TAO/TAO_IDL/be_include/be_visitor_tmplinst/tmplinst_ss.h
index 38764460355..c5e8aa00fb2 100644
--- a/TAO/TAO_IDL/be_include/be_visitor_tmplinst/tmplinst_ss.h
+++ b/TAO/TAO_IDL/be_include/be_visitor_tmplinst/tmplinst_ss.h
@@ -30,6 +30,8 @@ public:
virtual int visit_array (be_array *node);
+ virtual int visit_attribute (be_attribute *node);
+
virtual int visit_enum (be_enum *node);
virtual int visit_interface (be_interface *node);
diff --git a/TAO/tao/Any.cpp b/TAO/tao/Any.cpp
index 77bdf3e1b43..904116eed11 100644
--- a/TAO/tao/Any.cpp
+++ b/TAO/tao/Any.cpp
@@ -774,11 +774,26 @@ template class TAO::Any_Impl_T<CORBA::WChar>;
template class TAO::Any_Impl_T<CORBA::Object>;
template class TAO::Arg_Traits<CORBA::Any>;
-/*template class TAO::Var_Size_Arg_Traits_T<CORBA::Any,
+template class TAO::Var_Size_Arg_Traits_T<CORBA::Any,
CORBA::Any_var,
CORBA::Any_out>;
-*/
-
+template class TAO::In_Var_Size_Argument_T<CORBA::Any>;
+template class TAO::Inout_Var_Size_Argument_T<CORBA::Any>;
+template class TAO::Out_Var_Size_Argument_T<CORBA::Any,
+ CORBA::Any_out>;
+template class TAO::Ret_Var_Size_Argument_T<CORBA::Any,
+ CORBA::Any_var>;
+
+template class TAO::SArg_Traits<CORBA::Any>;
+template class TAO::Var_Size_SArg_Traits_T<CORBA::Any,
+ CORBA::Any_var,
+ CORBA::Any_out>;
+template class TAO::In_Var_Size_SArgument_T<CORBA::Any>;
+template class TAO::Inout_Var_Size_SArgument_T<CORBA::Any>;
+template class TAO::Out_Var_Size_SArgument_T<CORBA::Any,
+ CORBA::Any_var>;
+template class TAO::Ret_Var_Size_SArgument_T<CORBA::Any,
+ CORBA::Any_var>;
#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)
#pragma instantiate TAO::Any_Special_Impl_T<
@@ -799,12 +814,27 @@ template class TAO::Arg_Traits<CORBA::Any>;
#pragma instantiate TAO::Any_Impl_T<char>
#pragma instantiate TAO::Any_Impl_T<CORBA::WChar>
#pragma instantiate TAO::Any_Impl_T<CORBA::Object>
-#pragma instantiate TAO::Any_Impl_T<CORBA::AbstractBase>
-#pragma instantiate TAO::Any_Impl_T<CORBA::ValueBase>
#pragma instantiate TAO::Arg_Traits<CORBA::Any>
-#pragma instantiate TAO::Var_Size_Arg_Traits_T<CORBA::Any,
- CORBA::Any_var,
- CORBA::Any_out>
+#pragma instantiate TAO::Var_Size_Arg_Traits_T<CORBA::Any, \
+ CORBA::Any_var, \
+ CORBA::Any_out>
+#pragma instantiate TAO::In_Var_Size_Argument_T<CORBA::Any>
+#pragma instantiate TAO::Inout_Var_Size_Argument_T<CORBA::Any>
+#pragma instantiate TAO::Out_Var_Size_Argument_T<CORBA::Any, \
+ CORBA::Any_out>
+#pragma instantiate TAO::Ret_Var_Size_Argument_T<CORBA::Any, \
+ CORBA::Any_var>
+
+#pragma instantiate TAO::SArg_Traits<CORBA::Any>
+#pragma instantiate TAO::Var_Size_SArg_Traits_T<CORBA::Any, \
+ CORBA::Any_var, \
+ CORBA::Any_out>
+#pragma instantiate TAO::In_Var_Size_SArgument_T<CORBA::Any>
+#pragma instantiate TAO::Inout_Var_Size_SArgument_T<CORBA::Any>
+#pragma instantiate TAO::Out_Var_Size_SArgument_T<CORBA::Any, \
+ CORBA::Any_var>
+#pragma instantiate TAO::Ret_Var_Size_SArgument_T<CORBA::Any, \
+ CORBA::Any_var>
#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */
diff --git a/TAO/tao/Object.cpp b/TAO/tao/Object.cpp
index 4dc3f55b3d5..62158c09569 100644
--- a/TAO/tao/Object.cpp
+++ b/TAO/tao/Object.cpp
@@ -996,19 +996,69 @@ TAO::Object_Proxy_Broker * (*_TAO_Object_Proxy_Broker_Factory_function_pointer)
template class TAO_Pseudo_Var_T<CORBA::Object>;
template class TAO_Pseudo_Out_T<CORBA::Object, CORBA::Object_var>;
+
template class TAO::Arg_Traits<CORBA::Object>;
-template class TAO::Object_Arg_Traits_T<CORBA::Object_ptr,
- CORBA::Object_var,
- CORBA::Object_out,
- TAO::Objref_Traits<CORBA::Object> >;
+template class
+ TAO::Object_Arg_Traits_T<CORBA::Object_ptr,
+ CORBA::Object_var,
+ CORBA::Object_out,
+ TAO::Objref_Traits<CORBA::Object> >;
+template class TAO::In_Object_Argument_T<CORBA::Object_ptr>;
+template class
+ TAO::Inout_Object_Argument_T<CORBA::Object_ptr,
+ TAO::Objref_Traits<CORBA::Object> >;
+template class TAO::Out_Object_Argument_T<CORBA::Object_ptr,
+ CORBA::Object_out>;
+template class TAO::Ret_Object_Argument_T<CORBA::Object_ptr,
+ CORBA::Object_var>;
+
+template class TAO::SArg_Traits<CORBA::Object>;
+template class TAO::Object_SArg_Traits_T<CORBA::Object_ptr,
+ CORBA::Object_var,
+ CORBA::Object_out>;
+template class TAO::In_Object_SArgument_T<CORBA::Object_ptr,
+ CORBA::Object_var>;
+template class TAO::Inout_Object_SArgument_T<CORBA::Object_ptr,
+ CORBA::Object_var>;
+template class TAO::Out_Object_SArgument_T<CORBA::Object_ptr,
+ CORBA::Object_var,
+ CORBA::Object_out>;
+template class TAO::Ret_Object_SArgument_T<CORBA::Object_ptr,
+ CORBA::Object_var>;
#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)
#pragma instantiate TAO_Pseudo_Var_T<CORBA::Object>
#pragma instantiate TAO_Pseudo_Out_T<CORBA::Object, CORBA::Object_var>
+
+#pragma instantiate TAO::Objref_Traits<CORBA::Object>
#pragma instantiate TAO::Arg_Traits<CORBA::Object>
-#pragma instantiate TAO::Object_Arg_Traits_T<CORBA::Object_ptr, \
- CORBA::Object_var, \
- CORBA::Object_out>;
+#pragma instantiate \
+ TAO::Object_Arg_Traits_T<CORBA::Object_ptr, \
+ CORBA::Object_var, \
+ CORBA::Object_out, \
+ TAO::Objref_Traits<CORBA::Object> >
+#pragma instantiate TAO::In_Object_Argument_T<CORBA::Object_ptr>
+#pragma instantiate \
+ TAO::Inout_Object_Argument_T<CORBA::Object_ptr, \
+ TAO::Objref_Traits<CORBA::Object> >
+#pragma instantiate TAO::Out_Object_Argument_T<CORBA::Object_ptr, \
+ CORBA::Object_out>
+#pragma instantiate TAO::Ret_Object_Argument_T<CORBA::Object_ptr, \
+ CORBA::Object_var>
+
+#pragma instantiate TAO::SArg_Traits<CORBA::Object>
+#pragma instantiate TAO::Object_SArg_Traits_T<CORBA::Object_ptr, \
+ CORBA::Object_var, \
+ CORBA::Object_out>
+#pragma instantiate TAO::In_Object_SArgument_T<CORBA::Object_ptr, \
+ CORBA::Object_var>
+#pragma instantiate TAO::Inout_Object_SArgument_T<CORBA::Object_ptr, \
+ CORBA::Object_var>
+#pragma instantiate TAO::Out_Object_SArgument_T<CORBA::Object_ptr, \
+ CORBA::Object_var, \
+ CORBA::Object_out>
+#pragma instantiate TAO::Ret_Object_SArgument_T<CORBA::Object_ptr, \
+ CORBA::Object_var>
#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */
diff --git a/TAO/tao/PortableServer/Default_ORTC.cpp b/TAO/tao/PortableServer/Default_ORTC.cpp
index 6225b1976ca..4f9deaae657 100644
--- a/TAO/tao/PortableServer/Default_ORTC.cpp
+++ b/TAO/tao/PortableServer/Default_ORTC.cpp
@@ -123,7 +123,7 @@ TAO_Default_ORT::ObjectReferenceTemplate::_downcast (CORBA::ValueBase *v)
return 0;
}
- return (ObjectReferenceTemplate *) v->_tao_obv_narrow ((ptrdiff_t) &_downcast);
+ return dynamic_cast<TAO_Default_ORT::ObjectReferenceTemplate *> (v);
}
const char *
@@ -132,40 +132,6 @@ TAO_Default_ORT::ObjectReferenceTemplate::_tao_obv_repository_id (void) const
return this->_tao_obv_static_repository_id ();
}
-void *
-#if defined (_MSC_VER)
-TAO_Default_ORT::ObjectReferenceTemplate::TAO_Default_ORT_ObjectReferenceTemplate_tao_obv_narrow (ptrdiff_t type_id)
-#else
-TAO_Default_ORT::ObjectReferenceTemplate::_tao_obv_narrow (ptrdiff_t type_id)
-#endif /* _MSC_VER */
-{
- if (type_id == (ptrdiff_t) &_downcast)
- {
- return this;
- }
-
- void *rval = 0;
-
- if (rval == 0)
- {
-#if defined (_MSC_VER)
- rval = this->PortableInterceptor_ObjectReferenceTemplate_tao_obv_narrow (type_id);
-#else
- rval = this->PortableInterceptor::ObjectReferenceTemplate::_tao_obv_narrow (type_id);
-#endif /* _MSC_VER */
- }
-
- return rval;
-}
-
-#if defined (_MSC_VER)
-void *
-TAO_Default_ORT::ObjectReferenceTemplate::_tao_obv_narrow (ptrdiff_t type_id)
-{
- return this->TAO_Default_ORT_ObjectReferenceTemplate_tao_obv_narrow (type_id);
-}
-#endif /* _MSC_VER */
-
void
TAO_Default_ORT::ObjectReferenceTemplate::_tao_any_destructor (void *_tao_void_pointer)
{
diff --git a/TAO/tao/PortableServer/Default_ORTC.h b/TAO/tao/PortableServer/Default_ORTC.h
index e1e134d5a0f..f90e1b000f6 100644
--- a/TAO/tao/PortableServer/Default_ORTC.h
+++ b/TAO/tao/PortableServer/Default_ORTC.h
@@ -134,10 +134,6 @@ namespace TAO_Default_ORT
ObjectReferenceTemplate (void);
virtual ~ObjectReferenceTemplate (void);
- virtual void *_tao_obv_narrow (ptrdiff_t);
-#if defined (_MSC_VER)
- virtual void *TAO_Default_ORT_ObjectReferenceTemplate_tao_obv_narrow (ptrdiff_t);
-#endif /* _MSC_VER */
virtual CORBA::Boolean _tao_marshal_v (TAO_OutputCDR &);
virtual CORBA::Boolean _tao_unmarshal_v (TAO_InputCDR &);
diff --git a/TAO/tao/PortableServer/PortableServerC.cpp b/TAO/tao/PortableServer/PortableServerC.cpp
index 3c4e9ebd545..5e843e2f973 100644
--- a/TAO/tao/PortableServer/PortableServerC.cpp
+++ b/TAO/tao/PortableServer/PortableServerC.cpp
@@ -28,7 +28,6 @@
// TAO_IDL - Generated from
// W:\ACE_wrappers\TAO\TAO_IDL\be\be_codegen.cpp:301
-
#include "PortableServerC.h"
#include "tao/Stub.h"
#include "tao/Invocation_Adapter.h"
@@ -2942,6 +2941,56 @@ static CORBA::TypeCode _tc_TAO_tc_PortableServer_POAManager_AdapterInactive (
::CORBA::TypeCode_ptr PortableServer::POAManager::_tc_AdapterInactive =
&_tc_TAO_tc_PortableServer_POAManager_AdapterInactive;
+// TAO_IDL - Generated from
+// W:\ACE_wrappers\TAO\TAO_IDL\be\be_visitor_typecode/typecode_defn.cpp:284
+
+static const CORBA::Long _oc_PortableServer_POAManager_State[] =
+{
+ TAO_ENCAP_BYTE_ORDER, // byte order
+ 48,
+ ACE_NTOHL (0x49444c3a),
+ ACE_NTOHL (0x6f6d672e),
+ ACE_NTOHL (0x6f72672f),
+ ACE_NTOHL (0x506f7274),
+ ACE_NTOHL (0x61626c65),
+ ACE_NTOHL (0x53657276),
+ ACE_NTOHL (0x65722f50),
+ ACE_NTOHL (0x4f414d61),
+ ACE_NTOHL (0x6e616765),
+ ACE_NTOHL (0x722f5374),
+ ACE_NTOHL (0x6174653a),
+ ACE_NTOHL (0x322e3300), // repository ID = IDL:omg.org/PortableServer/POAManager/State:2.3
+ 6,
+ ACE_NTOHL (0x53746174),
+ ACE_NTOHL (0x65000000), // name = State
+ 4, // member count
+ 8,
+ ACE_NTOHL (0x484f4c44),
+ ACE_NTOHL (0x494e4700), // name = HOLDING
+ 7,
+ ACE_NTOHL (0x41435449),
+ ACE_NTOHL (0x56450000), // name = ACTIVE
+ 11,
+ ACE_NTOHL (0x44495343),
+ ACE_NTOHL (0x41524449),
+ ACE_NTOHL (0x4e470000), // name = DISCARDING
+ 9,
+ ACE_NTOHL (0x494e4143),
+ ACE_NTOHL (0x54495645),
+ ACE_NTOHL (0x0), // name = INACTIVE
+ };
+
+static CORBA::TypeCode _tc_TAO_tc_PortableServer_POAManager_State (
+ CORBA::tk_enum,
+ sizeof (_oc_PortableServer_POAManager_State),
+ (char *) &_oc_PortableServer_POAManager_State,
+ 0,
+ sizeof (PortableServer::POAManager::State)
+ );
+
+::CORBA::TypeCode_ptr PortableServer::POAManager::_tc_State =
+ &_tc_TAO_tc_PortableServer_POAManager_State;
+
PortableServer::POAManager::POAManager (void)
{}
@@ -6618,6 +6667,120 @@ operator>>= (
#if (TAO_HAS_MINIMUM_POA == 0)
+// TAO_IDL - Generated from
+// W:\ACE_wrappers\TAO\TAO_IDL\be\be_visitor_exception/any_op_cs.cpp:50
+
+// Copying insertion.
+void operator<<= (
+ CORBA::Any &_tao_any,
+ const PortableServer::POAManager::AdapterInactive &_tao_elem
+ )
+{
+ TAO::Any_Dual_Impl_T<PortableServer::POAManager::AdapterInactive>::insert_copy (
+ _tao_any,
+ PortableServer::POAManager::AdapterInactive::_tao_any_destructor,
+ PortableServer::POAManager::_tc_AdapterInactive,
+ _tao_elem
+ );
+}
+
+// Non-copying insertion.
+void operator<<= (
+ CORBA::Any &_tao_any,
+ PortableServer::POAManager::AdapterInactive *_tao_elem
+ )
+{
+ TAO::Any_Dual_Impl_T<PortableServer::POAManager::AdapterInactive>::insert (
+ _tao_any,
+ PortableServer::POAManager::AdapterInactive::_tao_any_destructor,
+ PortableServer::POAManager::_tc_AdapterInactive,
+ _tao_elem
+ );
+}
+
+// Extraction to non-const pointer (deprecated).
+CORBA::Boolean operator>>= (
+ const CORBA::Any &_tao_any,
+ PortableServer::POAManager::AdapterInactive *&_tao_elem
+ )
+{
+ return _tao_any >>= ACE_const_cast (
+ const PortableServer::POAManager::AdapterInactive *&,
+ _tao_elem
+ );
+}
+
+// Extraction to const pointer.
+CORBA::Boolean operator>>= (
+ const CORBA::Any &_tao_any,
+ const PortableServer::POAManager::AdapterInactive *&_tao_elem
+ )
+{
+ return
+ TAO::Any_Dual_Impl_T<PortableServer::POAManager::AdapterInactive>::extract (
+ _tao_any,
+ PortableServer::POAManager::AdapterInactive::_tao_any_destructor,
+ PortableServer::POAManager::_tc_AdapterInactive,
+ _tao_elem
+ );
+}
+
+ACE_TEMPLATE_SPECIALIZATION
+CORBA::Boolean
+TAO::Any_Dual_Impl_T<PortableServer::POAManager::AdapterInactive>::marshal_value (TAO_OutputCDR &)
+{
+ return 0;
+}
+
+ACE_TEMPLATE_SPECIALIZATION
+CORBA::Boolean
+TAO::Any_Dual_Impl_T<PortableServer::POAManager::AdapterInactive>::demarshal_value (TAO_InputCDR &)
+{
+ return 0;
+}
+
+// TAO_IDL - Generated from
+// W:\ACE_wrappers\TAO\TAO_IDL\be\be_visitor_enum/any_op_cs.cpp:52
+
+void operator<<= (
+ CORBA::Any &_tao_any,
+ PortableServer::POAManager::State _tao_elem
+ )
+{
+ TAO::Any_Basic_Impl_T<PortableServer::POAManager::State>::insert (
+ _tao_any,
+ PortableServer::POAManager::_tc_State,
+ _tao_elem
+ );
+}
+
+CORBA::Boolean operator>>= (
+ const CORBA::Any &_tao_any,
+ PortableServer::POAManager::State &_tao_elem
+ )
+{
+ return
+ TAO::Any_Basic_Impl_T<PortableServer::POAManager::State>::extract (
+ _tao_any,
+ PortableServer::POAManager::_tc_State,
+ _tao_elem
+ );
+}
+
+ACE_TEMPLATE_SPECIALIZATION
+CORBA::Boolean
+TAO::Any_Basic_Impl_T<PortableServer::POAManager::State>::marshal_value (TAO_OutputCDR &)
+{
+ return 0;
+}
+
+ACE_TEMPLATE_SPECIALIZATION
+CORBA::Boolean
+TAO::Any_Basic_Impl_T<PortableServer::POAManager::State>::demarshal_value (TAO_InputCDR &)
+{
+ return 0;
+}
+
// TAO_IDL - Generated from
// W:\ACE_wrappers\TAO\TAO_IDL\be\be_visitor_interface/any_op_cs.cpp:50
ACE_TEMPLATE_SPECIALIZATION
diff --git a/TAO/tao/Typecode.cpp b/TAO/tao/Typecode.cpp
index fe7c5362d03..5c02dc74dc2 100644
--- a/TAO/tao/Typecode.cpp
+++ b/TAO/tao/Typecode.cpp
@@ -3789,9 +3789,8 @@ operator>> (TAO_InputCDR &strm, CORBA::TCKind &_tao_enumval)
#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION)
-/*template class TAO_Pseudo_Object_Manager<CORBA::TypeCode,
+template class TAO_Pseudo_Object_Manager<CORBA::TypeCode,
CORBA::TypeCode_var>;
-*/
template class ACE_Hash_Map_Entry<const char *,
ACE_Unbounded_Queue<CORBA::Long> *>;
@@ -3822,11 +3821,35 @@ template class TAO_Pseudo_Var_T<CORBA::TypeCode>;
template class TAO_Pseudo_Out_T<CORBA::TypeCode, CORBA::TypeCode_var>;
template class TAO::Objref_Traits<CORBA::TypeCode>;
+
template class TAO::Arg_Traits<CORBA::TypeCode>;
-/*template class TAO::Object_Arg_Traits_T<CORBA::TypeCode_ptr,
- CORBA::TypeCode_var,
- CORBA::TypeCode_out>;
-*/
+template class
+ TAO::Object_Arg_Traits_T<CORBA::TypeCode_ptr,
+ CORBA::TypeCode_var,
+ CORBA::TypeCode_out,
+ TAO::Objref_Traits<CORBA::TypeCode> >;
+template class TAO::In_Object_Argument_T<CORBA::TypeCode_ptr>;
+template class
+ TAO::Inout_Object_Argument_T<CORBA::TypeCode_ptr,
+ TAO::Objref_Traits<CORBA::TypeCode> >;
+template class TAO::Out_Object_Argument_T<CORBA::TypeCode_ptr,
+ CORBA::TypeCode_out>;
+template class TAO::Ret_Object_Argument_T<CORBA::TypeCode_ptr,
+ CORBA::TypeCode_var>;
+
+template class TAO::SArg_Traits<CORBA::TypeCode>;
+template class TAO::Object_SArg_Traits_T<CORBA::TypeCode_ptr,
+ CORBA::TypeCode_var,
+ CORBA::TypeCode_out>;
+template class TAO::In_Object_SArgument_T<CORBA::TypeCode_ptr,
+ CORBA::TypeCode_var>;
+template class TAO::Inout_Object_SArgument_T<CORBA::TypeCode_ptr,
+ CORBA::TypeCode_var>;
+template class TAO::Out_Object_SArgument_T<CORBA::TypeCode_ptr,
+ CORBA::TypeCode_var,
+ CORBA::TypeCode_out>;
+template class TAO::Ret_Object_SArgument_T<CORBA::TypeCode_ptr,
+ CORBA::TypeCode_var>;
#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)
@@ -3865,8 +3888,32 @@ template class TAO::Arg_Traits<CORBA::TypeCode>;
#pragma instantiate TAO::Objref_Traits<CORBA::TypeCode>
#pragma instantiate TAO::Arg_Traits<CORBA::TypeCode>
-#pragma instantiate TAO::Object_Arg_Traits_T<CORBA::TypeCode_ptr, \
- CORBA::TypeCode_var, \
- CORBA::TypeCode_out>
+#pragma instantiate \
+ TAO::Object_Arg_Traits_T<CORBA::TypeCode_ptr, \
+ CORBA::TypeCode_var, \
+ CORBA::TypeCode_out, \
+ TAO::Objref_Traits<CORBA::TypeCode> >
+#pragma instantiate TAO::In_Object_Argument_T<CORBA::TypeCode_ptr>
+#pragma instantiate \
+ TAO::Inout_Object_Argument_T<CORBA::TypeCode_ptr, \
+ TAO::Objref_Traits<CORBA::TypeCode> >
+#pragma instantiate TAO::Out_Object_Argument_T<CORBA::TypeCode_ptr, \
+ CORBA::TypeCode_out>
+#pragma instantiate TAO::Ret_Object_Argument_T<CORBA::TypeCode_ptr, \
+ CORBA::TypeCode_var>
+
+#pragma instantiate TAO::SArg_Traits<CORBA::TypeCode>
+#pragma instantiate TAO::Object_SArg_Traits_T<CORBA::TypeCode_ptr, \
+ CORBA::TypeCode_var, \
+ CORBA::TypeCode_out>
+#pragma instantiate TAO::In_Object_SArgument_T<CORBA::TypeCode_ptr, \
+ CORBA::TypeCode_var>
+#pragma instantiate TAO::Inout_Object_SArgument_T<CORBA::TypeCode_ptr, \
+ CORBA::TypeCode_var>
+#pragma instantiate TAO::Out_Object_SArgument_T<CORBA::TypeCode_ptr, \
+ CORBA::TypeCode_var, \
+ CORBA::TypeCode_out>
+#pragma instantiate TAO::Ret_Object_SArgument_T<CORBA::TypeCode_ptr, \
+ CORBA::TypeCode_var>
#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */