diff options
author | Adam Mitz <mitza@objectcomputing.com> | 2022-06-28 08:47:31 -0600 |
---|---|---|
committer | Adam Mitz <mitza@objectcomputing.com> | 2022-06-28 10:07:11 -0500 |
commit | 9e624020cf57ba399aadf1847b665e17a64ded25 (patch) | |
tree | c797b324428f1f6298bb36a8e8eb3e1e5cc7d160 /TAO | |
parent | 7f2438525abef7fafb1ef2dabc53d16850c2f7d6 (diff) | |
download | ATCD-9e624020cf57ba399aadf1847b665e17a64ded25.tar.gz |
Merge pull request #1868 from mitza-oci/seq-codegen-any
Updated sequence Any operators code generation
(cherry picked from commit b4822ca137fe6622bbe7d2e3a48737a7d4bec21a)
# Conflicts:
# TAO/TAO_IDL/be/be_visitor_sequence/any_op_cs.cpp
Diffstat (limited to 'TAO')
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_sequence/any_op_ch.cpp | 8 | ||||
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_sequence/any_op_cs.cpp | 52 | ||||
-rw-r--r-- | TAO/tests/IDL_Test/Versioned_Namespace/.gitignore | 5 |
3 files changed, 36 insertions, 29 deletions
diff --git a/TAO/TAO_IDL/be/be_visitor_sequence/any_op_ch.cpp b/TAO/TAO_IDL/be/be_visitor_sequence/any_op_ch.cpp index abc8b99e42c..5ffaf738da6 100644 --- a/TAO/TAO_IDL/be/be_visitor_sequence/any_op_ch.cpp +++ b/TAO/TAO_IDL/be/be_visitor_sequence/any_op_ch.cpp @@ -56,7 +56,7 @@ be_visitor_sequence_any_op_ch::visit_sequence (be_sequence *node) be_type *bt = dynamic_cast<be_type*> (node->base_type ()); - name = "std::vector<"; + name = "std::vector< ::"; name += bt->full_name (); name += ">"; } @@ -70,7 +70,7 @@ be_visitor_sequence_any_op_ch::visit_sequence (be_sequence *node) // Generate the Any <<= and >>= operators. *os << macro << " void" - << " operator<<= ( ::CORBA::Any &, const " + << " operator<<= (::CORBA::Any &, const ::" << name.c_str () << " &); // copying version" << be_nl; @@ -78,14 +78,14 @@ be_visitor_sequence_any_op_ch::visit_sequence (be_sequence *node) { *os << macro << " void" - << " operator<<= ( ::CORBA::Any &, " + << " operator<<= (::CORBA::Any &, ::" << name.c_str () << "*); // noncopying version" << be_nl; } *os << macro << " ::CORBA::Boolean" - << " operator>>= (const ::CORBA::Any &, const " + << " operator>>= (const ::CORBA::Any &, const ::" << name.c_str () << " *&);"; diff --git a/TAO/TAO_IDL/be/be_visitor_sequence/any_op_cs.cpp b/TAO/TAO_IDL/be/be_visitor_sequence/any_op_cs.cpp index 335ad7b2495..6d6ef05d701 100644 --- a/TAO/TAO_IDL/be/be_visitor_sequence/any_op_cs.cpp +++ b/TAO/TAO_IDL/be/be_visitor_sequence/any_op_cs.cpp @@ -42,8 +42,6 @@ be_visitor_sequence_any_op_cs::visit_sequence (be_sequence *node) TAO_INSERT_COMMENT (os); - *os << be_global->core_versioning_begin () << be_nl; - // These are no-ops for now, so we just generate them and return if (be_global->alt_mapping () && node->max_size ()->ev ()->u.ulval == 0) { @@ -75,10 +73,12 @@ be_visitor_sequence_any_op_cs::visit_sequence (be_sequence *node) tc = ANY_OBJREF; } + *os << be_global->anyops_versioning_begin () << be_nl; + *os << be_nl << "void operator<<= (" << be_idt_nl << "::CORBA::Any &_tao_any," << be_nl - << "const std::vector<" << bt->full_name () + << "const std::vector< ::" << bt->full_name () << "> &_tao_elem)" << be_uidt_nl << "{" << be_idt_nl << "TAO::"; @@ -86,17 +86,17 @@ be_visitor_sequence_any_op_cs::visit_sequence (be_sequence *node) switch (tc) { case ANY_OBJREF: - *os << "insert_objref_vector<" + *os << "insert_objref_vector< ::" << bt->full_name () << "_ptr> ("; break; case ANY_ARRAY: - *os << "insert_array_vector<" + *os << "insert_array_vector< ::" << bt->full_name () << "_forany> ("; break; default: - *os << "insert_value_vector<" + *os << "insert_value_vector< ::" << bt->full_name () << "> ("; break; @@ -110,7 +110,7 @@ be_visitor_sequence_any_op_cs::visit_sequence (be_sequence *node) *os << be_nl_2 << "::CORBA::Boolean operator>>= (" << be_idt_nl << "const ::CORBA::Any &_tao_any," << be_nl - << "std::vector<" << bt->full_name () + << "std::vector< ::" << bt->full_name () << "> &_tao_elem)" << be_uidt_nl << "{" << be_idt_nl << "return" << be_idt_nl @@ -119,17 +119,17 @@ be_visitor_sequence_any_op_cs::visit_sequence (be_sequence *node) switch (tc) { case ANY_OBJREF: - *os << "extract_objref_vector<" + *os << "extract_objref_vector< ::" << bt->full_name () << "_ptr> ("; break; case ANY_ARRAY: - *os << "extract_array_vector<" + *os << "extract_array_vector< ::" << bt->full_name () << "_forany> ("; break; default: - *os << "extract_value_vector<" + *os << "extract_value_vector< ::" << bt->full_name () << "> ("; break; @@ -141,7 +141,7 @@ be_visitor_sequence_any_op_cs::visit_sequence (be_sequence *node) << "}"; *os << be_nl - << be_global->core_versioning_end () << be_nl; + << be_global->anyops_versioning_end () << be_nl; node->cli_stub_any_op_gen (true); return 0; @@ -155,6 +155,8 @@ be_visitor_sequence_any_op_cs::visit_sequence (be_sequence *node) // type is inserted into an Any and then marshaled. if (node->is_local ()) { + *os << be_global->core_versioning_begin () << be_nl; + *os << "namespace TAO" << be_nl << "{" << be_idt_nl << "template<>" << be_nl @@ -174,9 +176,9 @@ be_visitor_sequence_any_op_cs::visit_sequence (be_sequence *node) << "return false;" << be_uidt_nl << "}" << be_uidt_nl << "}" << be_nl; - } - *os << be_global->core_versioning_end () << be_nl; + *os << be_global->core_versioning_end () << be_nl; + } // If this is non-zero, we want to call its tc_name() // for the TypeCode to pass to the Any operator impls. @@ -189,14 +191,14 @@ be_visitor_sequence_any_op_cs::visit_sequence (be_sequence *node) << "/// Copying insertion." << be_nl << "void operator<<= (" << be_idt_nl << "::CORBA::Any &_tao_any," << be_nl - << "const " << node->name () << " &_tao_elem)" + << "const ::" << node->name () << " &_tao_elem)" << be_uidt_nl << "{" << be_idt_nl - << "TAO::Any_Dual_Impl_T<" << node->name () << ">::insert_copy (" + << "TAO::Any_Dual_Impl_T< ::" << node->name () << ">::insert_copy (" << be_idt_nl << "_tao_any," << be_nl - << node->name () << "::_tao_any_destructor," << be_nl - << (td != 0 ? td->tc_name () : node->tc_name ()) << "," << be_nl + << "::" << node->name () << "::_tao_any_destructor," << be_nl + << "::" << (td ? td->tc_name () : node->tc_name ()) << "," << be_nl << "_tao_elem);" << be_uidt << be_uidt_nl << "}" << be_nl_2; @@ -205,14 +207,14 @@ be_visitor_sequence_any_op_cs::visit_sequence (be_sequence *node) *os << "/// Non-copying insertion." << be_nl << "void operator<<= (" << be_idt_nl << "::CORBA::Any &_tao_any," << be_nl - << node->name () << " *_tao_elem)" + << "::" << node->name () << " *_tao_elem)" << be_uidt_nl << "{" << be_idt_nl - << "TAO::Any_Dual_Impl_T<" << node->name () << ">::insert (" + << "TAO::Any_Dual_Impl_T< ::" << node->name () << ">::insert (" << be_idt_nl << "_tao_any," << be_nl - << node->name () << "::_tao_any_destructor," << be_nl - << (td != 0 ? td->tc_name () : node->tc_name ()) << "," << be_nl + << "::" << node->name () << "::_tao_any_destructor," << be_nl + << "::" << (td ? td->tc_name () : node->tc_name ()) << "," << be_nl << "_tao_elem);" << be_uidt << be_uidt_nl << "}" << be_nl_2; @@ -221,14 +223,14 @@ be_visitor_sequence_any_op_cs::visit_sequence (be_sequence *node) *os << "/// Extraction to const pointer." << be_nl << "::CORBA::Boolean operator>>= (" << be_idt_nl << "const ::CORBA::Any &_tao_any," << be_nl - << "const " << node->name () << " *&_tao_elem)" + << "const ::" << node->name () << " *&_tao_elem)" << be_uidt_nl << "{" << be_idt_nl - << "return TAO::Any_Dual_Impl_T<" << node->name () << ">::extract (" + << "return TAO::Any_Dual_Impl_T< ::" << node->name () << ">::extract (" << be_idt_nl << "_tao_any," << be_nl - << node->name () << "::_tao_any_destructor," << be_nl - << (td != 0 ? td->tc_name () : node->tc_name ()) << "," << be_nl + << "::" << node->name () << "::_tao_any_destructor," << be_nl + << "::" << (td ? td->tc_name () : node->tc_name ()) << "," << be_nl << "_tao_elem);" << be_uidt << be_uidt_nl << "}"; diff --git a/TAO/tests/IDL_Test/Versioned_Namespace/.gitignore b/TAO/tests/IDL_Test/Versioned_Namespace/.gitignore new file mode 100644 index 00000000000..645479ef241 --- /dev/null +++ b/TAO/tests/IDL_Test/Versioned_Namespace/.gitignore @@ -0,0 +1,5 @@ +/*C.cpp +/*C.h +/*C.inl +/*S.cpp +/*S.h |