summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2003-03-27 09:06:50 +0000
committerparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2003-03-27 09:06:50 +0000
commit9e022a7ddd06f2ff07faebfc2034e29a573c11f6 (patch)
treed7bdc8ab061ac3e6d9f9e019f2dbda72c4c01a6b
parent0e107c28c8aa35c6096ffc6ca5f32c85eea16866 (diff)
downloadATCD-9e022a7ddd06f2ff07faebfc2034e29a573c11f6.tar.gz
ChangeLogTag: Thu Mar 27 03:00:53 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
-rw-r--r--TAO/ChangeLog1
-rw-r--r--TAO/TAO_IDL/ast/ast_predefined_type.cpp4
-rw-r--r--TAO/TAO_IDL/be/be_predefined_type.cpp13
-rw-r--r--TAO/TAO_IDL/be/be_sequence.cpp23
-rw-r--r--TAO/TAO_IDL/be/be_visitor_sequence/cdr_op_cs.cpp7
-rw-r--r--TAO/TAO_IDL/be/be_visitor_sequence/sequence_ch.cpp311
-rw-r--r--TAO/TAO_IDL/be/be_visitor_sequence/sequence_cs.cpp776
-rw-r--r--TAO/TAO_IDL/fe/fe_init.cpp2
-rw-r--r--TAO/TAO_IDL/include/ast_predefined_type.h1
-rw-r--r--TAO/tao/Adapter.cpp4
-rw-r--r--TAO/tao/Adapter.h7
-rw-r--r--TAO/tao/Object.cpp28
-rw-r--r--TAO/tao/Object.h81
-rw-r--r--TAO/tao/Object.i246
-rw-r--r--TAO/tao/Objref_VarOut_T.h4
-rw-r--r--TAO/tao/Objref_VarOut_T.inl2
-rw-r--r--TAO/tao/Pseudo_VarOut_T.cpp16
-rw-r--r--TAO/tao/Pseudo_VarOut_T.h105
-rw-r--r--TAO/tao/Pseudo_VarOut_T.inl184
-rw-r--r--TAO/tao/Sequence.cpp26
-rw-r--r--TAO/tao/Sequence.h30
-rw-r--r--TAO/tao/Sequence_T.cpp162
-rw-r--r--TAO/tao/Sequence_T.h16
-rw-r--r--TAO/tao/Sequence_T.i56
-rw-r--r--TAO/tao/TAO.dsp13
-rw-r--r--TAO/tao/Typecode.h64
-rw-r--r--TAO/tao/Typecode.i150
-rw-r--r--TAO/tao/ValueBase.cpp2
-rw-r--r--TAO/tao/ValueBase.h74
-rw-r--r--TAO/tao/ValueBase.i213
-rw-r--r--TAO/tao/Value_VarOut_T.h4
-rw-r--r--TAO/tao/Value_VarOut_T.inl2
-rw-r--r--TAO/tao/corba.h2
-rw-r--r--TAO/tao/corbafwd.h7
34 files changed, 1301 insertions, 1335 deletions
diff --git a/TAO/ChangeLog b/TAO/ChangeLog
index 9cf22e1c964..87e4764564c 100644
--- a/TAO/ChangeLog
+++ b/TAO/ChangeLog
@@ -34,6 +34,7 @@ Thu Mar 27 03:00:53 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
* tao/Pseudo_VarOut_T.cpp:
* tao/Pseudo_VarOut_T.h:
+ * tao/Pseudo_VarOut_T.inl:
New files for the _var and _out classes for
CORBA::Object and CORBA::TypeCode.
diff --git a/TAO/TAO_IDL/ast/ast_predefined_type.cpp b/TAO/TAO_IDL/ast/ast_predefined_type.cpp
index d71d4e1cbdf..669915692aa 100644
--- a/TAO/TAO_IDL/ast/ast_predefined_type.cpp
+++ b/TAO/TAO_IDL/ast/ast_predefined_type.cpp
@@ -180,6 +180,10 @@ AST_PredefinedType::AST_PredefinedType (PredefinedType t,
ACE_NEW (id,
Identifier ("Object"));
break;
+ case AST_PredefinedType::PT_value:
+ ACE_NEW (id,
+ Identifier ("ValueBase"));
+ break;
case AST_PredefinedType::PT_pseudo:
ACE_NEW (id,
Identifier (n->last_component ()->get_string ()));
diff --git a/TAO/TAO_IDL/be/be_predefined_type.cpp b/TAO/TAO_IDL/be/be_predefined_type.cpp
index 7c092c7f5cd..0e157a1b415 100644
--- a/TAO/TAO_IDL/be/be_predefined_type.cpp
+++ b/TAO/TAO_IDL/be/be_predefined_type.cpp
@@ -49,6 +49,15 @@ be_predefined_type::be_predefined_type (AST_PredefinedType::PredefinedType t,
// Compute the flattened fully scoped name.
this->AST_Decl::compute_flat_name ();
+
+ if (t == AST_PredefinedType::PT_object)
+ {
+ this->fwd_helper_name_ = "CORBA::tao_Object";
+ }
+ else if (t == AST_PredefinedType::PT_value)
+ {
+ this->fwd_helper_name_ = "CORBA::tao_ValueBase";
+ }
}
// Overriden method.
@@ -133,6 +142,10 @@ be_predefined_type::compute_tc_name (void)
ACE_NEW (id,
Identifier ("_tc_Object"));
break;
+ case AST_PredefinedType::PT_value:
+ ACE_NEW (id,
+ Identifier ("_tc_ValueBase"));
+ break;
case AST_PredefinedType::PT_pseudo:
{
char tcname [100];
diff --git a/TAO/TAO_IDL/be/be_sequence.cpp b/TAO/TAO_IDL/be/be_sequence.cpp
index 758d442bd1f..fd51d8e2aae 100644
--- a/TAO/TAO_IDL/be/be_sequence.cpp
+++ b/TAO/TAO_IDL/be/be_sequence.cpp
@@ -263,17 +263,20 @@ be_sequence::managed_type (void)
be_predefined_type::narrow_from_decl (prim_type);
AST_PredefinedType::PredefinedType pt = bpd->pt ();
- if (pt == AST_PredefinedType::PT_pseudo)
+ switch (pt)
{
- this->mt_ = be_sequence::MNG_PSEUDO;
- }
- else if (pt == AST_PredefinedType::PT_object)
- {
- this->mt_ = be_sequence::MNG_OBJREF;
- }
- else
- {
- this->mt_ = be_sequence::MNG_NONE;
+ case AST_PredefinedType::PT_pseudo:
+ this->mt_ = be_sequence::MNG_PSEUDO;
+ break;
+ case AST_PredefinedType::PT_object:
+ this->mt_ = be_sequence::MNG_PSEUDO;
+ break;
+ case AST_PredefinedType::PT_value:
+ this->mt_ = be_sequence::MNG_VALUE;
+ break;
+ default:
+ this->mt_ = be_sequence::MNG_NONE;
+ break;
}
}
break;
diff --git a/TAO/TAO_IDL/be/be_visitor_sequence/cdr_op_cs.cpp b/TAO/TAO_IDL/be/be_visitor_sequence/cdr_op_cs.cpp
index 0e277d95e17..af51027505c 100644
--- a/TAO/TAO_IDL/be/be_visitor_sequence/cdr_op_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_sequence/cdr_op_cs.cpp
@@ -296,6 +296,7 @@ be_visitor_sequence_cdr_op_cs::visit_predefined_type (
switch (node->pt ())
{
case AST_PredefinedType::PT_object:
+ case AST_PredefinedType::PT_value:
case AST_PredefinedType::PT_pseudo:
case AST_PredefinedType::PT_any:
return this->visit_node (node);
@@ -705,7 +706,8 @@ be_visitor_sequence_cdr_op_cs::visit_node (be_type *bt)
AST_PredefinedType::PredefinedType pdt = pt->pt ();
if (pdt == AST_PredefinedType::PT_pseudo
- || pdt == AST_PredefinedType::PT_object)
+ || pdt == AST_PredefinedType::PT_object
+ || pdt == AST_PredefinedType::PT_value)
{
*os << "_tao_marshal_flag = (strm >> _tao_sequence[i].out ());"
<< be_uidt_nl;
@@ -837,7 +839,8 @@ be_visitor_sequence_cdr_op_cs::visit_node (be_type *bt)
AST_PredefinedType::PredefinedType pdt = pt->pt ();
if (pdt == AST_PredefinedType::PT_pseudo
- || pdt == AST_PredefinedType::PT_object)
+ || pdt == AST_PredefinedType::PT_object
+ || pdt == AST_PredefinedType::PT_value)
{
*os << "_tao_marshal_flag = (strm << _tao_sequence[i].in ());";
}
diff --git a/TAO/TAO_IDL/be/be_visitor_sequence/sequence_ch.cpp b/TAO/TAO_IDL/be/be_visitor_sequence/sequence_ch.cpp
index bdbd358dc45..af1fe3fa826 100644
--- a/TAO/TAO_IDL/be/be_visitor_sequence/sequence_ch.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_sequence/sequence_ch.cpp
@@ -78,9 +78,6 @@ int be_visitor_sequence_ch::visit_sequence (be_sequence *node)
switch (node->managed_type ())
{
case be_sequence::MNG_OBJREF:
- {
- be_interface *elem = be_interface::narrow_from_decl (bt);
-
if (node->unbounded ())
{
*os << be_nl << be_nl
@@ -88,8 +85,8 @@ int be_visitor_sequence_ch::visit_sequence (be_sequence *node)
<< "TAO_Unbounded_Object_Sequence<" << be_idt << be_idt_nl
<< bt->name () << "," << be_nl
<< bt->name () << "_var," << be_nl
- << elem->fwd_helper_name () << "_life," << be_nl
- << elem->fwd_helper_name () << "_cast" << be_uidt_nl
+ << bt->fwd_helper_name () << "_life," << be_nl
+ << bt->fwd_helper_name () << "_cast" << be_uidt_nl
<< "> " << node->local_name () << ";" << be_uidt << be_uidt;
}
else
@@ -99,8 +96,8 @@ int be_visitor_sequence_ch::visit_sequence (be_sequence *node)
<< "TAO_Bounded_Object_Sequence<" << be_idt << be_idt_nl
<< bt->name () << "," << be_nl
<< bt->name () << "_var," << be_nl
- << elem->fwd_helper_name () << "_life," << be_nl
- << elem->fwd_helper_name () << "_cast," << be_nl
+ << bt->fwd_helper_name () << "_life," << be_nl
+ << bt->fwd_helper_name () << "_cast," << be_nl
<< node->max_size ()->ev ()->u.ulval << be_uidt_nl
<< "> " << node->local_name () << ";" << be_uidt << be_uidt;
}
@@ -115,7 +112,7 @@ int be_visitor_sequence_ch::visit_sequence (be_sequence *node)
<< "TAO_Object_Manager<" << be_idt << be_idt_nl
<< bt->name () << "," << be_nl
<< bt->name () << "_var," << be_nl
- << elem->fwd_helper_name () << "_life" << be_uidt_nl
+ << bt->fwd_helper_name () << "_life" << be_uidt_nl
<< ">" << be_uidt << be_uidt_nl
<< "> " << node->local_name () << "_var;" << be_uidt << be_uidt;
@@ -127,151 +124,241 @@ int be_visitor_sequence_ch::visit_sequence (be_sequence *node)
<< "TAO_Object_Manager<" << be_idt << be_idt_nl
<< bt->name () << "," << be_nl
<< bt->name () << "_var," << be_nl
- << elem->fwd_helper_name () << "_life" << be_uidt_nl
+ << bt->fwd_helper_name () << "_life" << be_uidt_nl
<< ">" << be_uidt << be_uidt_nl
<< "> " << node->local_name () << "_out;" << be_uidt << be_uidt;
}
- }
break;
case be_sequence::MNG_ABSTRACT:
- {
- be_interface *elem = be_interface::narrow_from_decl (bt);
-
- if (node->unbounded ())
- {
- *os << be_nl << be_nl
- << "typedef" << be_idt_nl
- << "TAO_Unbounded_Abstract_Sequence<" << be_idt << be_idt_nl
- << bt->name () << "," << be_nl
- << bt->name () << "_var," << be_nl
- << elem->fwd_helper_name () << "_life" << be_uidt_nl
- << "> " << node->local_name () << ";" << be_uidt << be_uidt;
- }
- else
- {
- *os << be_nl << be_nl
- << "typedef" << be_idt_nl
- << "TAO_Bounded_Object_Sequence<" << be_idt << be_idt_nl
- << bt->name () << "," << be_nl
- << bt->name () << "_var," << be_nl
- << elem->fwd_helper_name () << "_life," << be_nl
- << node->max_size ()->ev ()->u.ulval << be_uidt_nl
- << "> " << node->local_name () << ";" << be_uidt << be_uidt;
- }
+ if (node->unbounded ())
+ {
+ *os << be_nl << be_nl
+ << "typedef" << be_idt_nl
+ << "TAO_Unbounded_Abstract_Sequence<" << be_idt << be_idt_nl
+ << bt->name () << "," << be_nl
+ << bt->name () << "_var," << be_nl
+ << bt->fwd_helper_name () << "_life" << be_uidt_nl
+ << "> " << node->local_name () << ";" << be_uidt << be_uidt;
+ }
+ else
+ {
+ *os << be_nl << be_nl
+ << "typedef" << be_idt_nl
+ << "TAO_Bounded_Object_Sequence<" << be_idt << be_idt_nl
+ << bt->name () << "," << be_nl
+ << bt->name () << "_var," << be_nl
+ << bt->fwd_helper_name () << "_life," << be_nl
+ << node->max_size ()->ev ()->u.ulval << be_uidt_nl
+ << "> " << node->local_name () << ";" << be_uidt << be_uidt;
+ }
- // Generate the _var and _out types only if we are not anonymous.
- if (this->ctx_->tdef () != 0)
- {
- *os << be_nl << be_nl
- << "typedef" << be_idt_nl
- << "TAO_VarSeq_Var_T<" << be_idt << be_idt_nl
- << node->local_name () << "," << be_nl
- << "TAO_Abstract_Manager<" << be_idt << be_idt_nl
- << bt->name () << "," << be_nl
- << bt->name () << "_var," << be_nl
- << elem->fwd_helper_name () << "_life" << be_uidt_nl
- << ">" << be_uidt << be_uidt_nl
- << "> " << node->local_name () << "_var;" << be_uidt << be_uidt;
+ // Generate the _var and _out types only if we are not anonymous.
+ if (this->ctx_->tdef () != 0)
+ {
+ *os << be_nl << be_nl
+ << "typedef" << be_idt_nl
+ << "TAO_VarSeq_Var_T<" << be_idt << be_idt_nl
+ << node->local_name () << "," << be_nl
+ << "TAO_Abstract_Manager<" << be_idt << be_idt_nl
+ << bt->name () << "," << be_nl
+ << bt->name () << "_var," << be_nl
+ << bt->fwd_helper_name () << "_life" << be_uidt_nl
+ << ">" << be_uidt << be_uidt_nl
+ << "> " << node->local_name () << "_var;" << be_uidt << be_uidt;
- *os << be_nl << be_nl
- << "typedef" << be_idt_nl
- << "TAO_Seq_Out_T<" << be_idt << be_idt_nl
- << node->local_name () << "," << be_nl
- << node->local_name () << "_var," << be_nl
- << "TAO_Abstract_Manager<" << be_idt << be_idt_nl
- << bt->name () << "," << be_nl
- << bt->name () << "_var," << be_nl
- << elem->fwd_helper_name () << "_life" << be_uidt_nl
- << ">" << be_uidt << be_uidt_nl
- << "> " << node->local_name () << "_out;" << be_uidt << be_uidt;
- }
- }
+ *os << be_nl << be_nl
+ << "typedef" << be_idt_nl
+ << "TAO_Seq_Out_T<" << be_idt << be_idt_nl
+ << node->local_name () << "," << be_nl
+ << node->local_name () << "_var," << be_nl
+ << "TAO_Abstract_Manager<" << be_idt << be_idt_nl
+ << bt->name () << "," << be_nl
+ << bt->name () << "_var," << be_nl
+ << bt->fwd_helper_name () << "_life" << be_uidt_nl
+ << ">" << be_uidt << be_uidt_nl
+ << "> " << node->local_name () << "_out;" << be_uidt << be_uidt;
+ }
break;
case be_sequence::MNG_PSEUDO:
if (node->unbounded ())
{
+ *os << be_nl << be_nl
+ << "typedef" << be_idt_nl
+ << "TAO_Unbounded_Pseudo_Sequence<" << be_idt << be_idt_nl
+ << bt->name () << "," << be_nl
+ << bt->name () << "_var" << be_uidt_nl
+ << ">" << be_uidt_nl
+ << node->local_name () << ";" << be_uidt;
}
else
{
+ *os << be_nl << be_nl
+ << "typedef" << be_idt_nl
+ << "TAO_Bounded_Pseudo_Sequence<" << be_idt << be_idt_nl
+ << bt->name () << "," << be_nl
+ << bt->name () << "_var," << be_nl
+ << node->max_size ()->ev ()->u.ulval << be_uidt_nl
+ << ">" << be_uidt_nl
+ << node->local_name () << ";" << be_uidt;
+ }
+
+ // Generate the _var and _out types only if we are not anonymous.
+ if (this->ctx_->tdef () != 0)
+ {
+ *os << be_nl << be_nl
+ << "typedef" << be_idt_nl
+ << "TAO_VarSeq_Var_T<" << be_idt << be_idt_nl
+ << node->local_name () << "," << be_nl
+ << "TAO_Pseudo_Object_Manager<" << be_idt << be_idt_nl
+ << bt->name () << "," << be_nl
+ << bt->name () << "_var" << be_uidt_nl
+ << ">" << be_uidt << be_uidt_nl
+ << "> " << node->local_name () << "_var;" << be_uidt << be_uidt;
+
+ *os << be_nl << be_nl
+ << "typedef" << be_idt_nl
+ << "TAO_Seq_Out_T<" << be_idt << be_idt_nl
+ << node->local_name () << "," << be_nl
+ << node->local_name () << "_var," << be_nl
+ << "TAO_Pseudo_Object_Manager<" << be_idt << be_idt_nl
+ << bt->name () << "," << be_nl
+ << bt->name () << "_var" << be_uidt_nl
+ << ">" << be_uidt << be_uidt_nl
+ << "> " << node->local_name () << "_out;" << be_uidt << be_uidt;
}
break;
case be_sequence::MNG_VALUE:
- {
- be_interface *elem = be_interface::narrow_from_decl (bt);
-
- if (node->unbounded ())
- {
- *os << be_nl << be_nl
- << "typedef" << be_idt_nl
- << "TAO_Unbounded_Valuetype_Sequence<" << be_idt << be_idt_nl
- << bt->name () << "," << be_nl
- << bt->name () << "_var," << be_nl
- << elem->fwd_helper_name () << "_life" << be_uidt_nl
- << ">" << be_uidt_nl
- << node->local_name () << ";" << be_uidt;
- }
- else
- {
- *os << be_nl << be_nl
- << "typedef" << be_idt_nl
- << "TAO_Bounded_Valuetype_Sequence<" << be_idt << be_idt_nl
- << bt->name () << "," << be_nl
- << bt->name () << "_var," << be_nl
- << elem->fwd_helper_name () << "_life," << be_nl
- << node->max_size ()->ev ()->u.ulval << be_uidt_nl
- << ">" << be_uidt_nl
- << node->local_name () << ";" << be_uidt;
- }
+ if (node->unbounded ())
+ {
+ *os << be_nl << be_nl
+ << "typedef" << be_idt_nl
+ << "TAO_Unbounded_Valuetype_Sequence<" << be_idt << be_idt_nl
+ << bt->name () << "," << be_nl
+ << bt->name () << "_var," << be_nl
+ << bt->fwd_helper_name () << "_life" << be_uidt_nl
+ << ">" << be_uidt_nl
+ << node->local_name () << ";" << be_uidt;
+ }
+ else
+ {
+ *os << be_nl << be_nl
+ << "typedef" << be_idt_nl
+ << "TAO_Bounded_Valuetype_Sequence<" << be_idt << be_idt_nl
+ << bt->name () << "," << be_nl
+ << bt->name () << "_var," << be_nl
+ << bt->fwd_helper_name () << "_life," << be_nl
+ << node->max_size ()->ev ()->u.ulval << be_uidt_nl
+ << ">" << be_uidt_nl
+ << node->local_name () << ";" << be_uidt;
+ }
- // Generate the _var and _out types only if we are not anonymous.
- if (this->ctx_->tdef () != 0)
- {
- *os << be_nl << be_nl
- << "typedef" << be_idt_nl
- << "TAO_VarSeq_Var_T<" << be_idt << be_idt_nl
- << node->local_name () << "," << be_nl
- << "TAO_Valuetype_Manager<" << be_idt << be_idt_nl
- << bt->name () << "," << be_nl
- << bt->name () << "_var," << be_nl
- << elem->fwd_helper_name () << "_life" << be_uidt_nl
- << ">" << be_uidt << be_uidt_nl
- << "> " << node->local_name () << "_var;" << be_uidt << be_uidt;
+ // Generate the _var and _out types only if we are not anonymous.
+ if (this->ctx_->tdef () != 0)
+ {
+ *os << be_nl << be_nl
+ << "typedef" << be_idt_nl
+ << "TAO_VarSeq_Var_T<" << be_idt << be_idt_nl
+ << node->local_name () << "," << be_nl
+ << "TAO_Valuetype_Manager<" << be_idt << be_idt_nl
+ << bt->name () << "," << be_nl
+ << bt->name () << "_var," << be_nl
+ << bt->fwd_helper_name () << "_life" << be_uidt_nl
+ << ">" << be_uidt << be_uidt_nl
+ << "> " << node->local_name () << "_var;" << be_uidt << be_uidt;
- *os << be_nl << be_nl
- << "typedef" << be_idt_nl
- << "TAO_Seq_Out_T<" << be_idt << be_idt_nl
- << node->local_name () << "," << be_nl
- << node->local_name () << "_var," << be_nl
- << "TAO_Valuetype_Manager<" << be_idt << be_idt_nl
- << bt->name () << "," << be_nl
- << bt->name () << "_var," << be_nl
- << elem->fwd_helper_name () << "_life" << be_uidt_nl
- << ">" << be_uidt << be_uidt_nl
- << "> " << node->local_name () << "_out;" << be_uidt << be_uidt;
- }
- }
+ *os << be_nl << be_nl
+ << "typedef" << be_idt_nl
+ << "TAO_Seq_Out_T<" << be_idt << be_idt_nl
+ << node->local_name () << "," << be_nl
+ << node->local_name () << "_var," << be_nl
+ << "TAO_Valuetype_Manager<" << be_idt << be_idt_nl
+ << bt->name () << "," << be_nl
+ << bt->name () << "_var," << be_nl
+ << bt->fwd_helper_name () << "_life" << be_uidt_nl
+ << ">" << be_uidt << be_uidt_nl
+ << "> " << node->local_name () << "_out;" << be_uidt << be_uidt;
+ }
break;
case be_sequence::MNG_STRING:
if (node->unbounded ())
{
+ *os << be_nl << be_nl
+ << "typedef" << be_idt_nl
+ << "TAO_Unbounded_String_Sequence" << be_nl
+ << node->local_name () << ";" << be_uidt;
}
else
{
+ *os << be_nl << be_nl
+ << "typedef" << be_idt_nl
+ << "TAO_Bounded_String_Sequence<"
+ << node->max_size ()->ev ()->u.ulval << ">" << be_nl
+ << node->local_name () << ";" << be_uidt;
+ }
+
+ if (this->ctx_->tdef () != 0)
+ {
+ *os << be_nl << be_nl
+ << "typedef" << be_idt_nl
+ << "TAO_VarSeq_Var_T<" << be_idt << be_idt_nl
+ << node->local_name () << "," << be_nl
+ << "TAO_SeqElem_String_Manager" << be_uidt_nl
+ << ">" << be_uidt_nl
+ << node->local_name () << "_var;" << be_uidt;
+
+ *os << be_nl << be_nl
+ << "typedef" << be_idt_nl
+ << "TAO_Seq_Out_T<" << be_idt << be_idt_nl
+ << node->local_name () << "," << be_nl
+ << node->local_name () << "_var," << be_nl
+ << "TAO_SeqElem_String_Manager" << be_uidt_nl
+ << ">" << be_uidt_nl
+ << node->local_name () << "_out;" << be_uidt;
}
break;
case be_sequence::MNG_WSTRING:
if (node->unbounded ())
{
+ *os << be_nl << be_nl
+ << "typedef" << be_idt_nl
+ << "TAO_Unbounded_WString_Sequence" << be_nl
+ << node->local_name () << ";" << be_uidt;
}
else
{
+ *os << be_nl << be_nl
+ << "typedef" << be_idt_nl
+ << "TAO_Bounded_WString_Sequence<"
+ << node->max_size ()->ev ()->u.ulval << ">" << be_nl
+ << node->local_name () << ";" << be_uidt;
+ }
+
+ if (this->ctx_->tdef () != 0)
+ {
+ *os << be_nl << be_nl
+ << "typedef" << be_idt_nl
+ << "TAO_VarSeq_Var_T<" << be_idt << be_idt_nl
+ << node->local_name () << "," << be_nl
+ << "TAO_SeqElem_WString_Manager" << be_uidt_nl
+ << ">" << be_uidt_nl
+ << node->local_name () << "_var;" << be_uidt;
+
+ *os << be_nl << be_nl
+ << "typedef" << be_idt_nl
+ << "TAO_Seq_Out_T<" << be_idt << be_idt_nl
+ << node->local_name () << "," << be_nl
+ << node->local_name () << "_var," << be_nl
+ << "TAO_SeqElem_WString_Manager" << be_uidt_nl
+ << ">" << be_uidt_nl
+ << node->local_name () << "_out;" << be_uidt;
}
+
break;
default: // Not a managed type.
if (bt->base_node_type () == AST_Decl::NT_array)
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 56adee4cef0..b148609aaba 100644
--- a/TAO/TAO_IDL/be/be_visitor_sequence/sequence_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_sequence/sequence_cs.cpp
@@ -54,196 +54,260 @@ int be_visitor_sequence_cs::visit_sequence (be_sequence *node)
switch (node->managed_type ())
{
case be_sequence::MNG_OBJREF:
- {
- be_interface *elem = be_interface::narrow_from_decl (bt);
-
- if (node->unbounded ())
- {
- *os << be_nl << be_nl
- << "template class" << be_idt_nl
- << "TAO_Unbounded_Object_Sequence<" << be_idt << be_idt_nl
- << elem->name () << "," << be_nl
- << elem->name () << "_var," << be_nl
- << elem->fwd_helper_name () << "_life," << be_nl
- << elem->fwd_helper_name () << "_cast" << be_uidt_nl
- << ">;" << be_uidt << be_uidt_nl;
- }
- else
- {
- *os << be_nl << be_nl
- << "template class" << be_idt_nl
- << "TAO_Bounded_Object_Sequence<" << be_idt << be_idt_nl
- << elem->name () << "," << be_nl
- << elem->name () << "_var," << be_nl
- << elem->fwd_helper_name () << "_life," << be_nl
- << elem->fwd_helper_name () << "_cast," << be_nl
- << node->max_size ()->ev ()->u.ulval << be_uidt_nl
- << ">;" << be_uidt << be_uidt;
- }
-
- // Instantiate the _var and _out types only if we are not anonymous.
- if (this->ctx_->tdef () != 0)
- {
- *os << be_nl << be_nl
- << "template class" << be_idt_nl
- << "TAO_VarSeq_Var_T<" << be_idt << be_idt_nl
- << node->name () << "," << be_nl
- << "TAO_Object_Manager<" << be_idt << be_idt_nl
- << elem->name () << "," << be_nl
- << elem->name () << "_var," << be_nl
- << elem->fwd_helper_name () << "_life" << be_uidt_nl
- << ">" << be_uidt << be_uidt_nl
- << ">;" << be_uidt << be_uidt;
-
- *os << be_nl << be_nl
- << "template class" << be_idt_nl
- << "TAO_Seq_Out_T<" << be_idt << be_idt_nl
- << node->name () << "," << be_nl
- << node->name () << "_var," << be_nl
- << "TAO_Object_Manager<" << be_idt << be_idt_nl
- << elem->name () << "," << be_nl
- << elem->name () << "_var," << be_nl
- << elem->fwd_helper_name () << "_life" << be_uidt_nl
- << ">" << be_uidt << be_uidt_nl
- << ">;" << be_uidt << be_uidt;
- }
- }
+ if (node->unbounded ())
+ {
+ *os << be_nl << be_nl
+ << "template class" << be_idt_nl
+ << "TAO_Unbounded_Object_Sequence<" << be_idt << be_idt_nl
+ << bt->name () << "," << be_nl
+ << bt->name () << "_var," << be_nl
+ << bt->fwd_helper_name () << "_life," << be_nl
+ << bt->fwd_helper_name () << "_cast" << be_uidt_nl
+ << ">;" << be_uidt << be_uidt_nl;
+ }
+ else
+ {
+ *os << be_nl << be_nl
+ << "template class" << be_idt_nl
+ << "TAO_Bounded_Object_Sequence<" << be_idt << be_idt_nl
+ << bt->name () << "," << be_nl
+ << bt->name () << "_var," << be_nl
+ << bt->fwd_helper_name () << "_life," << be_nl
+ << bt->fwd_helper_name () << "_cast," << be_nl
+ << node->max_size ()->ev ()->u.ulval << be_uidt_nl
+ << ">;" << be_uidt << be_uidt;
+ }
+
+ // Instantiate the _var and _out types only if we are not anonymous.
+ if (this->ctx_->tdef () != 0)
+ {
+ *os << be_nl << be_nl
+ << "template class" << be_idt_nl
+ << "TAO_VarSeq_Var_T<" << be_idt << be_idt_nl
+ << node->name () << "," << be_nl
+ << "TAO_Object_Manager<" << be_idt << be_idt_nl
+ << bt->name () << "," << be_nl
+ << bt->name () << "_var," << be_nl
+ << bt->fwd_helper_name () << "_life" << be_uidt_nl
+ << ">" << be_uidt << be_uidt_nl
+ << ">;" << be_uidt << be_uidt;
+
+ *os << be_nl << be_nl
+ << "template class" << be_idt_nl
+ << "TAO_Seq_Out_T<" << be_idt << be_idt_nl
+ << node->name () << "," << be_nl
+ << node->name () << "_var," << be_nl
+ << "TAO_Object_Manager<" << be_idt << be_idt_nl
+ << bt->name () << "," << be_nl
+ << bt->name () << "_var," << be_nl
+ << bt->fwd_helper_name () << "_life" << be_uidt_nl
+ << ">" << be_uidt << be_uidt_nl
+ << ">;" << be_uidt << be_uidt;
+ }
break;
case be_sequence::MNG_ABSTRACT:
- {
- be_interface *elem = be_interface::narrow_from_decl (bt);
-
- if (node->unbounded ())
- {
- *os << be_nl << be_nl
- << "template class" << be_idt_nl
- << "TAO_Unbounded_Abstract_Sequence<" << be_idt << be_idt_nl
- << elem->name () << "," << be_nl
- << elem->name () << "_var," << be_nl
- << elem->fwd_helper_name () << "_life" << be_uidt_nl
- << ">;" << be_uidt << be_uidt;
- }
- else
- {
- *os << be_nl << be_nl
- << "template class" << be_idt_nl
- << "TAO_Bounded_Abstract_Sequence<" << be_idt << be_idt_nl
- << elem->name () << "," << be_nl
- << elem->name () << "_var," << be_nl
- << elem->fwd_helper_name () << "_life," << be_nl
- << node->max_size ()->ev ()->u.ulval << be_uidt_nl
- << ">;" << be_uidt << be_uidt;
- }
-
- // Instantiate the _var and _out types only if we are not anonymous.
- if (this->ctx_->tdef () != 0)
- {
- *os << be_nl << be_nl
- << "template class" << be_idt_nl
- << "TAO_VarSeq_Var_T<" << be_idt << be_idt_nl
- << node->name () << "," << be_nl
- << "TAO_Abstract_Manager<" << be_idt << be_idt_nl
- << elem->name () << "," << be_nl
- << elem->name () << "_var," << be_nl
- << elem->fwd_helper_name () << "_life" << be_uidt_nl
- << ">" << be_uidt << be_uidt_nl
- << ">;" << be_uidt << be_uidt;
-
- *os << be_nl << be_nl
- << "template class" << be_idt_nl
- << "TAO_Seq_Out_T<" << be_idt << be_idt_nl
- << node->name () << "," << be_nl
- << node->name () << "_var," << be_nl
- << "TAO_Abstract_Manager<" << be_idt << be_idt_nl
- << elem->name () << "," << be_nl
- << elem->name () << "_var," << be_nl
- << elem->fwd_helper_name () << "_life" << be_uidt_nl
- << ">" << be_uidt << be_uidt_nl
- << ">;" << be_uidt << be_uidt;
- }
- }
+ if (node->unbounded ())
+ {
+ *os << be_nl << be_nl
+ << "template class" << be_idt_nl
+ << "TAO_Unbounded_Abstract_Sequence<" << be_idt << be_idt_nl
+ << bt->name () << "," << be_nl
+ << bt->name () << "_var," << be_nl
+ << bt->fwd_helper_name () << "_life" << be_uidt_nl
+ << ">;" << be_uidt << be_uidt;
+ }
+ else
+ {
+ *os << be_nl << be_nl
+ << "template class" << be_idt_nl
+ << "TAO_Bounded_Abstract_Sequence<" << be_idt << be_idt_nl
+ << bt->name () << "," << be_nl
+ << bt->name () << "_var," << be_nl
+ << bt->fwd_helper_name () << "_life," << be_nl
+ << node->max_size ()->ev ()->u.ulval << be_uidt_nl
+ << ">;" << be_uidt << be_uidt;
+ }
+
+ // Instantiate the _var and _out types only if we are not anonymous.
+ if (this->ctx_->tdef () != 0)
+ {
+ *os << be_nl << be_nl
+ << "template class" << be_idt_nl
+ << "TAO_VarSeq_Var_T<" << be_idt << be_idt_nl
+ << node->name () << "," << be_nl
+ << "TAO_Abstract_Manager<" << be_idt << be_idt_nl
+ << bt->name () << "," << be_nl
+ << bt->name () << "_var," << be_nl
+ << bt->fwd_helper_name () << "_life" << be_uidt_nl
+ << ">" << be_uidt << be_uidt_nl
+ << ">;" << be_uidt << be_uidt;
+
+ *os << be_nl << be_nl
+ << "template class" << be_idt_nl
+ << "TAO_Seq_Out_T<" << be_idt << be_idt_nl
+ << node->name () << "," << be_nl
+ << node->name () << "_var," << be_nl
+ << "TAO_Abstract_Manager<" << be_idt << be_idt_nl
+ << bt->name () << "," << be_nl
+ << bt->name () << "_var," << be_nl
+ << bt->fwd_helper_name () << "_life" << be_uidt_nl
+ << ">" << be_uidt << be_uidt_nl
+ << ">;" << be_uidt << be_uidt;
+ }
break;
case be_sequence::MNG_PSEUDO:
if (node->unbounded ())
{
+ *os << be_nl << be_nl
+ << "template class" << be_idt_nl
+ << "TAO_Unbounded_Pseudo_Sequence<" << be_idt << be_idt_nl
+ << bt->name () << "," << be_nl
+ << bt->name () << "_var" << be_uidt_nl
+ << ">;" << be_uidt << be_uidt;
}
else
{
+ *os << be_nl << be_nl
+ << "template class" << be_idt_nl
+ << "TAO_Bounded_Pseudo_Sequence<" << be_idt << be_idt_nl
+ << bt->name () << "," << be_nl
+ << bt->name () << "_var," << be_nl
+ << node->max_size ()->ev ()->u.ulval << be_uidt_nl
+ << ">;" << be_uidt << be_uidt;
}
+ // Instantiate the _var and _out types only if we are not anonymous.
+ if (this->ctx_->tdef () != 0)
+ {
+ *os << be_nl << be_nl
+ << "template class" << be_idt_nl
+ << "TAO_VarSeq_Var_T<" << be_idt << be_idt_nl
+ << node->name () << "," << be_nl
+ << "TAO_Pseudo_Object_Manager<" << be_idt << be_idt_nl
+ << bt->name () << "," << be_nl
+ << bt->name () << "_var" << be_uidt_nl
+ << ">" << be_uidt << be_uidt_nl
+ << ">;" << be_uidt << be_uidt;
+
+ *os << be_nl << be_nl
+ << "template class" << be_idt_nl
+ << "TAO_Seq_Out_T<" << be_idt << be_idt_nl
+ << node->name () << "," << be_nl
+ << node->name () << "_var," << be_nl
+ << "TAO_Pseudo_Object_Manager<" << be_idt << be_idt_nl
+ << bt->name () << "," << be_nl
+ << bt->name () << "_var" << be_uidt_nl
+ << ">" << be_uidt << be_uidt_nl
+ << ">;" << be_uidt << be_uidt;
+ }
+
break;
case be_sequence::MNG_VALUE:
- {
- be_interface *elem = be_interface::narrow_from_decl (bt);
-
- if (node->unbounded ())
- {
- *os << be_nl << be_nl
- << "template class" << be_idt_nl
- << "TAO_Unbounded_Valuetype_Sequence<" << be_idt << be_idt_nl
- << elem->name () << "," << be_nl
- << elem->name () << "_var," << be_nl
- << elem->fwd_helper_name () << "_life" << be_uidt_nl
- << ">;" << be_uidt << be_uidt;
- }
- else
- {
- *os << be_nl << be_nl
- << "template class" << be_idt_nl
- << "TAO_Bounded_Valuetype_Sequence<" << be_idt << be_idt_nl
- << elem->name () << "," << be_nl
- << elem->name () << "_var," << be_nl
- << elem->fwd_helper_name () << "_life," << be_nl
- << node->max_size ()->ev ()->u.ulval << be_uidt_nl
- << ">;" << be_uidt << be_uidt;
- }
-
- // Instantiate the _var and _out types only if we are not anonymous.
- if (this->ctx_->tdef () != 0)
- {
- *os << be_nl << be_nl
- << "template class" << be_idt_nl
- << "TAO_VarSeq_Var_T<" << be_idt << be_idt_nl
- << node->name () << "," << be_nl
- << "TAO_Valuetype_Manager<" << be_idt << be_idt_nl
- << elem->name () << "," << be_nl
- << elem->name () << "_var," << be_nl
- << elem->fwd_helper_name () << "_life" << be_uidt_nl
- << ">" << be_uidt << be_uidt_nl
- << ">;" << be_uidt << be_uidt;
-
- *os << be_nl << be_nl
- << "template class" << be_idt_nl
- << "TAO_Seq_Out_T<" << be_idt << be_idt_nl
- << node->name () << "," << be_nl
- << node->name () << "_var," << be_nl
- << "TAO_Valuetype_Manager<" << be_idt << be_idt_nl
- << elem->name () << "," << be_nl
- << elem->name () << "_var," << be_nl
- << elem->fwd_helper_name () << "_life" << be_uidt_nl
- << ">" << be_uidt << be_uidt_nl
- << ">;" << be_uidt << be_uidt;
- }
- }
+ if (node->unbounded ())
+ {
+ *os << be_nl << be_nl
+ << "template class" << be_idt_nl
+ << "TAO_Unbounded_Valuetype_Sequence<" << be_idt << be_idt_nl
+ << bt->name () << "," << be_nl
+ << bt->name () << "_var," << be_nl
+ << bt->fwd_helper_name () << "_life" << be_uidt_nl
+ << ">;" << be_uidt << be_uidt;
+ }
+ else
+ {
+ *os << be_nl << be_nl
+ << "template class" << be_idt_nl
+ << "TAO_Bounded_Valuetype_Sequence<" << be_idt << be_idt_nl
+ << bt->name () << "," << be_nl
+ << bt->name () << "_var," << be_nl
+ << bt->fwd_helper_name () << "_life," << be_nl
+ << node->max_size ()->ev ()->u.ulval << be_uidt_nl
+ << ">;" << be_uidt << be_uidt;
+ }
+
+ // Instantiate the _var and _out types only if we are not anonymous.
+ if (this->ctx_->tdef () != 0)
+ {
+ *os << be_nl << be_nl
+ << "template class" << be_idt_nl
+ << "TAO_VarSeq_Var_T<" << be_idt << be_idt_nl
+ << node->name () << "," << be_nl
+ << "TAO_Valuetype_Manager<" << be_idt << be_idt_nl
+ << bt->name () << "," << be_nl
+ << bt->name () << "_var," << be_nl
+ << bt->fwd_helper_name () << "_life" << be_uidt_nl
+ << ">" << be_uidt << be_uidt_nl
+ << ">;" << be_uidt << be_uidt;
+
+ *os << be_nl << be_nl
+ << "template class" << be_idt_nl
+ << "TAO_Seq_Out_T<" << be_idt << be_idt_nl
+ << node->name () << "," << be_nl
+ << node->name () << "_var," << be_nl
+ << "TAO_Valuetype_Manager<" << be_idt << be_idt_nl
+ << bt->name () << "," << be_nl
+ << bt->name () << "_var," << be_nl
+ << bt->fwd_helper_name () << "_life" << be_uidt_nl
+ << ">" << be_uidt << be_uidt_nl
+ << ">;" << be_uidt << be_uidt;
+ }
break;
case be_sequence::MNG_STRING:
- if (node->unbounded ())
+ if (! node->unbounded ())
{
+ *os << be_nl << be_nl
+ << "template class TAO_Bounded_String_Sequence<" << be_nl
+ << node->max_size ()->ev ()->u.ulval << ">;";
}
- else
+
+ // Instantiate the _var and _out types only if we are not anonymous.
+ if (this->ctx_->tdef () != 0)
{
+ *os << be_nl << be_nl
+ << "template class" << be_idt_nl
+ << "TAO_VarSeq_Var_T<" << be_idt << be_idt_nl
+ << node->name () << "," << be_nl
+ <<"TAO_SeqElem_String_Manager" << be_uidt_nl
+ << ">;" << be_uidt << be_uidt;
+
+ *os << be_nl << be_nl
+ << "template class" << be_idt_nl
+ << "TAO_Seq_Out_T<" << be_idt << be_idt_nl
+ << node->name () << "," << be_nl
+ << node->name () << "_var," << be_nl
+ << "TAO_SeqElem_String_Manager" << be_uidt_nl
+ << ">;" << be_uidt << be_uidt;
}
break;
case be_sequence::MNG_WSTRING:
- if (node->unbounded ())
+ if (! node->unbounded ())
{
+ *os << be_nl << be_nl
+ << "template class TAO_Bounded_WString_Sequence<"
+ << node->max_size ()->ev ()->u.ulval << ">;";
}
- else
+
+ // Instantiate the _var and _out types only if we are not anonymous.
+ if (this->ctx_->tdef () != 0)
{
+ *os << be_nl << be_nl
+ << "template class" << be_idt_nl
+ << "TAO_VarSeq_Var_T<" << be_idt << be_idt_nl
+ << node->name () << "," << be_nl
+ <<"TAO_SeqElem_WString_Manager" << be_uidt_nl
+ << ">;" << be_uidt << be_uidt;
+
+ *os << be_nl << be_nl
+ << "template class" << be_idt_nl
+ << "TAO_Seq_Out_T<" << be_idt << be_idt_nl
+ << node->name () << "," << be_nl
+ << node->name () << "_var," << be_nl
+ << "TAO_SeqElem_WString_Manager" << be_uidt_nl
+ << ">;" << be_uidt << be_uidt;
}
break;
@@ -324,196 +388,260 @@ int be_visitor_sequence_cs::visit_sequence (be_sequence *node)
switch (node->managed_type ())
{
case be_sequence::MNG_OBJREF:
- {
- be_interface *elem = be_interface::narrow_from_decl (bt);
-
- if (node->unbounded ())
- {
- *os << be_nl << be_nl
- << "# pragma instantiate \\" << be_idt << be_idt_nl
- << "TAO_Unbounded_Object_Sequence< \\" << be_idt << be_idt_nl
- << elem->name () << ", \\" << be_nl
- << elem->name () << "_var, \\" << be_nl
- << elem->fwd_helper_name () << "_life, \\" << be_nl
- << elem->fwd_helper_name () << "_cast, \\" << be_uidt_nl
- << ">" << be_uidt << be_uidt << be_uidt << be_uidt;
- }
- else
- {
- *os << be_nl << be_nl
- << "# pragma instantiate \\" << be_idt << be_idt_nl
- << "TAO_Bounded_Object_Sequence< \\" << be_idt << be_idt_nl
- << elem->name () << ", \\" << be_nl
- << elem->name () << "_var, \\" << be_nl
- << elem->fwd_helper_name () << "_life, \\" << be_nl
- << elem->fwd_helper_name () << "_cast \\" << be_nl
- << node->max_size ()->ev ()->u.ulval << " \\" << be_uidt_nl
- << ">" << be_uidt << be_uidt << be_uidt << be_uidt;
- }
-
- // Instantiate the _var and _out types only if we are not anonymous.
- if (this->ctx_->tdef () != 0)
- {
- *os << be_nl << be_nl
- << "# pragma instantiate \\" << be_idt << be_idt_nl
- << "TAO_VarSeq_Var_T< \\" << be_idt << be_idt_nl
- << node->name () << ", \\" << be_nl
- << "TAO_Object_Manager< \\" << be_idt << be_idt_nl
- << elem->name () << ", \\" << be_nl
- << elem->name () << "_var, \\" << be_nl
- << elem->fwd_helper_name () << "_life \\" << be_uidt_nl
- << "> \\" << be_uidt << be_uidt_nl
- << ">" << be_uidt << be_uidt << be_uidt;
-
- *os << be_nl << be_nl
- << "# pragma instantiate \\" << be_idt << be_idt_nl
- << "TAO_Seq_Out_T< \\" << be_idt << be_idt_nl
- << node->name () << ", \\" << be_nl
- << node->name () << "_var, \\" << be_nl
- << "TAO_Object_Manager< \\" << be_idt << be_idt_nl
- << elem->name () << ", \\" << be_nl
- << elem->name () << "_var, \\" << be_nl
- << elem->fwd_helper_name () << "_life \\" << be_uidt_nl
- << "> \\" << be_uidt << be_uidt_nl
- << ">" << be_uidt << be_uidt;
- }
- }
+ if (node->unbounded ())
+ {
+ *os << be_nl << be_nl
+ << "# pragma instantiate \\" << be_idt << be_idt_nl
+ << "TAO_Unbounded_Object_Sequence< \\" << be_idt << be_idt_nl
+ << bt->name () << ", \\" << be_nl
+ << bt->name () << "_var, \\" << be_nl
+ << bt->fwd_helper_name () << "_life, \\" << be_nl
+ << bt->fwd_helper_name () << "_cast, \\" << be_uidt_nl
+ << ">" << be_uidt << be_uidt << be_uidt << be_uidt;
+ }
+ else
+ {
+ *os << be_nl << be_nl
+ << "# pragma instantiate \\" << be_idt << be_idt_nl
+ << "TAO_Bounded_Object_Sequence< \\" << be_idt << be_idt_nl
+ << bt->name () << ", \\" << be_nl
+ << bt->name () << "_var, \\" << be_nl
+ << bt->fwd_helper_name () << "_life, \\" << be_nl
+ << bt->fwd_helper_name () << "_cast \\" << be_nl
+ << node->max_size ()->ev ()->u.ulval << " \\" << be_uidt_nl
+ << ">" << be_uidt << be_uidt << be_uidt << be_uidt;
+ }
+
+ // Instantiate the _var and _out types only if we are not anonymous.
+ if (this->ctx_->tdef () != 0)
+ {
+ *os << be_nl << be_nl
+ << "# pragma instantiate \\" << be_idt << be_idt_nl
+ << "TAO_VarSeq_Var_T< \\" << be_idt << be_idt_nl
+ << node->name () << ", \\" << be_nl
+ << "TAO_Object_Manager< \\" << be_idt << be_idt_nl
+ << bt->name () << ", \\" << be_nl
+ << bt->name () << "_var, \\" << be_nl
+ << bt->fwd_helper_name () << "_life \\" << be_uidt_nl
+ << "> \\" << be_uidt << be_uidt_nl
+ << ">" << be_uidt << be_uidt << be_uidt;
+
+ *os << be_nl << be_nl
+ << "# pragma instantiate \\" << be_idt << be_idt_nl
+ << "TAO_Seq_Out_T< \\" << be_idt << be_idt_nl
+ << node->name () << ", \\" << be_nl
+ << node->name () << "_var, \\" << be_nl
+ << "TAO_Object_Manager< \\" << be_idt << be_idt_nl
+ << bt->name () << ", \\" << be_nl
+ << bt->name () << "_var, \\" << be_nl
+ << bt->fwd_helper_name () << "_life \\" << be_uidt_nl
+ << "> \\" << be_uidt << be_uidt_nl
+ << ">" << be_uidt << be_uidt;
+ }
break;
case be_sequence::MNG_ABSTRACT:
- {
- be_interface *elem = be_interface::narrow_from_decl (bt);
-
- if (node->unbounded ())
- {
- *os << be_nl << be_nl
- << "# pragma instantiate \\" << be_idt_nl
- << "TAO_Unbounded_Abstract_Sequence< \\" << be_idt << be_idt_nl
- << elem->name () << ", \\" << be_nl
- << elem->name () << "_var, \\" << be_nl
- << elem->fwd_helper_name () << "_life \\" << be_uidt_nl
- << ">" << be_uidt << be_uidt;
- }
- else
- {
- *os << be_nl << be_nl
- << "# pragma instantiate \\" << be_idt_nl
- << "TAO_Bounded_Abstract_Sequence< \\" << be_idt << be_idt_nl
- << elem->name () << ", \\" << be_nl
- << elem->name () << "_var, \\" << be_nl
- << elem->fwd_helper_name () << "_life, \\" << be_nl
- << node->max_size ()->ev ()->u.ulval << " \\" << be_uidt_nl
- << ">" << be_uidt << be_uidt;
- }
-
- // Instantiate the _var and _out types only if we are not anonymous.
- if (this->ctx_->tdef () != 0)
- {
- *os << be_nl << be_nl
- << "# pragma instantiate \\" << be_idt_nl
- << "TAO_VarSeq_Var_T< \\" << be_idt << be_idt_nl
- << node->name () << ", \\" << be_nl
- << "TAO_Abstract_Manager< \\" << be_idt << be_idt_nl
- << elem->name () << ", \\" << be_nl
- << elem->name () << "_var, \\" << be_nl
- << elem->fwd_helper_name () << "_life \\" << be_uidt_nl
- << "> \\" << be_uidt << be_uidt_nl
- << ">" << be_uidt << be_uidt;
-
- *os << be_nl << be_nl
- << "# pragma instantiate \\" << be_idt_nl
- << "TAO_Seq_Out_T< \\" << be_idt << be_idt_nl
- << node->name () << ", \\" << be_nl
- << node->name () << "_var, \\" << be_nl
- << "TAO_Abstract_Manager< \\" << be_idt << be_idt_nl
- << elem->name () << ", \\" << be_nl
- << elem->name () << "_var, \\" << be_nl
- << elem->fwd_helper_name () << "_life \\" << be_uidt_nl
- << "> \\" << be_uidt << be_uidt_nl
- << ">" << be_uidt << be_uidt;
- }
- }
+ if (node->unbounded ())
+ {
+ *os << be_nl << be_nl
+ << "# pragma instantiate \\" << be_idt_nl
+ << "TAO_Unbounded_Abstract_Sequence< \\" << be_idt << be_idt_nl
+ << bt->name () << ", \\" << be_nl
+ << bt->name () << "_var, \\" << be_nl
+ << bt->fwd_helper_name () << "_life \\" << be_uidt_nl
+ << ">" << be_uidt << be_uidt;
+ }
+ else
+ {
+ *os << be_nl << be_nl
+ << "# pragma instantiate \\" << be_idt_nl
+ << "TAO_Bounded_Abstract_Sequence< \\" << be_idt << be_idt_nl
+ << bt->name () << ", \\" << be_nl
+ << bt->name () << "_var, \\" << be_nl
+ << bt->fwd_helper_name () << "_life, \\" << be_nl
+ << node->max_size ()->ev ()->u.ulval << " \\" << be_uidt_nl
+ << ">" << be_uidt << be_uidt;
+ }
+
+ // Instantiate the _var and _out types only if we are not anonymous.
+ if (this->ctx_->tdef () != 0)
+ {
+ *os << be_nl << be_nl
+ << "# pragma instantiate \\" << be_idt_nl
+ << "TAO_VarSeq_Var_T< \\" << be_idt << be_idt_nl
+ << node->name () << ", \\" << be_nl
+ << "TAO_Abstract_Manager< \\" << be_idt << be_idt_nl
+ << bt->name () << ", \\" << be_nl
+ << bt->name () << "_var, \\" << be_nl
+ << bt->fwd_helper_name () << "_life \\" << be_uidt_nl
+ << "> \\" << be_uidt << be_uidt_nl
+ << ">" << be_uidt << be_uidt;
+
+ *os << be_nl << be_nl
+ << "# pragma instantiate \\" << be_idt_nl
+ << "TAO_Seq_Out_T< \\" << be_idt << be_idt_nl
+ << node->name () << ", \\" << be_nl
+ << node->name () << "_var, \\" << be_nl
+ << "TAO_Abstract_Manager< \\" << be_idt << be_idt_nl
+ << bt->name () << ", \\" << be_nl
+ << bt->name () << "_var, \\" << be_nl
+ << bt->fwd_helper_name () << "_life \\" << be_uidt_nl
+ << "> \\" << be_uidt << be_uidt_nl
+ << ">" << be_uidt << be_uidt;
+ }
break;
case be_sequence::MNG_PSEUDO:
if (node->unbounded ())
{
+ *os << be_nl << be_nl
+ << "# pragma instantiate \\" << be_idt_nl
+ << "TAO_Unbounded_Pseudo_Sequence< \\" << be_idt << be_idt_nl
+ << bt->name () << ", \\" << be_nl
+ << bt->name () << "_var \\" << be_uidt_nl
+ << ">" << be_uidt << be_uidt;
}
else
{
+ *os << be_nl << be_nl
+ << "# pragma instantiate \\" << be_idt_nl
+ << "TAO_Bounded_Pseudo_Sequence< \\" << be_idt << be_idt_nl
+ << bt->name () << ", \\" << be_nl
+ << bt->name () << "_var, \\" << be_nl
+ << node->max_size ()->ev ()->u.ulval << " \\" << be_uidt_nl
+ << ">" << be_uidt << be_uidt;
+ }
+
+ // Instantiate the _var and _out types only if we are not anonymous.
+ if (this->ctx_->tdef () != 0)
+ {
+ *os << be_nl << be_nl
+ << "# pragma instantiate \\" << be_idt_nl
+ << "TAO_VarSeq_Var_T< \\" << be_idt << be_idt_nl
+ << node->name () << ", \\" << be_nl
+ << "TAO_Pseudo_Object_Manager< \\" << be_idt << be_idt_nl
+ << bt->name () << ", \\" << be_nl
+ << bt->name () << "_var \\" << be_uidt_nl
+ << "> \\" << be_uidt << be_uidt_nl
+ << ">" << be_uidt << be_uidt;
+
+ *os << be_nl << be_nl
+ << "# pragma instantiate \\" << be_idt_nl
+ << "TAO_Seq_Out_T< \\" << be_idt << be_idt_nl
+ << node->name () << ", \\" << be_nl
+ << node->name () << "_var, \\" << be_nl
+ << "TAO_Pseudo_Object_Manager< \\" << be_idt << be_idt_nl
+ << bt->name () << ", \\" << be_nl
+ << bt->name () << "_var \\" << be_uidt_nl
+ << "> \\" << be_uidt << be_uidt_nl
+ << ">" << be_uidt << be_uidt;
}
break;
case be_sequence::MNG_VALUE:
- {
- be_interface *elem = be_interface::narrow_from_decl (bt);
-
- if (node->unbounded ())
- {
- *os << be_nl << be_nl
- << "# pragma instantiate \\" << be_idt_nl
- << "TAO_Unbounded_Valuetype_Sequence< \\" << be_idt << be_idt_nl
- << elem->name () << ", \\" << be_nl
- << elem->name () << "_var, \\" << be_nl
- << elem->fwd_helper_name () << "_life \\" << be_uidt_nl
- << ">" << be_uidt << be_uidt;
- }
- else
- {
- *os << be_nl << be_nl
- << "# pragma instantiate \\" << be_idt_nl
- << "TAO_Bounded_Valuetype_Sequence< \\" << be_idt << be_idt_nl
- << elem->name () << ", \\" << be_nl
- << elem->name () << "_var, \\" << be_nl
- << elem->fwd_helper_name () << "_life, \\" << be_nl
- << node->max_size ()->ev ()->u.ulval << " \\" << be_uidt_nl
- << ">" << be_uidt << be_uidt;
- }
-
- // Instantiate the _var and _out types only if we are not anonymous.
- if (this->ctx_->tdef () != 0)
- {
- *os << be_nl << be_nl
- << "# pragma instantiate \\" << be_idt_nl
- << "TAO_VarSeq_Var_T< \\" << be_idt << be_idt_nl
- << node->name () << ", \\" << be_nl
- << "TAO_Valuetype_Manager< \\" << be_idt << be_idt_nl
- << elem->name () << ", \\" << be_nl
- << elem->name () << "_var, \\" << be_nl
- << elem->fwd_helper_name () << "_life \\" << be_uidt_nl
- << "> \\" << be_uidt << be_uidt_nl
- << ">" << be_uidt << be_uidt;
-
- *os << be_nl << be_nl
- << "# pragma instantiate \\" << be_idt_nl
- << "TAO_Seq_Out_T< \\" << be_idt << be_idt_nl
- << node->name () << ", \\" << be_nl
- << node->name () << "_var, \\" << be_nl
- << "TAO_Valuetype_Manager< \\" << be_idt << be_idt_nl
- << elem->name () << ", \\" << be_nl
- << elem->name () << "_var, \\" << be_nl
- << elem->fwd_helper_name () << "_life \\" << be_uidt_nl
- << "> \\" << be_uidt << be_uidt_nl
- << ">" << be_uidt << be_uidt;
- }
- }
+ if (node->unbounded ())
+ {
+ *os << be_nl << be_nl
+ << "# pragma instantiate \\" << be_idt_nl
+ << "TAO_Unbounded_Valuetype_Sequence< \\" << be_idt << be_idt_nl
+ << bt->name () << ", \\" << be_nl
+ << bt->name () << "_var, \\" << be_nl
+ << bt->fwd_helper_name () << "_life \\" << be_uidt_nl
+ << ">" << be_uidt << be_uidt;
+ }
+ else
+ {
+ *os << be_nl << be_nl
+ << "# pragma instantiate \\" << be_idt_nl
+ << "TAO_Bounded_Valuetype_Sequence< \\" << be_idt << be_idt_nl
+ << bt->name () << ", \\" << be_nl
+ << bt->name () << "_var, \\" << be_nl
+ << bt->fwd_helper_name () << "_life, \\" << be_nl
+ << node->max_size ()->ev ()->u.ulval << " \\" << be_uidt_nl
+ << ">" << be_uidt << be_uidt;
+ }
+
+ // Instantiate the _var and _out types only if we are not anonymous.
+ if (this->ctx_->tdef () != 0)
+ {
+ *os << be_nl << be_nl
+ << "# pragma instantiate \\" << be_idt_nl
+ << "TAO_VarSeq_Var_T< \\" << be_idt << be_idt_nl
+ << node->name () << ", \\" << be_nl
+ << "TAO_Valuetype_Manager< \\" << be_idt << be_idt_nl
+ << bt->name () << ", \\" << be_nl
+ << bt->name () << "_var, \\" << be_nl
+ << bt->fwd_helper_name () << "_life \\" << be_uidt_nl
+ << "> \\" << be_uidt << be_uidt_nl
+ << ">" << be_uidt << be_uidt;
+
+ *os << be_nl << be_nl
+ << "# pragma instantiate \\" << be_idt_nl
+ << "TAO_Seq_Out_T< \\" << be_idt << be_idt_nl
+ << node->name () << ", \\" << be_nl
+ << node->name () << "_var, \\" << be_nl
+ << "TAO_Valuetype_Manager< \\" << be_idt << be_idt_nl
+ << bt->name () << ", \\" << be_nl
+ << bt->name () << "_var, \\" << be_nl
+ << bt->fwd_helper_name () << "_life \\" << be_uidt_nl
+ << "> \\" << be_uidt << be_uidt_nl
+ << ">" << be_uidt << be_uidt;
+ }
break;
case be_sequence::MNG_STRING:
- if (node->unbounded ())
+ if (! node->unbounded ())
{
+ *os << be_nl << be_nl
+ << "# pragma instantiate TAO_Bounded_String_Sequence< \\" << be_nl
+ << node->max_size ()->ev ()->u.ulval << ">";
}
- else
+
+ // Instantiate the _var and _out types only if we are not anonymous.
+ if (this->ctx_->tdef () != 0)
{
+ *os << be_nl << be_nl
+ << "# pragma instantiate \\" << be_idt_nl
+ << "TAO_VarSeq_Var_T< \\" << be_idt << be_idt_nl
+ << node->name () << ", \\" << be_nl
+ <<"TAO_SeqElem_String_Manager \\" << be_uidt_nl
+ << ">" << be_uidt << be_uidt;
+
+ *os << be_nl << be_nl
+ << "# pragma instantiate \\" << be_idt_nl
+ << "TAO_Seq_Out_T< \\" << be_idt << be_idt_nl
+ << node->name () << ", \\" << be_nl
+ << node->name () << "_var, \\" << be_nl
+ << "TAO_SeqElem_String_Manager \\" << be_uidt_nl
+ << ">" << be_uidt << be_uidt;
}
break;
case be_sequence::MNG_WSTRING:
- if (node->unbounded ())
+ if (! node->unbounded ())
{
+ *os << be_nl << be_nl
+ << "# pragma instantiate TAO_Bounded_WString_Sequence<"
+ << node->max_size ()->ev ()->u.ulval << ">";
}
- else
+
+ // Instantiate the _var and _out types only if we are not anonymous.
+ if (this->ctx_->tdef () != 0)
{
+ *os << be_nl << be_nl
+ << "# pragma instantiate \\" << be_idt_nl
+ << "TAO_VarSeq_Var_T< \\" << be_idt << be_idt_nl
+ << node->name () << ", \\" << be_nl
+ <<"TAO_SeqElem_WString_Manager \\" << be_uidt_nl
+ << ">" << be_uidt << be_uidt;
+
+ *os << be_nl << be_nl
+ << "# pragma instantiate \\" << be_idt_nl
+ << "TAO_Seq_Out_T< \\" << be_idt << be_idt_nl
+ << node->name () << ", \\" << be_nl
+ << node->name () << "_var, \\" << be_nl
+ << "TAO_SeqElem_WString_Manager \\" << be_uidt_nl
+ << ">" << be_uidt << be_uidt;
}
break;
diff --git a/TAO/TAO_IDL/fe/fe_init.cpp b/TAO/TAO_IDL/fe/fe_init.cpp
index c136d88690e..69b5cc2a121 100644
--- a/TAO/TAO_IDL/fe/fe_init.cpp
+++ b/TAO/TAO_IDL/fe/fe_init.cpp
@@ -496,7 +496,7 @@ fe_populate_global_scope (AST_Module *m)
UTL_ScopedName ValueBase_name (&ValueBase_id, 0);
pdt =
idl_global->gen ()->create_predefined_type (
- AST_PredefinedType::PT_pseudo,
+ AST_PredefinedType::PT_value,
&ValueBase_name
);
m->fe_add_predefined_type (pdt);
diff --git a/TAO/TAO_IDL/include/ast_predefined_type.h b/TAO/TAO_IDL/include/ast_predefined_type.h
index 72b604b69f2..f4ae1f75d20 100644
--- a/TAO/TAO_IDL/include/ast_predefined_type.h
+++ b/TAO/TAO_IDL/include/ast_predefined_type.h
@@ -92,6 +92,7 @@ public:
, PT_octet // Predefined type "octet"
, PT_any // Predefined type "CORBA::Any"
, PT_object // Predefined type "CORBA::Object"
+ , PT_value // Predefined type "CORBA::ValueBase"
, PT_void // Predefined type "void"
, PT_pseudo // Predefined type for pseudo objects
};
diff --git a/TAO/tao/Adapter.cpp b/TAO/tao/Adapter.cpp
index bb7a26db570..2e10412a4d3 100644
--- a/TAO/tao/Adapter.cpp
+++ b/TAO/tao/Adapter.cpp
@@ -2,10 +2,6 @@
#include "tao/Adapter.h"
-#include "tao/Object.h"
-#include "tao/Object_KeyC.h"
-#include "tao/ORB_Core.h"
-#include "tao/ORB.h"
#include "ace/Dynamic_Service.h"
#include "debug.h"
diff --git a/TAO/tao/Adapter.h b/TAO/tao/Adapter.h
index 6b1bdcc6571..da3e425f5ac 100644
--- a/TAO/tao/Adapter.h
+++ b/TAO/tao/Adapter.h
@@ -15,15 +15,14 @@
#define TAO_ADAPTER_H
#include "ace/pre.h"
-#include "tao/corbafwd.h"
-#include "tao/Exception.h"
-#include "tao/Object_KeyC.h"
-#include "ace/Service_Object.h"
+#include "tao/Object.h"
#if !defined (ACE_LACKS_PRAGMA_ONCE)
# pragma once
#endif /* ACE_LACKS_PRAGMA_ONCE */
+#include "ace/Service_Object.h"
+
#if defined(_MSC_VER)
#if (_MSC_VER >= 1200)
#pragma warning(push)
diff --git a/TAO/tao/Object.cpp b/TAO/tao/Object.cpp
index 2b7a2cf7a2b..304890b14df 100644
--- a/TAO/tao/Object.cpp
+++ b/TAO/tao/Object.cpp
@@ -68,6 +68,34 @@ CORBA::Object::Object (TAO_Stub * protocol_proxy,
}
}
+CORBA::Object_ptr
+CORBA::Object::_unchecked_narrow (CORBA::Object_ptr obj
+ ACE_ENV_ARG_DECL_NOT_USED)
+{
+ if (CORBA::is_nil (obj))
+ {
+ return CORBA::Object::_nil ();
+ }
+
+ if (obj->is_local_)
+ {
+ return
+ ACE_reinterpret_cast (
+ CORBA::Object_ptr,
+ obj->_tao_QueryInterface (
+ ACE_reinterpret_cast (
+ ptr_arith_t,
+ &CORBA::Object::_tao_class_id
+ )
+ )
+ );
+ }
+ else
+ {
+ return CORBA::Object::_duplicate (obj);
+ }
+}
+
void
CORBA::Object::_add_ref (void)
{
diff --git a/TAO/tao/Object.h b/TAO/tao/Object.h
index 5c5dc1ad498..17ef7f5ed67 100644
--- a/TAO/tao/Object.h
+++ b/TAO/tao/Object.h
@@ -21,26 +21,30 @@
#include "ace/pre.h"
-#include "tao/corbafwd.h"
+#include "tao/Policy_ForwardC.h"
#if !defined (ACE_LACKS_PRAGMA_ONCE)
# pragma once
#endif /* ACE_LACKS_PRAGMA_ONCE */
-#include "tao/Policy_ForwardC.h"
#include "tao/Object_KeyC.h"
+#include "tao/Pseudo_VarOut_T.h"
#include "ace/Synch.h"
class TAO_Stub;
class TAO_Abstract_ServantBase;
class TAO_Object_Proxy_Broker;
-class TAO_ObjectKey;
namespace CORBA
{
class InterfaceDef;
typedef InterfaceDef *InterfaceDef_ptr;
+ class Object;
+
+ typedef TAO_Pseudo_Var_T<Object> Object_var;
+ typedef TAO_Pseudo_Out_T<Object, Object_var> Object_out;
+
/**
* @class Object
*
@@ -304,77 +308,6 @@ namespace CORBA
TAO_SYNCH_MUTEX * refcount_lock_;
};
-
- /**
- * @class Object_var
- *
- * @brief Object_var
- *
- * Object_var.
- */
- class TAO_Export Object_var : private TAO_Base_var
- {
- public:
- Object_var (void); // default constructor
- Object_var (CORBA::Object_ptr);
- Object_var (const Object_var &); // copy constructor
- ~Object_var (void); // destructor
-
- Object_var &operator= (CORBA::Object_ptr);
- Object_var &operator= (const Object_var &);
- CORBA::Object_ptr operator-> (void) const;
-
- /// in, inout, out, _retn
- operator const CORBA::Object_ptr &() const;
- operator CORBA::Object_ptr &();
- CORBA::Object_ptr in (void) const;
- CORBA::Object_ptr &inout (void);
- CORBA::Object_ptr &out (void);
- CORBA::Object_ptr _retn (void);
- CORBA::Object_ptr ptr (void) const;
-
- static CORBA::Object_ptr tao_duplicate (CORBA::Object_ptr);
- static void tao_release (CORBA::Object_ptr);
- static CORBA::Object_ptr tao_nil (void);
- static CORBA::Object_ptr tao_narrow (CORBA::Object *
- ACE_ENV_ARG_DECL);
- static CORBA::Object * tao_upcast (void *);
-
- private:
-
- // Unimplemented - Prevent widening assignment.
- Object_var (const TAO_Base_var &rhs);
- Object_var &operator= (const TAO_Base_var &rhs);
-
- private:
-
- CORBA::Object_ptr ptr_;
-
- };
-
- /**
- * @class Object_out
- *
- * @brief Object_out
- *
- * Object_out
- */
- class TAO_Export Object_out
- {
- public:
- Object_out (CORBA::Object_ptr &);
- Object_out (Object_var &);
- Object_out (const Object_out &);
- Object_out &operator= (const Object_out &);
- Object_out &operator= (const Object_var &);
- Object_out &operator= (CORBA::Object_ptr);
- operator CORBA::Object_ptr &();
- CORBA::Object_ptr &ptr (void);
- CORBA::Object_ptr operator-> (void);
-
- private:
- CORBA::Object_ptr &ptr_;
- };
} // End CORBA namespace.
/// This function pointer is set only when the Portable server
diff --git a/TAO/tao/Object.i b/TAO/tao/Object.i
index 72ca365f31a..8a4b777483c 100644
--- a/TAO/tao/Object.i
+++ b/TAO/tao/Object.i
@@ -16,25 +16,33 @@ CORBA::Object::Object (int)
{
}
-ACE_INLINE CORBA::Object_ptr
+ACE_INLINE
+CORBA::Object_ptr
CORBA::Object::_duplicate (CORBA::Object_ptr obj)
{
if (obj)
- obj->_add_ref ();
+ {
+ obj->_add_ref ();
+ }
+
return obj;
}
// ************************************************************
// These are in CORBA namespace
-ACE_INLINE void
+ACE_INLINE
+void
CORBA::release (CORBA::Object_ptr obj)
{
if (obj)
- obj->_remove_ref ();
+ {
+ obj->_remove_ref ();
+ }
}
-ACE_INLINE CORBA::Boolean
+ACE_INLINE
+CORBA::Boolean
CORBA::is_nil (CORBA::Object_ptr obj)
{
if (obj == 0)
@@ -49,30 +57,15 @@ CORBA::is_nil (CORBA::Object_ptr obj)
// Null pointers represent nil objects.
-ACE_INLINE CORBA::Object_ptr
+ACE_INLINE
+CORBA::Object_ptr
CORBA::Object::_nil (void)
{
return 0;
}
-ACE_INLINE CORBA::Object_ptr
-CORBA::Object::_unchecked_narrow (CORBA::Object_ptr obj
- ACE_ENV_ARG_DECL_NOT_USED)
-{
- if (CORBA::is_nil (obj))
- return CORBA::Object::_nil ();
-
- if (obj->is_local_)
- return
- ACE_reinterpret_cast (CORBA::Object_ptr,
- obj->_tao_QueryInterface
- (ACE_reinterpret_cast (ptr_arith_t,
- &CORBA::Object::_tao_class_id)));
- else
- return CORBA::Object::_duplicate (obj);
-}
-
-ACE_INLINE CORBA::Object_ptr
+ACE_INLINE
+CORBA::Object_ptr
CORBA::Object::_narrow (CORBA::Object_ptr obj
ACE_ENV_ARG_DECL)
{
@@ -80,214 +73,17 @@ CORBA::Object::_narrow (CORBA::Object_ptr obj
ACE_ENV_ARG_PARAMETER);
}
-ACE_INLINE TAO_Stub *
+ACE_INLINE
+TAO_Stub *
CORBA::Object::_stubobj (void) const
{
return this->protocol_proxy_;
}
-ACE_INLINE CORBA::Boolean
+ACE_INLINE
+CORBA::Boolean
CORBA::Object::marshal (TAO_OutputCDR &cdr)
{
return (cdr << this);
}
-// *************************************************************
-// Inline operations for class CORBA::Object_var
-// *************************************************************
-
-ACE_INLINE
-CORBA::Object_var::Object_var (void)
- : ptr_ (CORBA::Object::_nil ())
-{
-}
-
-ACE_INLINE
-CORBA::Object_var::Object_var (CORBA::Object_ptr p)
- : ptr_ (p)
-{
-}
-
-ACE_INLINE
-CORBA::Object_var::~Object_var (void)
-{
- CORBA::release (this->ptr_);
-}
-
-ACE_INLINE CORBA::Object_ptr
-CORBA::Object_var::ptr (void) const
-{
- return this->ptr_;
-}
-
-ACE_INLINE
-CORBA::Object_var::Object_var (const CORBA::Object_var &p)
- : TAO_Base_var (),
- ptr_ (CORBA::Object::_duplicate (p.ptr ()))
-{
-}
-
-ACE_INLINE CORBA::Object_var &
-CORBA::Object_var::operator= (CORBA::Object_ptr p)
-{
- CORBA::release (this->ptr_);
- this->ptr_ = p;
- return *this;
-}
-
-ACE_INLINE CORBA::Object_var &
-CORBA::Object_var::operator= (const CORBA::Object_var &p)
-{
- if (this != &p)
- {
- CORBA::release (this->ptr_);
- this->ptr_ = CORBA::Object::_duplicate (p.ptr ());
- }
- return *this;
-}
-
-ACE_INLINE
-CORBA::Object_var::operator const CORBA::Object_ptr &() const // cast
-{
- return this->ptr_;
-}
-
-ACE_INLINE
-CORBA::Object_var::operator CORBA::Object_ptr &() // cast
-{
- return this->ptr_;
-}
-
-ACE_INLINE CORBA::Object_ptr
-CORBA::Object_var::operator-> (void) const
-{
- return this->ptr_;
-}
-
-ACE_INLINE CORBA::Object_ptr
-CORBA::Object_var::in (void) const
-{
- return this->ptr_;
-}
-
-ACE_INLINE CORBA::Object_ptr &
-CORBA::Object_var::inout (void)
-{
- return this->ptr_;
-}
-
-ACE_INLINE CORBA::Object_ptr &
-CORBA::Object_var::out (void)
-{
- CORBA::release (this->ptr_);
- this->ptr_ = CORBA::Object::_nil ();
- return this->ptr_;
-}
-
-ACE_INLINE CORBA::Object_ptr
-CORBA::Object_var::_retn (void)
-{
- // yield ownership of managed obj reference
- CORBA::Object_ptr val = this->ptr_;
- this->ptr_ = CORBA::Object::_nil ();
- return val;
-}
-
-ACE_INLINE CORBA::Object_ptr
-CORBA::Object_var::tao_duplicate (CORBA::Object_ptr p)
-{
- return CORBA::Object::_duplicate (p);
-}
-
-ACE_INLINE void
-CORBA::Object_var::tao_release (CORBA::Object_ptr p)
-{
- CORBA::release (p);
-}
-
-ACE_INLINE CORBA::Object_ptr
-CORBA::Object_var::tao_nil (void)
-{
- return CORBA::Object::_nil ();
-}
-
-ACE_INLINE CORBA::Object_ptr
-CORBA::Object_var::tao_narrow (
- CORBA::Object *p
- ACE_ENV_ARG_DECL_NOT_USED
- )
-{
- return CORBA::Object::_duplicate (p);
-}
-
-ACE_INLINE CORBA::Object *
-CORBA::Object_var::tao_upcast (void *src)
-{
- CORBA::Object **tmp =
- ACE_static_cast (CORBA::Object **, src);
- return *tmp;
-}
-
-// *************************************************************
-// Inline operations for class CORBA::Object_out
-// *************************************************************
-
-ACE_INLINE
-CORBA::Object_out::Object_out (CORBA::Object_ptr &p)
- : ptr_ (p)
-{
- this->ptr_ = CORBA::Object::_nil ();
-}
-
-ACE_INLINE
-CORBA::Object_out::Object_out (CORBA::Object_var &p)
- : ptr_ (p.out ())
-{
- CORBA::release (this->ptr_);
- this->ptr_ = CORBA::Object::_nil ();
-}
-
-ACE_INLINE
-CORBA::Object_out::Object_out (const CORBA::Object_out &p)
- : ptr_ (p.ptr_)
-{
-}
-
-ACE_INLINE CORBA::Object_out &
-CORBA::Object_out::operator= (const CORBA::Object_out &p)
-{
- this->ptr_ = p.ptr_;
- return *this;
-}
-
-ACE_INLINE CORBA::Object_out &
-CORBA::Object_out::operator= (const CORBA::Object_var &p)
-{
- this->ptr_ = CORBA::Object::_duplicate (p.ptr ());
- return *this;
-}
-
-ACE_INLINE CORBA::Object_out &
-CORBA::Object_out::operator= (CORBA::Object_ptr p)
-{
- this->ptr_ = p;
- return *this;
-}
-
-ACE_INLINE
-CORBA::Object_out::operator CORBA::Object_ptr &() // cast
-{
- return this->ptr_;
-}
-
-ACE_INLINE CORBA::Object_ptr &
-CORBA::Object_out::ptr (void) // ptr
-{
- return this->ptr_;
-}
-
-ACE_INLINE CORBA::Object_ptr
-CORBA::Object_out::operator-> (void)
-{
- return this->ptr_;
-}
diff --git a/TAO/tao/Objref_VarOut_T.h b/TAO/tao/Objref_VarOut_T.h
index f62c7d79f59..26885a3ffc3 100644
--- a/TAO/tao/Objref_VarOut_T.h
+++ b/TAO/tao/Objref_VarOut_T.h
@@ -98,6 +98,10 @@ private:
T *& ptr_;
};
+#if defined (__ACE_INLINE__)
+#include "tao/Objref_Varout_T.inl"
+#endif /* __ACE_INLINE__ */
+
#if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
#include "tao/Objref_Varout_T.cpp"
#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */
diff --git a/TAO/tao/Objref_VarOut_T.inl b/TAO/tao/Objref_VarOut_T.inl
new file mode 100644
index 00000000000..74e88caa0c5
--- /dev/null
+++ b/TAO/tao/Objref_VarOut_T.inl
@@ -0,0 +1,2 @@
+// $Id$
+
diff --git a/TAO/tao/Pseudo_VarOut_T.cpp b/TAO/tao/Pseudo_VarOut_T.cpp
new file mode 100644
index 00000000000..ee893f6b7be
--- /dev/null
+++ b/TAO/tao/Pseudo_VarOut_T.cpp
@@ -0,0 +1,16 @@
+// $Id$
+
+#ifndef TAO_PSEUDO_VAROUT_T_C
+#define TAO_PSEUDO_VAROUT_T_C
+
+#include "tao/Pseudo_VarOut_T.h"
+
+#if !defined (__ACE_INLINE__)
+#include "tao/Pseudo_VarOut_T.inl"
+#endif /* __ACE_INLINE__ */
+
+ACE_RCSID (tao,
+ Pseudo_VarOut_T,
+ "$Id$")
+
+#endif /* TAO_PSEUDO_VAROUT_T_C */
diff --git a/TAO/tao/Pseudo_VarOut_T.h b/TAO/tao/Pseudo_VarOut_T.h
new file mode 100644
index 00000000000..57155a85f6c
--- /dev/null
+++ b/TAO/tao/Pseudo_VarOut_T.h
@@ -0,0 +1,105 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file Pseudo_VarOut_T.h
+ *
+ * $Id$
+ *
+ * @author Jeff Parsons
+ */
+//=============================================================================
+
+
+#ifndef TAO_PSEUDO_VAROUT_T_H
+#define TAO_PSEUDO_VAROUT_T_H
+
+#include "ace/pre.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+/**
+ * @class TAO_Pseudo_Var_T
+ *
+ * @brief Parametrized implementation of _var class for
+ * CORBA::TypeCode and CORBA::Object.
+ *
+ */
+template <typename T>
+class TAO_Pseudo_Var_T
+{
+public:
+ TAO_Pseudo_Var_T (void);
+ TAO_Pseudo_Var_T (T *);
+ TAO_Pseudo_Var_T (const TAO_Pseudo_Var_T<T> &);
+
+ ~TAO_Pseudo_Var_T (void);
+
+ TAO_Pseudo_Var_T<T> & operator= (T *);
+ TAO_Pseudo_Var_T<T> & operator= (const TAO_Pseudo_Var_T<T> &);
+
+ T * operator-> (void) const;
+
+ operator const T *& () const;
+ operator T *& ();
+
+ T * in (void) const;
+ T *& inout (void);
+ T *& out (void);
+ T * _retn (void);
+
+ // TAO extension.
+ T * ptr (void) const;
+
+private:
+ T * ptr_;
+};
+
+/**
+ * @class TAO_Pseudo_Out_T
+ *
+ * @brief Parametrized implementation of _out class for
+ * CORBA::TypeCode and CORBA::Object.
+ *
+ */
+template <typename T, typename T_var>
+class TAO_Pseudo_Out_T
+{
+public:
+ TAO_Pseudo_Out_T (T *&);
+ TAO_Pseudo_Out_T (T_var &);
+ TAO_Pseudo_Out_T (const TAO_Pseudo_Out_T<T,T_var> &);
+
+ TAO_Pseudo_Out_T<T,T_var> & operator= (const TAO_Pseudo_Out_T<T,T_var> &);
+ TAO_Pseudo_Out_T<T,T_var> & operator= (T *);
+
+ operator T *& ();
+
+ T *& ptr (void);
+
+ T * operator-> (void);
+
+private:
+ T *& ptr_;
+
+ /// Assignment from _var not allowed.
+ TAO_Pseudo_Out_T<T,T_var> & operator= (const T_var &);
+};
+
+#if defined (__ACE_INLINE__)
+#include "tao/Pseudo_VarOut_T.inl"
+#endif /* __ACE_INLINE__ */
+
+#if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
+#include "tao/Pseudo_VarOut_T.cpp"
+#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */
+
+#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)
+#pragma implementation ("Pseudo_VarOut_T.cpp")
+#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */
+
+#include "ace/post.h"
+
+#endif /* TAO_PSEUDO_VAROUT_T_H */
diff --git a/TAO/tao/Pseudo_VarOut_T.inl b/TAO/tao/Pseudo_VarOut_T.inl
new file mode 100644
index 00000000000..bcbd4e8b4dd
--- /dev/null
+++ b/TAO/tao/Pseudo_VarOut_T.inl
@@ -0,0 +1,184 @@
+// $Id$
+
+template <typename T>
+ACE_INLINE
+TAO_Pseudo_Var_T<T>::TAO_Pseudo_Var_T (void)
+ : ptr_ (T::_nil ())
+{}
+
+template <typename T>
+ACE_INLINE
+TAO_Pseudo_Var_T<T>::TAO_Pseudo_Var_T (T * p)
+ : ptr_ (p)
+{}
+
+template <typename T>
+ACE_INLINE
+TAO_Pseudo_Var_T<T>::TAO_Pseudo_Var_T (const TAO_Pseudo_Var_T<T> & p)
+ : ptr_ (T::_duplicate (p.ptr ()))
+{}
+
+template <typename T>
+ACE_INLINE
+TAO_Pseudo_Var_T<T>::~TAO_Pseudo_Var_T (void)
+{
+ CORBA::release (this->ptr_);
+}
+
+template <typename T>
+ACE_INLINE
+TAO_Pseudo_Var_T<T> &
+TAO_Pseudo_Var_T<T>::operator= (T * p)
+{
+ CORBA::release (this->ptr_);
+ this->ptr_ = p;
+ return *this;
+}
+
+template <typename T>
+ACE_INLINE
+TAO_Pseudo_Var_T<T> &
+TAO_Pseudo_Var_T<T>::operator= (const TAO_Pseudo_Var_T<T> & p)
+{
+ if (this != &p)
+ {
+ CORBA::release (this->ptr_);
+ this->ptr_ = T::_duplicate (p.ptr ());
+ }
+
+ return *this;
+}
+
+template <typename T>
+ACE_INLINE
+TAO_Pseudo_Var_T<T>::operator const T *& () const
+{
+ return this->ptr_;
+}
+
+template <typename T>
+ACE_INLINE
+TAO_Pseudo_Var_T<T>::operator T *& ()
+{
+ return this->ptr_;
+}
+
+template <typename T>
+ACE_INLINE
+T *
+TAO_Pseudo_Var_T<T>::operator-> (void) const
+{
+ return this->ptr_;
+}
+
+template <typename T>
+ACE_INLINE
+T *
+TAO_Pseudo_Var_T<T>::in (void) const
+{
+ return this->ptr_;
+}
+
+template <typename T>
+ACE_INLINE
+T *&
+TAO_Pseudo_Var_T<T>::inout (void)
+{
+ return this->ptr_;
+}
+
+template <typename T>
+ACE_INLINE
+T *&
+TAO_Pseudo_Var_T<T>::out (void)
+{
+ CORBA::release (this->ptr_);
+ this->ptr_ = T::_nil ();
+ return this->ptr_;
+}
+
+template <typename T>
+ACE_INLINE
+T *
+TAO_Pseudo_Var_T<T>::_retn (void)
+{
+ T * val = this->ptr_;
+ this->ptr_ = T::_nil ();
+ return val;
+}
+
+template <typename T>
+ACE_INLINE
+T *
+TAO_Pseudo_Var_T<T>::ptr (void) const
+{
+ return this->ptr_;
+}
+
+// *************************************************************
+
+template <typename T, typename T_var>
+ACE_INLINE
+TAO_Pseudo_Out_T<T,T_var>::TAO_Pseudo_Out_T (T *& p)
+ : ptr_ (p)
+{
+ this->ptr_ = T::_nil ();
+}
+
+template <typename T, typename T_var>
+ACE_INLINE
+TAO_Pseudo_Out_T<T,T_var>::TAO_Pseudo_Out_T (T_var & p)
+ : ptr_ (p.out ())
+{
+ CORBA::release (this->ptr_);
+ this->ptr_ = T::_nil ();
+}
+
+template <typename T, typename T_var>
+ACE_INLINE
+TAO_Pseudo_Out_T<T,T_var>::TAO_Pseudo_Out_T (
+ const TAO_Pseudo_Out_T<T,T_var> & p
+ )
+ : ptr_ (p.ptr_)
+{}
+
+template <typename T, typename T_var>
+ACE_INLINE
+TAO_Pseudo_Out_T<T,T_var> &
+TAO_Pseudo_Out_T<T,T_var>::operator= (const TAO_Pseudo_Out_T<T,T_var> & p)
+{
+ this->ptr_ = p.ptr_;
+ return *this;
+}
+
+template <typename T, typename T_var>
+ACE_INLINE
+TAO_Pseudo_Out_T<T,T_var> &
+TAO_Pseudo_Out_T<T,T_var>::operator= (T * p)
+{
+ this->ptr_ = p;
+ return *this;
+}
+
+template <typename T, typename T_var>
+ACE_INLINE
+TAO_Pseudo_Out_T<T,T_var>::operator T *& ()
+{
+ return this->ptr_;
+}
+
+template <typename T, typename T_var>
+ACE_INLINE
+T *&
+TAO_Pseudo_Out_T<T,T_var>::ptr (void)
+{
+ return this->ptr_;
+}
+
+template <typename T, typename T_var>
+ACE_INLINE
+T *
+TAO_Pseudo_Out_T<T,T_var>::operator-> (void)
+{
+ return this->ptr_;
+}
diff --git a/TAO/tao/Sequence.cpp b/TAO/tao/Sequence.cpp
index 838485381f1..face7619d39 100644
--- a/TAO/tao/Sequence.cpp
+++ b/TAO/tao/Sequence.cpp
@@ -203,6 +203,17 @@ TAO_Unbounded_String_Sequence::freebuf (char* *buffer)
delete [] buffer;
}
+void
+TAO_Unbounded_String_Sequence::_tao_any_destructor (
+ void * _tao_void_pointer
+ )
+{
+ TAO_Unbounded_String_Sequence * tmp =
+ ACE_static_cast (TAO_Unbounded_String_Sequence *,
+ _tao_void_pointer);
+ delete tmp;
+}
+
char**
TAO_Unbounded_String_Sequence::get_buffer (CORBA::Boolean orphan)
{
@@ -493,6 +504,17 @@ TAO_Unbounded_WString_Sequence::freebuf (CORBA::WChar* *buffer)
delete [] buffer;
}
+void
+TAO_Unbounded_WString_Sequence::_tao_any_destructor (
+ void * _tao_void_pointer
+ )
+{
+ TAO_Unbounded_WString_Sequence * tmp =
+ ACE_static_cast (TAO_Unbounded_WString_Sequence *,
+ _tao_void_pointer);
+ delete tmp;
+}
+
CORBA::WChar**
TAO_Unbounded_WString_Sequence::get_buffer (CORBA::Boolean orphan)
{
@@ -541,11 +563,11 @@ TAO_Unbounded_WString_Sequence::get_buffer (void) const
void
TAO_Unbounded_WString_Sequence::_allocate_buffer (CORBA::ULong length)
{
- CORBA::WChar* *tmp = TAO_Unbounded_WString_Sequence::allocbuf (length);
+ CORBA::WChar ** tmp = TAO_Unbounded_WString_Sequence::allocbuf (length);
if (this->buffer_ != 0)
{
- CORBA::WChar* *old = ACE_reinterpret_cast (CORBA::WChar **,
+ CORBA::WChar ** old = ACE_reinterpret_cast (CORBA::WChar **,
this->buffer_);
for (CORBA::ULong i = 0; i < this->length_; ++i)
diff --git a/TAO/tao/Sequence.h b/TAO/tao/Sequence.h
index fc30aa91375..b08f330293b 100644
--- a/TAO/tao/Sequence.h
+++ b/TAO/tao/Sequence.h
@@ -286,7 +286,7 @@ public:
*/
TAO_Unbounded_String_Sequence (CORBA::ULong maximum,
CORBA::ULong length,
- char* *data,
+ char ** data,
CORBA::Boolean release = 0);
/**
@@ -325,7 +325,7 @@ public:
* reallocation is performed. After reallocation, the release flag
* is always set to TRUE.
*/
- TAO_Unbounded_String_Sequence &operator= (
+ TAO_Unbounded_String_Sequence & operator= (
const TAO_Unbounded_String_Sequence &
);
@@ -343,7 +343,7 @@ public:
* reason cannot allocate the requested vector. Vectors allocated by
* allocbuf should be freed using the freebuf function.
*/
- static char* *allocbuf (CORBA::ULong);
+ static char ** allocbuf (CORBA::ULong);
/**
* The freebuf function ensures that the destructor for each element
@@ -354,9 +354,11 @@ public:
*/
static void freebuf (char **);
+ static void _tao_any_destructor (void *);
+
// = Fast buffer accessors.
- char **get_buffer (CORBA::Boolean orphan = 0);
- const char **get_buffer (void) const;
+ char ** get_buffer (CORBA::Boolean orphan = 0);
+ const char ** get_buffer (void) const;
// Functions to create, destroy, and adjust the underlying buffer.
virtual void _allocate_buffer (CORBA::ULong length);
@@ -367,7 +369,7 @@ public:
// Parameters work the same as in constructor of the same signature.
void replace (CORBA::ULong maximum,
CORBA::ULong length,
- char* *data,
+ char ** data,
CORBA::Boolean release = 0);
};
@@ -432,7 +434,7 @@ public:
*/
TAO_Unbounded_WString_Sequence (CORBA::ULong maximum,
CORBA::ULong length,
- CORBA::WChar* *data,
+ CORBA::WChar ** data,
CORBA::Boolean release = 0);
/**
@@ -446,7 +448,7 @@ public:
* elements (items zero through length-1), and sets the release
* flag to TRUE.
*/
- TAO_Unbounded_WString_Sequence (const TAO_Unbounded_WString_Sequence&);
+ TAO_Unbounded_WString_Sequence (const TAO_Unbounded_WString_Sequence &);
/// The destructor releases all object reference members and frees
/// all string members.
@@ -471,7 +473,7 @@ public:
* reallocation is performed. After reallocation, the release flag
* is always set to TRUE.
*/
- TAO_Unbounded_WString_Sequence &operator= (
+ TAO_Unbounded_WString_Sequence & operator= (
const TAO_Unbounded_WString_Sequence &
);
@@ -489,7 +491,7 @@ public:
* reason cannot allocate the requested vector. Vectors allocated by
* allocbuf should be freed using the freebuf function.
*/
- static CORBA::WChar* *allocbuf (CORBA::ULong);
+ static CORBA::WChar ** allocbuf (CORBA::ULong);
/**
* The freebuf function ensures that the destructor for each element
@@ -500,9 +502,11 @@ public:
*/
static void freebuf (CORBA::WChar **);
+ static void _tao_any_destructor (void *);
+
// = Fast buffer accessors.
- CORBA::WChar **get_buffer (CORBA::Boolean orphan = 0);
- const CORBA::WChar **get_buffer (void) const;
+ CORBA::WChar ** get_buffer (CORBA::Boolean orphan = 0);
+ const CORBA::WChar ** get_buffer (void) const;
// Functions to create, destroy, and adjust the underlying buffer.
virtual void _allocate_buffer (CORBA::ULong length);
@@ -513,7 +517,7 @@ public:
// Parameters work the same as in constructor of the same signature.
void replace (CORBA::ULong maximum,
CORBA::ULong length,
- CORBA::WChar* *data,
+ CORBA::WChar ** data,
CORBA::Boolean release = 0);
};
diff --git a/TAO/tao/Sequence_T.cpp b/TAO/tao/Sequence_T.cpp
index d38b2ff5b85..7369859a9b4 100644
--- a/TAO/tao/Sequence_T.cpp
+++ b/TAO/tao/Sequence_T.cpp
@@ -101,9 +101,9 @@ TAO_Unbounded_Sequence<T>::_tao_any_destructor (
void * _tao_void_pointer
)
{
- typedef TAO_Unbounded_Sequence<T> THIS_SEQ_TYPE;
- THIS_SEQ_TYPE *tmp = ACE_static_cast (THIS_SEQ_TYPE *,
- _tao_void_pointer);
+ TAO_Unbounded_Sequence<T> * tmp =
+ ACE_static_cast (TAO_Unbounded_Sequence<T> *,
+ _tao_void_pointer);
delete tmp;
}
@@ -320,8 +320,8 @@ TAO_Bounded_Sequence<T, MAX>::_tao_any_destructor (
)
{
typedef TAO_Bounded_Sequence<T, MAX> THIS_SEQ_TYPE;
- THIS_SEQ_TYPE *tmp = ACE_static_cast (THIS_SEQ_TYPE *,
- _tao_void_pointer);
+ THIS_SEQ_TYPE * tmp = ACE_static_cast (THIS_SEQ_TYPE *,
+ _tao_void_pointer);
delete tmp;
}
@@ -500,10 +500,10 @@ TAO_Object_Manager<T,T_var,T_life>::_retn (void)
// class TAO_Pseudo_Object_Manager
// *************************************************************
-template <typename T, typename T_var>
+template <typename T, typename T_var>
TAO_Pseudo_Object_Manager<T,T_var> &
TAO_Pseudo_Object_Manager<T,T_var>::operator= (
- const TAO_Pseudo_Object_Manager<T,T_var> & hs
+ const TAO_Pseudo_Object_Manager<T,T_var> & rhs
)
{
if (this == &rhs)
@@ -524,7 +524,7 @@ TAO_Pseudo_Object_Manager<T,T_var>::operator= (
return *this;
}
-template <typename T, typename T_var>
+template <typename T, typename T_var>
TAO_Pseudo_Object_Manager<T,T_var> &
TAO_Pseudo_Object_Manager<T,T_var>::operator= (T * p)
{
@@ -547,7 +547,7 @@ TAO_Pseudo_Object_Manager<T,T_var>::operator= (T * p)
template <typename T, typename T_var>
TAO_Pseudo_Object_Manager<T,T_var> &
-TAO_Pseudo_Object_Manager<T,T_var>::operator=(const T_var & p)
+TAO_Pseudo_Object_Manager<T,T_var>::operator= (const T_var & p)
{
if (this->release_)
{
@@ -825,8 +825,8 @@ operator= (const TAO_Unbounded_Object_Sequence<T,T_var,T_life,T_cast> &rhs)
if (this->release_)
{
- T **tmp = ACE_reinterpret_cast (T **,
- this->buffer_);
+ T ** tmp = ACE_reinterpret_cast (T **,
+ this->buffer_);
for (CORBA::ULong i = 0; i < this->length_; ++i)
{
@@ -921,8 +921,8 @@ TAO_Unbounded_Object_Sequence<T,T_var,T_life,T_cast>::_tao_any_destructor (
)
{
typedef TAO_Unbounded_Object_Sequence<T,T_var,T_life,T_cast> THIS_SEQ_TYPE;
- THIS_SEQ_TYPE *tmp = ACE_static_cast (THIS_SEQ_TYPE *,
- _tao_void_pointer);
+ THIS_SEQ_TYPE * tmp = ACE_static_cast (THIS_SEQ_TYPE *,
+ _tao_void_pointer);
delete tmp;
}
@@ -1197,8 +1197,8 @@ TAO_Bounded_Object_Sequence<T,T_var,T_life,T_cast,MAX>::_tao_any_destructor (
)
{
typedef TAO_Bounded_Object_Sequence<T,T_var,T_life,T_cast,MAX> THIS_SEQ_TYPE;
- THIS_SEQ_TYPE *tmp = ACE_static_cast (THIS_SEQ_TYPE *,
- _tao_void_pointer);
+ THIS_SEQ_TYPE * tmp = ACE_static_cast (THIS_SEQ_TYPE *,
+ _tao_void_pointer);
delete tmp;
}
@@ -1297,10 +1297,10 @@ TAO_Bounded_Object_Sequence<T,T_var,T_life,T_cast,MAX>::_upcast (
// Operations for class TAO_Unbounded_Pseudo_Sequence
// *************************************************************
-// Constructor for unbounded sequence.
template <typename T, typename T_var>
-TAO_Unbounded_Pseudo_Sequence<T,T_var>::
-TAO_Unbounded_Pseudo_Sequence (CORBA::ULong maximum)
+TAO_Unbounded_Pseudo_Sequence<T,T_var>::TAO_Unbounded_Pseudo_Sequence (
+ CORBA::ULong maximum
+ )
: TAO_Unbounded_Base_Sequence (
maximum,
TAO_Unbounded_Pseudo_Sequence<T,T_var>::allocbuf (maximum)
@@ -1336,17 +1336,17 @@ TAO_Unbounded_Pseudo_Sequence<T,T_var>::TAO_Unbounded_Pseudo_Sequence (
}
}
-template<typename T, typename T_var>
+template <typename T, typename T_var>
TAO_Unbounded_Pseudo_Sequence<T,T_var>::~TAO_Unbounded_Pseudo_Sequence (void)
{
this->_deallocate_buffer ();
}
-// assignment operator
-template <typename T, typename T_var>
+template <typename T, typename T_var>
TAO_Unbounded_Pseudo_Sequence<T,T_var> &
-TAO_Unbounded_Pseudo_Sequence<T,T_var>::
-operator= (const TAO_Unbounded_Pseudo_Sequence<T,T_var> &rhs)
+TAO_Unbounded_Pseudo_Sequence<T,T_var>::operator= (
+ const TAO_Unbounded_Pseudo_Sequence<T,T_var> & rhs
+ )
{
if (this == &rhs)
{
@@ -1355,8 +1355,8 @@ operator= (const TAO_Unbounded_Pseudo_Sequence<T,T_var> &rhs)
if (this->release_)
{
- T **tmp = ACE_reinterpret_cast (T **,
- this->buffer_);
+ T ** tmp = ACE_reinterpret_cast (T **,
+ this->buffer_);
for (CORBA::ULong i = 0; i < this->length_; ++i)
{
@@ -1399,7 +1399,7 @@ operator= (const TAO_Unbounded_Pseudo_Sequence<T,T_var> &rhs)
return *this;
}
-template <typename T, typename T_var>
+template <typename T, typename T_var>
T **
TAO_Unbounded_Pseudo_Sequence<T,T_var>::allocbuf (CORBA::ULong nelems)
{
@@ -1416,7 +1416,7 @@ TAO_Unbounded_Pseudo_Sequence<T,T_var>::allocbuf (CORBA::ULong nelems)
return buf;
}
-template <typename T, typename T_var>
+template <typename T, typename T_var>
void
TAO_Unbounded_Pseudo_Sequence<T,T_var>::freebuf (T ** buffer)
{
@@ -1442,6 +1442,18 @@ TAO_Unbounded_Pseudo_Sequence<T,T_var>::freebuf (T ** buffer)
template<typename T, typename T_var>
void
+TAO_Unbounded_Pseudo_Sequence<T,T_var>::_tao_any_destructor (
+ void * _tao_void_pointer
+ )
+{
+ typedef TAO_Unbounded_Pseudo_Sequence<T,T_var> THIS_SEQ_TYPE;
+ THIS_SEQ_TYPE * tmp = ACE_static_cast (THIS_SEQ_TYPE *,
+ _tao_void_pointer);
+ delete tmp;
+}
+
+template <typename T, typename T_var>
+void
TAO_Unbounded_Pseudo_Sequence<T,T_var>::_allocate_buffer (CORBA::ULong length)
{
T ** tmp = TAO_Unbounded_Pseudo_Sequence<T,T_var>::allocbuf (length);
@@ -1475,7 +1487,8 @@ TAO_Unbounded_Pseudo_Sequence<T,T_var>::_allocate_buffer (CORBA::ULong length)
this->buffer_ = tmp;
}
-template<typename T, typename T_var> void
+template <typename T, typename T_var>
+void
TAO_Unbounded_Pseudo_Sequence<T,T_var>::_deallocate_buffer (void)
{
if (this->buffer_ == 0 || this->release_ == 0)
@@ -1496,9 +1509,10 @@ TAO_Unbounded_Pseudo_Sequence<T,T_var>::_deallocate_buffer (void)
this->buffer_ = 0;
}
-template<typename T, typename T_var> void
+template <typename T, typename T_var>
+void
TAO_Unbounded_Pseudo_Sequence<T,T_var>::_shrink_buffer (CORBA::ULong nl,
- CORBA::ULong ol)
+ CORBA::ULong ol)
{
T ** tmp = ACE_static_cast (T **, this->buffer_);
@@ -1514,18 +1528,17 @@ TAO_Unbounded_Pseudo_Sequence<T,T_var>::_shrink_buffer (CORBA::ULong nl,
// *************************************************************
template <typename T, typename T_var, size_t MAX>
-TAO_Bounded_Pseudo_Sequence<T, T_var,MAX>::
-TAO_Bounded_Pseudo_Sequence (void)
+TAO_Bounded_Pseudo_Sequence<T,T_var,MAX>::TAO_Bounded_Pseudo_Sequence (void)
: TAO_Bounded_Base_Sequence (
MAX,
- TAO_Bounded_Pseudo_Sequence<T, T_var,MAX>::allocbuf (MAX)
+ TAO_Bounded_Pseudo_Sequence<T,T_var,MAX>::allocbuf (MAX)
)
{
}
template <typename T, typename T_var, size_t MAX>
-TAO_Bounded_Pseudo_Sequence<T, T_var,MAX>::TAO_Bounded_Pseudo_Sequence (
- const TAO_Bounded_Pseudo_Sequence<T, T_var,MAX> & rhs
+TAO_Bounded_Pseudo_Sequence<T,T_var,MAX>::TAO_Bounded_Pseudo_Sequence (
+ const TAO_Bounded_Pseudo_Sequence<T,T_var,MAX> & rhs
)
: TAO_Bounded_Base_Sequence (rhs)
{
@@ -1550,9 +1563,9 @@ TAO_Bounded_Pseudo_Sequence<T, T_var,MAX>::TAO_Bounded_Pseudo_Sequence (
}
}
-template <typename T, typename T_var, size_t MAX>
-TAO_Bounded_Pseudo_Sequence<T, T_var,MAX> &
-TAO_Bounded_Pseudo_Sequence<T, T_var,MAX>::operator= (
+template <typename T, typename T_var, size_t MAX>
+TAO_Bounded_Pseudo_Sequence<T,T_var,MAX> &
+TAO_Bounded_Pseudo_Sequence<T,T_var,MAX>::operator= (
const TAO_Bounded_Pseudo_Sequence<T,T_var,MAX> & rhs
)
{
@@ -1602,9 +1615,9 @@ TAO_Bounded_Pseudo_Sequence<T, T_var,MAX>::operator= (
return *this;
}
-template <typename T, typename T_var, size_t MAX>
+template <typename T, typename T_var, size_t MAX>
T **
-TAO_Bounded_Pseudo_Sequence<T, T_var,MAX>::allocbuf (CORBA::ULong)
+TAO_Bounded_Pseudo_Sequence<T,T_var,MAX>::allocbuf (CORBA::ULong)
{
T ** buf = 0;
ACE_NEW_RETURN (buf,
@@ -1619,9 +1632,9 @@ TAO_Bounded_Pseudo_Sequence<T, T_var,MAX>::allocbuf (CORBA::ULong)
return buf;
}
-template <typename T, typename T_var, size_t MAX>
+template <typename T, typename T_var, size_t MAX>
void
-TAO_Bounded_Pseudo_Sequence<T, T_var,MAX>::freebuf (T ** buffer)
+TAO_Bounded_Pseudo_Sequence<T,T_var,MAX>::freebuf (T ** buffer)
{
// How much do we deallocate? Easy! allocbuf() always creates MAX
// elements and initialize them to T::_nil(). So we can be
@@ -1638,20 +1651,33 @@ TAO_Bounded_Pseudo_Sequence<T, T_var,MAX>::freebuf (T ** buffer)
delete [] buffer;
}
-template<typename T, typename T_var, size_t MAX> void
-TAO_Bounded_Pseudo_Sequence<T, T_var,MAX>::_allocate_buffer (
+template<typename T, typename T_var, size_t MAX>
+void
+TAO_Bounded_Pseudo_Sequence<T,T_var,MAX>::_tao_any_destructor (
+ void * _tao_void_pointer
+ )
+{
+ typedef TAO_Bounded_Pseudo_Sequence<T,T_var,MAX> THIS_SEQ_TYPE;
+ THIS_SEQ_TYPE * tmp = ACE_static_cast (THIS_SEQ_TYPE *,
+ _tao_void_pointer);
+ delete tmp;
+}
+
+template <typename T, typename T_var, size_t MAX>
+void
+TAO_Bounded_Pseudo_Sequence<T,T_var,MAX>::_allocate_buffer (
CORBA::ULong length
)
{
// For this class memory is never reallocated so the implementation
// is *really* simple.
this->buffer_ =
- TAO_Bounded_Pseudo_Sequence<T, T_var,MAX>::allocbuf (length);
+ TAO_Bounded_Pseudo_Sequence<T,T_var,MAX>::allocbuf (length);
}
-template<typename T, typename T_var, size_t MAX>
+template <typename T, typename T_var, size_t MAX>
void
-TAO_Bounded_Pseudo_Sequence<T, T_var,MAX>::_deallocate_buffer (void)
+TAO_Bounded_Pseudo_Sequence<T,T_var,MAX>::_deallocate_buffer (void)
{
if (this->release_ == 0)
{
@@ -1660,13 +1686,13 @@ TAO_Bounded_Pseudo_Sequence<T, T_var,MAX>::_deallocate_buffer (void)
T ** tmp = ACE_reinterpret_cast (T **,
this->buffer_);
- TAO_Bounded_Pseudo_Sequence<T, T_var, MAX>::freebuf (tmp);
+ TAO_Bounded_Pseudo_Sequence<T,T_var,MAX>::freebuf (tmp);
this->buffer_ = 0;
}
-template<typename T, typename T_var, size_t MAX>
+template <typename T, typename T_var, size_t MAX>
void
-TAO_Bounded_Pseudo_Sequence<T, T_var,MAX>::_shrink_buffer (CORBA::ULong nl,
+TAO_Bounded_Pseudo_Sequence<T,T_var,MAX>::_shrink_buffer (CORBA::ULong nl,
CORBA::ULong ol)
{
T ** tmp = ACE_reinterpret_cast (T **,
@@ -1841,8 +1867,8 @@ TAO_Unbounded_Valuetype_Sequence<T,T_var,T_life>::_tao_any_destructor (
)
{
typedef TAO_Unbounded_Valuetype_Sequence<T,T_var,T_life> THIS_SEQ_TYPE;
- THIS_SEQ_TYPE *tmp = ACE_static_cast (THIS_SEQ_TYPE *,
- _tao_void_pointer);
+ THIS_SEQ_TYPE * tmp = ACE_static_cast (THIS_SEQ_TYPE *,
+ _tao_void_pointer);
delete tmp;
}
@@ -2065,8 +2091,8 @@ TAO_Bounded_Valuetype_Sequence<T,T_var,T_life,MAX>::_tao_any_destructor (
)
{
typedef TAO_Bounded_Valuetype_Sequence<T,T_var,T_life,MAX> THIS_SEQ_TYPE;
- THIS_SEQ_TYPE *tmp = ACE_static_cast (THIS_SEQ_TYPE *,
- _tao_void_pointer);
+ THIS_SEQ_TYPE * tmp = ACE_static_cast (THIS_SEQ_TYPE *,
+ _tao_void_pointer);
delete tmp;
}
@@ -2753,9 +2779,9 @@ TAO_Unbounded_Array_Sequence<T,T_life>::_deallocate_buffer (void)
}
#if defined (__SUNPRO_CC) && (__SUNPRO_CC < 0x500)
- T *tmp = (T *) this->buffer_;
+ T * tmp = (T *) this->buffer_;
#else /* (__SUNPRO_CC) && (__SUNPRO_CC < 0x500) */
- T *tmp = ACE_reinterpret_cast (T *,
+ T * tmp = ACE_reinterpret_cast (T *,
this->buffer_);
#endif /* (__SUNPRO_CC) && (__SUNPRO_CC < 0x500) */
@@ -3157,6 +3183,18 @@ TAO_Bounded_String_Sequence<MAX>::freebuf (char ** buffer)
template<size_t MAX>
void
+TAO_Bounded_String_Sequence<MAX>::_tao_any_destructor (
+ void * _tao_void_pointer
+ )
+{
+ TAO_Bounded_String_Sequence<MAX> * tmp =
+ ACE_static_cast (TAO_Bounded_String_Sequence<MAX> *,
+ _tao_void_pointer);
+ delete tmp;
+}
+
+template<size_t MAX>
+void
TAO_Bounded_String_Sequence<MAX>::_allocate_buffer (CORBA::ULong /* length */)
{
// For this class memory is never reallocated so the implementation
@@ -3355,6 +3393,18 @@ TAO_Bounded_WString_Sequence<MAX>::freebuf (CORBA::WChar* *buffer)
template<size_t MAX>
void
+TAO_Bounded_WString_Sequence<MAX>::_tao_any_destructor (
+ void * _tao_void_pointer
+ )
+{
+ TAO_Bounded_WString_Sequence<MAX> * tmp =
+ ACE_static_cast (TAO_Bounded_WString_Sequence<MAX> *,
+ _tao_void_pointer);
+ delete tmp;
+}
+
+template<size_t MAX>
+void
TAO_Bounded_WString_Sequence<MAX>::_allocate_buffer (
CORBA::ULong /* length */
)
diff --git a/TAO/tao/Sequence_T.h b/TAO/tao/Sequence_T.h
index 91f9825e0d7..f338f4df313 100644
--- a/TAO/tao/Sequence_T.h
+++ b/TAO/tao/Sequence_T.h
@@ -920,6 +920,9 @@ public:
/// Release all the elements.
static void freebuf (T **);
+ static void _tao_any_destructor (void *);
+ typedef T_var _var_type;
+
// The Base_Sequence functions, please see "tao/Sequence.h"
virtual void _allocate_buffer (CORBA::ULong length);
virtual void _deallocate_buffer (void);
@@ -973,6 +976,9 @@ public:
/// it.
static void freebuf (T ** buffer);
+ static void _tao_any_destructor (void *);
+ typedef T_var _var_type;
+
// The Base_Sequence functions, please see "tao/sequence.h"
virtual void _allocate_buffer (CORBA::ULong length);
virtual void _deallocate_buffer (void);
@@ -1384,7 +1390,7 @@ public:
const T &operator[] (CORBA::ULong) const;
/// Allocate storage for a sequence..
- static T *allocbuf (CORBA::ULong length);
+ static T * allocbuf (CORBA::ULong length);
/// Free a buffer allocated by allocbuf() and release each element on
/// it.
@@ -1422,7 +1428,7 @@ public:
* references), and then freeing the returned buffer itself using
* <freebuf>.
*/
- T *get_buffer (CORBA::Boolean orphan = 0);
+ T * get_buffer (CORBA::Boolean orphan = 0);
/**
* This function allows read-only access to the sequence buffer.
@@ -1430,7 +1436,7 @@ public:
* yet been allocated. No direct modification of the returned
* buffer by the caller is permitted.
*/
- const T *get_buffer (void) const;
+ const T * get_buffer (void) const;
/**
* Allows the buffer underlying a sequence to be replaced. The
@@ -1541,6 +1547,8 @@ public:
*/
static void freebuf (char ** buffer);
+ static void _tao_any_destructor (void *);
+
// Functions to create, destroy, and adjust the underlying buffer.
virtual void _allocate_buffer (CORBA::ULong length);
virtual void _deallocate_buffer (void);
@@ -1651,6 +1659,8 @@ public:
*/
static void freebuf (CORBA::WChar ** buffer);
+ static void _tao_any_destructor (void *);
+
// Functions to create, destroy, and adjust the underlying buffer.
virtual void _allocate_buffer (CORBA::ULong length);
virtual void _deallocate_buffer (void);
diff --git a/TAO/tao/Sequence_T.i b/TAO/tao/Sequence_T.i
index 8a0f5a2573c..f9719391cab 100644
--- a/TAO/tao/Sequence_T.i
+++ b/TAO/tao/Sequence_T.i
@@ -193,34 +193,37 @@ TAO_Object_Manager<T,T_var,T_life>::inout (void)
}
// *************************************************************
-// Inline operations for class TAO_Pseudo_Object_Manager<T>
+// Inline operations for class TAO_Pseudo_Object_Manager<T,T_var>
// *************************************************************
-template <typename T, typename T_var>
+template <typename T, typename T_var>
ACE_INLINE
TAO_Pseudo_Object_Manager<T,T_var>::~TAO_Pseudo_Object_Manager (void)
{
}
-template <typename T, typename T_var>
+template <typename T, typename T_var>
ACE_INLINE
-TAO_Pseudo_Object_Manager<T,T_var>::
- TAO_Pseudo_Object_Manager (const TAO_Pseudo_Object_Manager<T,T_var> & rhs)
+TAO_Pseudo_Object_Manager<T,T_var>::TAO_Pseudo_Object_Manager (
+ const TAO_Pseudo_Object_Manager<T,T_var> & rhs
+ )
: ptr_ (rhs.ptr_),
release_ (rhs.release_)
{
}
-template <typename T, typename T_var>
+template <typename T, typename T_var>
ACE_INLINE
-TAO_Pseudo_Object_Manager<T,T_var>::
- TAO_Pseudo_Object_Manager(T ** buffer, CORBA::Boolean release)
+TAO_Pseudo_Object_Manager<T,T_var>::TAO_Pseudo_Object_Manager(
+ T ** buffer,
+ CORBA::Boolean release
+ )
: ptr_ (buffer),
release_ (release)
{
}
-template <typename T, typename T_var>
+template <typename T, typename T_var>
ACE_INLINE
T *
TAO_Pseudo_Object_Manager<T,T_var>::operator-> (void) const
@@ -228,21 +231,21 @@ TAO_Pseudo_Object_Manager<T,T_var>::operator-> (void) const
return *this->ptr_;
}
-template <typename T, typename T_var>
+template <typename T, typename T_var>
ACE_INLINE
TAO_Pseudo_Object_Manager<T,T_var>::operator const T * () const
{
return *this->ptr_;
}
-template <typename T, typename T_var>
+template <typename T, typename T_var>
ACE_INLINE
TAO_Pseudo_Object_Manager<T,T_var>::operator T *& ()
{
return *this->ptr_;
}
-template <typename T, typename T_var>
+template <typename T, typename T_var>
ACE_INLINE
T *
TAO_Pseudo_Object_Manager<T,T_var>::in (void) const
@@ -250,7 +253,7 @@ TAO_Pseudo_Object_Manager<T,T_var>::in (void) const
return *this->ptr_;
}
-template <typename T, typename T_var>
+template <typename T, typename T_var>
ACE_INLINE
T *&
TAO_Pseudo_Object_Manager<T,T_var>::inout (void)
@@ -258,7 +261,7 @@ TAO_Pseudo_Object_Manager<T,T_var>::inout (void)
return *this->ptr_;
}
-template <typename T, typename T_var>
+template <typename T, typename T_var>
ACE_INLINE
T *&
TAO_Pseudo_Object_Manager<T,T_var>::out (void)
@@ -268,7 +271,7 @@ TAO_Pseudo_Object_Manager<T,T_var>::out (void)
return *this->ptr_;
}
-template <typename T, typename T_var>
+template <typename T, typename T_var>
ACE_INLINE
T *
TAO_Pseudo_Object_Manager<T,T_var>::_retn (void)
@@ -542,24 +545,25 @@ TAO_Bounded_Object_Sequence<T, T_var,T_life,T_cast,MAX>::operator[] (
// class TAO_Unbounded_Pseudo_Sequence
// *************************************************************
-template <typename T, typename T_var>
+template <typename T, typename T_var>
ACE_INLINE
TAO_Unbounded_Pseudo_Sequence<T,T_var>::TAO_Unbounded_Pseudo_Sequence (void)
{
}
-template <typename T, typename T_var>
+template <typename T, typename T_var>
ACE_INLINE
-TAO_Unbounded_Pseudo_Sequence<T,T_var>::
-TAO_Unbounded_Pseudo_Sequence (CORBA::ULong maximum,
- CORBA::ULong length,
- T ** value,
- CORBA::Boolean release)
+TAO_Unbounded_Pseudo_Sequence<T,T_var>::TAO_Unbounded_Pseudo_Sequence (
+ CORBA::ULong maximum,
+ CORBA::ULong length,
+ T ** value,
+ CORBA::Boolean release
+ )
: TAO_Unbounded_Base_Sequence (maximum, length, value, release)
{
}
-template <typename T, typename T_var>
+template <typename T, typename T_var>
ACE_INLINE
TAO_Pseudo_Object_Manager<T,T_var>
TAO_Unbounded_Pseudo_Sequence<T,T_var>::operator[] (CORBA::ULong slot) const
@@ -573,7 +577,7 @@ TAO_Unbounded_Pseudo_Sequence<T,T_var>::operator[] (CORBA::ULong slot) const
// class TAO_Bounded_Pseudo_Sequence
// *************************************************************
-template<typename T, typename T_var, size_t MAX>
+template <typename T, typename T_var, size_t MAX>
ACE_INLINE
TAO_Bounded_Pseudo_Sequence<T,T_var,MAX>::~TAO_Bounded_Pseudo_Sequence (void)
{
@@ -593,7 +597,7 @@ TAO_Bounded_Pseudo_Sequence (CORBA::ULong length,
template <typename T, typename T_var, size_t MAX>
ACE_INLINE
TAO_Pseudo_Object_Manager<T,T_var>
-TAO_Bounded_Pseudo_Sequence<T, T_var,MAX>::operator[] (
+TAO_Bounded_Pseudo_Sequence<T,T_var,MAX>::operator[] (
CORBA::ULong slot
) const
{
@@ -601,7 +605,7 @@ TAO_Bounded_Pseudo_Sequence<T, T_var,MAX>::operator[] (
T ** const tmp = ACE_reinterpret_cast (T ** ACE_CAST_CONST,
this->buffer_);
return TAO_Pseudo_Object_Manager<T,T_var> (tmp + slot,
- this->release_);
+ this->release_);
}
// *************************************************************
diff --git a/TAO/tao/TAO.dsp b/TAO/tao/TAO.dsp
index e940bb48455..47133f5f916 100644
--- a/TAO/tao/TAO.dsp
+++ b/TAO/tao/TAO.dsp
@@ -1647,6 +1647,10 @@ SOURCE=.\Protocols_Hooks.h
# End Source File
# Begin Source File
+SOURCE=.\Pseudo_VarOut_T.h
+# End Source File
+# Begin Source File
+
SOURCE=.\Queued_Message.h
# End Source File
# Begin Source File
@@ -2331,6 +2335,10 @@ SOURCE=.\Profile.i
# End Source File
# Begin Source File
+SOURCE=.\Pseudo_VarOut_T.inl
+# End Source File
+# Begin Source File
+
SOURCE=.\Queued_Message.inl
# End Source File
# Begin Source File
@@ -2495,6 +2503,11 @@ SOURCE=.\Objref_VarOut_T.cpp
# End Source File
# Begin Source File
+SOURCE=.\Pseudo_VarOut_T.cpp
+# PROP Exclude_From_Build 1
+# End Source File
+# Begin Source File
+
SOURCE=.\Seq_VarOut_T.cpp
# PROP Exclude_From_Build 1
# End Source File
diff --git a/TAO/tao/Typecode.h b/TAO/tao/Typecode.h
index f6c320dde99..a5f36f82ac6 100644
--- a/TAO/tao/Typecode.h
+++ b/TAO/tao/Typecode.h
@@ -26,6 +26,7 @@
#endif /* ACE_LACKS_PRAGMA_ONCE */
#include "tao/Exception.h"
+#include "tao/Pseudo_VarOut_T.h"
// Forward declarations
class TAO_InputCDR;
@@ -38,6 +39,11 @@ namespace TAO
namespace CORBA
{
+ class TypeCode;
+
+ typedef TAO_Pseudo_Var_T<TypeCode> TypeCode_var;
+ typedef TAO_Pseudo_Out_T<TypeCode, TypeCode_var> TypeCode_out;
+
/**
* @class TypeCode
*
@@ -527,64 +533,6 @@ namespace CORBA
OFFSET_MAP *offset_map_;
};
-
- /**
- * @class TypeCode_var
- *
- * @brief A smart pointer for TypeCodes.
- *
- * Implements the _var class for the TypeCode pseudo object.
- */
- class TAO_Export TypeCode_var
- {
- public:
- TypeCode_var (void); // default constructor
- TypeCode_var (TypeCode_ptr);
- TypeCode_var (const TypeCode_var &); // copy constructor
- ~TypeCode_var (void); // destructor
-
- TypeCode_var &operator= (TypeCode_ptr);
- TypeCode_var &operator= (const TypeCode_var &);
- TypeCode_ptr operator-> (void) const;
-
- /// in, inout, out, _retn
- operator const TypeCode_ptr &() const;
- operator TypeCode_ptr &();
- TypeCode_ptr in (void) const;
- TypeCode_ptr &inout (void);
- TypeCode_ptr &out (void);
- TypeCode_ptr _retn (void);
- TypeCode_ptr ptr (void) const;
-
- private:
- TypeCode_ptr ptr_;
- };
-
- /**
- * @class TypeCode_out
- *
- * @brief The _out class for TypeCode.
- *
- * Implements the _out class for the TypeCode pseudo object.
- */
- class TAO_Export TypeCode_out
- {
- public:
- TypeCode_out (TypeCode_ptr &);
- TypeCode_out (TypeCode_var &);
- TypeCode_out (const TypeCode_out &);
- TypeCode_out &operator= (const TypeCode_out &);
- TypeCode_out &operator= (TypeCode_ptr);
- operator TypeCode_ptr &();
- TypeCode_ptr &ptr (void);
- TypeCode_ptr operator-> (void);
-
- private:
- TypeCode_ptr &ptr_;
-
- /// Assignment from _var not allowed
- TypeCode_out &operator= (const TypeCode_var &);
- };
} // End CORBA namespace
// --------------------------------------------------------------
diff --git a/TAO/tao/Typecode.i b/TAO/tao/Typecode.i
index bb6d54cd737..aadb70e4855 100644
--- a/TAO/tao/Typecode.i
+++ b/TAO/tao/Typecode.i
@@ -127,153 +127,3 @@ CORBA::release (CORBA::TypeCode_ptr obj)
obj->_decr_refcnt ();
}
-// ****************************************************************
-
-ACE_INLINE
-CORBA::TypeCode_var::TypeCode_var (void)
- : ptr_ (CORBA::TypeCode::_nil ())
-{}
-
-ACE_INLINE
-CORBA::TypeCode_var::TypeCode_var (CORBA::TypeCode_ptr p)
- : ptr_ (p)
-{}
-
-ACE_INLINE CORBA::TypeCode_ptr
-CORBA::TypeCode_var::ptr (void) const
-{
- return this->ptr_;
-}
-
-ACE_INLINE
-CORBA::TypeCode_var::TypeCode_var (const CORBA::TypeCode_var &p)
- : ptr_ (CORBA::TypeCode::_duplicate (p.ptr ()))
-{}
-
-ACE_INLINE
-CORBA::TypeCode_var::~TypeCode_var (void)
-{
- CORBA::release (this->ptr_);
-}
-
-ACE_INLINE CORBA::TypeCode_var &
-CORBA::TypeCode_var::operator= (CORBA::TypeCode_ptr p)
-{
- CORBA::release (this->ptr_);
- this->ptr_ = p;
- return *this;
-}
-
-ACE_INLINE CORBA::TypeCode_var &
-CORBA::TypeCode_var::operator= (const CORBA::TypeCode_var &p)
-{
- if (this != &p)
- {
- CORBA::release (this->ptr_);
- this->ptr_ = CORBA::TypeCode::_duplicate (p.ptr ());
- }
- return *this;
-}
-
-ACE_INLINE
-CORBA::TypeCode_var::operator const CORBA::TypeCode_ptr &() const
-{
- return this->ptr_;
-}
-
-ACE_INLINE
-CORBA::TypeCode_var::operator CORBA::TypeCode_ptr &()
-{
- return this->ptr_;
-}
-
-ACE_INLINE CORBA::TypeCode_ptr
-CORBA::TypeCode_var::operator-> (void) const
-{
- return this->ptr_;
-}
-
-ACE_INLINE CORBA::TypeCode_ptr
-CORBA::TypeCode_var::in (void) const
-{
- return this->ptr_;
-}
-
-ACE_INLINE CORBA::TypeCode_ptr &
-CORBA::TypeCode_var::inout (void)
-{
- return this->ptr_;
-}
-
-ACE_INLINE CORBA::TypeCode_ptr &
-CORBA::TypeCode_var::out (void)
-{
- CORBA::release (this->ptr_);
- this->ptr_ = CORBA::TypeCode::_nil ();
- return this->ptr_;
-}
-
-ACE_INLINE CORBA::TypeCode_ptr
-CORBA::TypeCode_var::_retn (void)
-{
- // yield ownership of managed obj reference
- CORBA::TypeCode_ptr val = this->ptr_;
- this->ptr_ = CORBA::TypeCode::_nil ();
- return val;
-}
-
-// *************************************************************
-// Inline operations for class CORBA::TypeCode_out
-// *************************************************************
-
-ACE_INLINE
-CORBA::TypeCode_out::TypeCode_out (CORBA::TypeCode_ptr &p)
- : ptr_ (p)
-{
- this->ptr_ = CORBA::TypeCode::_nil ();
-}
-
-ACE_INLINE
-CORBA::TypeCode_out::TypeCode_out (CORBA::TypeCode_var &p)
- : ptr_ (p.out ())
-{
- CORBA::release (this->ptr_);
- this->ptr_ = CORBA::TypeCode::_nil ();
-}
-
-ACE_INLINE
-CORBA::TypeCode_out::TypeCode_out (const CORBA::TypeCode_out &p)
- : ptr_ (p.ptr_)
-{}
-
-ACE_INLINE CORBA::TypeCode_out &
-CORBA::TypeCode_out::operator= (const CORBA::TypeCode_out &p)
-{
- this->ptr_ = p.ptr_;
- return *this;
-}
-
-ACE_INLINE CORBA::TypeCode_out &
-CORBA::TypeCode_out::operator= (CORBA::TypeCode_ptr p)
-{
- this->ptr_ = p;
- return *this;
-}
-
-ACE_INLINE
-CORBA::TypeCode_out::operator CORBA::TypeCode_ptr &()
-{
- return this->ptr_;
-}
-
-ACE_INLINE CORBA::TypeCode_ptr &
-CORBA::TypeCode_out::ptr (void)
-{
- return this->ptr_;
-}
-
-ACE_INLINE CORBA::TypeCode_ptr
-CORBA::TypeCode_out::operator-> (void)
-{
- return this->ptr_;
-}
diff --git a/TAO/tao/ValueBase.cpp b/TAO/tao/ValueBase.cpp
index 045a918d1c3..eb15f38a4a8 100644
--- a/TAO/tao/ValueBase.cpp
+++ b/TAO/tao/ValueBase.cpp
@@ -41,7 +41,7 @@ CORBA::ValueBase::_downcast (CORBA::ValueBase *vt)
void
CORBA::ValueBase::_tao_any_destructor (void *x)
{
- CORBA::ValueBase_ptr tmp = ACE_static_cast (CORBA::ValueBase *, x);
+ CORBA::ValueBase * tmp = ACE_static_cast (CORBA::ValueBase *, x);
CORBA::remove_ref (tmp);
}
diff --git a/TAO/tao/ValueBase.h b/TAO/tao/ValueBase.h
index fd45078bb8d..bd8e7015272 100644
--- a/TAO/tao/ValueBase.h
+++ b/TAO/tao/ValueBase.h
@@ -23,6 +23,7 @@
#endif /* ACE_LACKS_PRAGMA_ONCE */
#include "tao/corbafwd.h"
+#include "tao/Value_VarOut_T.h"
#include "ace/Basic_Types.h" /* for ptr_arith_t */
#include "ace/Synch_T.h"
@@ -35,7 +36,16 @@ namespace CORBA
TAO_NAMESPACE_INLINE_FUNCTION void add_ref (ValueBase *);
TAO_NAMESPACE_INLINE_FUNCTION void remove_ref (ValueBase *);
- class ValueBase_var;
+ class ValueBase;
+
+ struct TAO_Export tao_ValueBase_life
+ {
+ static void tao_add_ref (ValueBase *);
+ static void tao_remove_ref (ValueBase *);
+ };
+
+ typedef TAO_Value_Var_T<ValueBase, tao_ValueBase_life> ValueBase_var;
+ typedef TAO_Value_Out_T<ValueBase, tao_ValueBase_life> ValueBase_out;
/**
* @class ValueBase
@@ -118,68 +128,6 @@ namespace CORBA
}; // ValueBase
/**
- * @class ValueBase_var
- *
- * @brief _var class for ValueBase
- */
- class TAO_Export ValueBase_var
- {
- public:
- ValueBase_var (void);
- ValueBase_var (CORBA::ValueBase *);
- ValueBase_var (const ValueBase_var &);
- ~ValueBase_var (void);
-
- ValueBase_var &operator= (CORBA::ValueBase *);
- ValueBase_var &operator= (const ValueBase_var &);
- CORBA::ValueBase *operator-> (void) const;
-
- operator const CORBA::ValueBase *() const;
- operator CORBA::ValueBase *&();
-
- /// in, inout, out, _retn
- CORBA::ValueBase *in (void) const;
- CORBA::ValueBase *&inout (void);
- CORBA::ValueBase *&out (void);
- CORBA::ValueBase *_retn (void);
- CORBA::ValueBase *ptr (void) const;
-
- static CORBA::ValueBase * tao_duplicate (CORBA::ValueBase *);
- static void tao_release (CORBA::ValueBase *);
- static CORBA::ValueBase * tao_nil (void);
- static CORBA::ValueBase * tao_narrow (CORBA::ValueBase *
- ACE_ENV_ARG_DECL_NOT_USED);
- static CORBA::ValueBase * tao_upcast (void *);
-
- private:
- CORBA::ValueBase *ptr_;
- };
-
- /**
- * @class ValueBase_out
- *
- * @brief _out class for CORBA::ValueBase
- *
- * _out class for CORBA::ValueBase
- */
- class TAO_Export ValueBase_out
- {
- public:
- ValueBase_out (CORBA::ValueBase *&);
- ValueBase_out (ValueBase_var &);
- ValueBase_out (const ValueBase_out &);
- ValueBase_out &operator= (const ValueBase_out &);
- ValueBase_out &operator= (const ValueBase_var &);
- ValueBase_out &operator= (CORBA::ValueBase *);
- operator CORBA::ValueBase *&();
- CORBA::ValueBase *&ptr (void);
- CORBA::ValueBase *operator-> (void);
-
- private:
- CORBA::ValueBase *&ptr_;
- };
-
- /**
* @class DefaultValueRefCountBase
*
* @brief Default mix-in for reference count of a valuetype.
diff --git a/TAO/tao/ValueBase.i b/TAO/tao/ValueBase.i
index 5520bcc80bb..3cee57426b2 100644
--- a/TAO/tao/ValueBase.i
+++ b/TAO/tao/ValueBase.i
@@ -8,232 +8,45 @@ ACE_INLINE void
CORBA::add_ref (CORBA::ValueBase *val)
{
if (val)
- val->_add_ref ();
+ {
+ val->_add_ref ();
+ }
}
ACE_INLINE void
CORBA::remove_ref (CORBA::ValueBase *val)
{
if (val)
- val->_remove_ref ();
-}
-
-// ===========================================================
-
-// constructor
-ACE_INLINE
-CORBA::ValueBase::ValueBase (void)
-{
-}
-
-// *************************************************************
-// Inline operations for class CORBA::ValueBase_var
-// *************************************************************
-
-ACE_INLINE
-CORBA::ValueBase_var::ValueBase_var (void)
- : ptr_ (0)
-{
-}
-
-ACE_INLINE
-CORBA::ValueBase_var::ValueBase_var (CORBA::ValueBase *p)
- : ptr_ (p)
-{
-}
-
-ACE_INLINE
-CORBA::ValueBase_var::~ValueBase_var (void)
-{
- CORBA::remove_ref (this->ptr_);
-}
-
-ACE_INLINE CORBA::ValueBase *
-CORBA::ValueBase_var::ptr (void) const
-{
- return this->ptr_;
-}
-
-ACE_INLINE
-CORBA::ValueBase_var::ValueBase_var (const CORBA::ValueBase_var &p)
- : ptr_ (p.ptr_)
-{
- p.ptr_->_add_ref ();
-}
-
-ACE_INLINE CORBA::ValueBase_var &
-CORBA::ValueBase_var::operator= (CORBA::ValueBase *p)
-{
- CORBA::remove_ref (this->ptr_);
- this->ptr_ = p;
- return *this;
-}
-
-ACE_INLINE CORBA::ValueBase_var &
-CORBA::ValueBase_var::operator= (const CORBA::ValueBase_var &p)
-{
- if (this != &p)
{
- CORBA::remove_ref (this->ptr_);
- p.ptr_->_add_ref ();
- this->ptr_ = p.ptr_;
+ val->_remove_ref ();
}
-
- return *this;
-}
-
-ACE_INLINE
-CORBA::ValueBase_var::operator const CORBA::ValueBase *() const // cast
-{
- return this->ptr_;
-}
-
-ACE_INLINE
-CORBA::ValueBase_var::operator CORBA::ValueBase *&() // cast
-{
- return this->ptr_;
-}
-
-ACE_INLINE CORBA::ValueBase *
-CORBA::ValueBase_var::operator-> (void) const
-{
- return this->ptr_;
-}
-
-ACE_INLINE CORBA::ValueBase *
-CORBA::ValueBase_var::in (void) const
-{
- return this->ptr_;
-}
-
-ACE_INLINE CORBA::ValueBase *&
-CORBA::ValueBase_var::inout (void)
-{
- return this->ptr_;
-}
-
-ACE_INLINE CORBA::ValueBase *&
-CORBA::ValueBase_var::out (void)
-{
- CORBA::remove_ref (this->ptr_);
- this->ptr_ = 0;
- return this->ptr_;
-}
-
-ACE_INLINE CORBA::ValueBase *
-CORBA::ValueBase_var::_retn (void)
-{
- // Yield ownership of valuebase.
- CORBA::ValueBase *val = this->ptr_;
- this->ptr_ = 0;
- return val;
-}
-
-ACE_INLINE CORBA::ValueBase *
-CORBA::ValueBase_var::tao_duplicate (CORBA::ValueBase *p)
-{
- p->_add_ref ();
- return p;
-}
-
-ACE_INLINE void
-CORBA::ValueBase_var::tao_release (CORBA::ValueBase *p)
-{
- p->_remove_ref ();
-}
-
-ACE_INLINE CORBA::ValueBase *
-CORBA::ValueBase_var::tao_nil (void)
-{
- return 0;
-}
-
-ACE_INLINE CORBA::ValueBase *
-CORBA::ValueBase_var::tao_narrow (
- CORBA::ValueBase *p
- ACE_ENV_ARG_DECL_NOT_USED
- )
-{
- p->_add_ref ();
- return CORBA::ValueBase::_downcast (p);
}
-ACE_INLINE CORBA::ValueBase *
-CORBA::ValueBase_var::tao_upcast (void *src)
-{
- CORBA::ValueBase **tmp =
- ACE_static_cast (CORBA::ValueBase **, src);
- return *tmp;
-}
-
-// *************************************************************
-// Inline operations for class CORBA::ValueBase_out
-// *************************************************************
-
-ACE_INLINE
-CORBA::ValueBase_out::ValueBase_out (CORBA::ValueBase *&p)
- : ptr_ (p)
-{
- this->ptr_ = 0;
-}
+// ===========================================================
ACE_INLINE
-CORBA::ValueBase_out::ValueBase_out (CORBA::ValueBase_var &p)
- : ptr_ (p.out ())
+void
+CORBA::tao_ValueBase_life::tao_add_ref (CORBA::ValueBase *p)
{
- this->ptr_->_remove_ref ();
- this->ptr_ = 0;
+ CORBA::add_ref (p);
}
ACE_INLINE
-CORBA::ValueBase_out::ValueBase_out (const CORBA::ValueBase_out &p)
- : ptr_ (p.ptr_)
-{
-}
-
-ACE_INLINE CORBA::ValueBase_out &
-CORBA::ValueBase_out::operator= (const CORBA::ValueBase_out &p)
-{
- this->ptr_ = p.ptr_;
- return *this;
-}
-
-ACE_INLINE CORBA::ValueBase_out &
-CORBA::ValueBase_out::operator= (const CORBA::ValueBase_var &p)
+void
+CORBA::tao_ValueBase_life::tao_remove_ref (CORBA::ValueBase *p)
{
- p.ptr ()->_add_ref ();
- this->ptr_ = p.ptr ();
- return *this;
+ CORBA::remove_ref (p);
}
-ACE_INLINE CORBA::ValueBase_out &
-CORBA::ValueBase_out::operator= (CORBA::ValueBase *p)
-{
- this->ptr_ = p;
- return *this;
-}
+// ===========================================================
ACE_INLINE
-CORBA::ValueBase_out::operator CORBA::ValueBase *&() // cast
-{
- return this->ptr_;
-}
-
-ACE_INLINE CORBA::ValueBase *&
-CORBA::ValueBase_out::ptr (void) // ptr
-{
- return this->ptr_;
-}
-
-ACE_INLINE CORBA::ValueBase *
-CORBA::ValueBase_out::operator-> (void)
+CORBA::ValueBase::ValueBase (void)
{
- return this->ptr_;
}
// ===========================================================
-// constructor
ACE_INLINE
CORBA::DefaultValueRefCountBase::DefaultValueRefCountBase (void)
: _tao_reference_count_ (1)
diff --git a/TAO/tao/Value_VarOut_T.h b/TAO/tao/Value_VarOut_T.h
index 0b0cef9479b..67ac420ddf0 100644
--- a/TAO/tao/Value_VarOut_T.h
+++ b/TAO/tao/Value_VarOut_T.h
@@ -88,6 +88,10 @@ private:
T *& ptr_;
};
+#if defined (__ACE_INLINE__)
+#include "tao/Value_VarOut_T.inl"
+#endif /* __ACE_INLINE__ */
+
#if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
#include "tao/Value_VarOut_T.cpp"
#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */
diff --git a/TAO/tao/Value_VarOut_T.inl b/TAO/tao/Value_VarOut_T.inl
new file mode 100644
index 00000000000..74e88caa0c5
--- /dev/null
+++ b/TAO/tao/Value_VarOut_T.inl
@@ -0,0 +1,2 @@
+// $Id$
+
diff --git a/TAO/tao/corba.h b/TAO/tao/corba.h
index 3e2216f4d1c..a6447f8f294 100644
--- a/TAO/tao/corba.h
+++ b/TAO/tao/corba.h
@@ -68,8 +68,10 @@
#include "tao/Object_KeyC.h"
#include "tao/ObjectIdListC.h"
+// Template _var and _out classes.
#include "tao/Objref_VarOut_T.h"
#include "tao/Value_VarOut_T.h"
+#include "tao/Pseudo_VarOut_T.h"
#include "tao/Seq_VarOut_T.h"
#include "tao/Array_VarOut_T.h"
#include "tao/VarOut_T.h"
diff --git a/TAO/tao/corbafwd.h b/TAO/tao/corbafwd.h
index e6333da1bfc..e8a0b73440d 100644
--- a/TAO/tao/corbafwd.h
+++ b/TAO/tao/corbafwd.h
@@ -150,8 +150,6 @@ namespace CORBA
// CORBA::TypeCode typedefs.
class TypeCode;
typedef TypeCode * TypeCode_ptr;
- class TypeCode_var;
- class TypeCode_out;
/**
* @name CORBA String Memory Management
@@ -242,8 +240,6 @@ namespace CORBA
class Object;
typedef Object *Object_ptr;
- class Object_var;
- class Object_out;
class LocalObject;
typedef LocalObject *LocalObject_ptr;
@@ -281,9 +277,6 @@ namespace CORBA
class TypeCodeFactory_var;
class ValueBase;
- typedef ValueBase *ValueBase_ptr;
- class ValueBase_var;
- class ValueBase_out;
class ValueFactoryBase;
class ValueFactoryBase_var;
typedef ValueFactoryBase *ValueFactory;