diff options
author | Adam Mitz <mitza@objectcomputing.com> | 2022-06-29 12:14:50 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-06-29 12:14:50 -0600 |
commit | 375a50519a5d3db0a299a3c9a20dad07622abc41 (patch) | |
tree | 05ca7e979fdb7a0c9b73355d08d14bd963bc74b9 | |
parent | 08e0bea4963a50fa756a4f7dda53e68e2d8278c5 (diff) | |
parent | df522c72f86b9c114bae9cbba74480e4669a89d7 (diff) | |
download | ATCD-375a50519a5d3db0a299a3c9a20dad07622abc41.tar.gz |
Merge pull request #1871 from mitza-oci/gcc12-tao2
[TAO 2] Merged recent changes for GCC 12
42 files changed, 164 insertions, 1445 deletions
diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 7bb1877250d..1fdba544b45 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -46,7 +46,12 @@ jobs: PackageDeps: g++-11 platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU os: ubuntu-20.04 + - CC: gcc-12 + CXX: g++-12 + PackageDeps: g++-12 optional_macros: CCFLAGS+=-std=c++20 + platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU + os: ubuntu-22.04 - CC: clang-6.0 CXX: clang++-6.0 PackageDeps: clang-6.0 @@ -134,12 +139,16 @@ jobs: with: repository: DOCGroup/MPC path: ${{ env.MPC_ROOT }} - - name: Add Repo + - name: Add LLVM apt repo ${{ matrix.Repo }} run: | - wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add - + wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - sudo apt-add-repository "deb http://apt.llvm.org/$(lsb_release -cs)/ ${{ matrix.Repo }} main" - if: matrix.Repo != '' - - name: Add packages + if: startsWith (matrix.Repo, 'llvm-toolchain') + - name: Add PPA apt repo ${{ matrix.Repo }} + run: | + sudo apt-add-repository ${{ matrix.Repo }} + if: startsWith (matrix.Repo, 'ppa:') + - name: Install apt packages run: | sudo apt-get --yes update sudo apt-get --yes install libxerces-c-dev libssl-dev ${{ matrix.PackageDeps }} @@ -187,6 +196,10 @@ jobs: run: | perl ${env:ACE_ROOT}/bin/mwc.pl -type gnuace ${env:ACE_ROOT}/tests/tests.mwc -workers 4 shell: pwsh + - name: Run mwc.pl on $(TAO_ROOT)/tests/IDL_Test + run: | + perl ${env:ACE_ROOT}/bin/mwc.pl -type gnuace ${env:TAO_ROOT}/tests/IDL_Test -workers 4 + shell: pwsh - name: Build TAO_ACE project run: | make -j 6 -C ${env:TAO_ROOT} @@ -195,6 +208,11 @@ jobs: run: | make -j 6 -C ${env:ACE_ROOT}/tests shell: pwsh + - name: Build TAO/tests/IDL_Test project + run: | + make -j 6 -C ${env:TAO_ROOT}/tests/IDL_Test + shell: pwsh + if: matrix.feature != 'CORBA/e micro' - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v1 if: matrix.feature == 'CodeQL' diff --git a/.github/workflows/macosx.yml b/.github/workflows/macosx.yml index f0016715f29..d74e4f83420 100644 --- a/.github/workflows/macosx.yml +++ b/.github/workflows/macosx.yml @@ -59,6 +59,10 @@ jobs: run: | perl ${env:ACE_ROOT}/bin/mwc.pl -type gnuace ${env:ACE_ROOT}/tests/tests.mwc -workers 4 shell: pwsh + - name: Run mwc.pl on $(TAO_ROOT)/tests/IDL_Test + run: | + perl ${env:ACE_ROOT}/bin/mwc.pl -type gnuace ${env:TAO_ROOT}/tests/IDL_Test -workers 4 + shell: pwsh - name: Build TAO_ACE project run: | make -j 6 -C ${env:TAO_ROOT} @@ -67,3 +71,7 @@ jobs: run: | make -j 6 -C ${env:ACE_ROOT}/tests shell: pwsh + - name: Build TAO/tests/IDL_Test project + run: | + make -j 6 -C ${env:TAO_ROOT}/tests/IDL_Test + shell: pwsh diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 75dd8c790ab..63171f9814a 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -126,9 +126,15 @@ jobs: run: | perl ${env:ACE_ROOT}/bin/mwc.pl -type ${{ matrix.mpctype }} ${env:ACE_ROOT}/tests/tests.mwc -workers 4 ${{ matrix.OptionalMpcArgs }} shell: pwsh + - name: Run mwc.pl on $(TAO_ROOT)/tests/IDL_Test + run: | + perl ${env:ACE_ROOT}/bin/mwc.pl -type ${{ matrix.mpctype }} ${env:TAO_ROOT}/tests/IDL_Test -workers 4 ${{ matrix.OptionalMpcArgs }} + shell: pwsh - name: Setup msbuild uses: microsoft/setup-msbuild@v1 - name: Build solution TAO/TAO_ACE.sln run: msbuild -maxcpucount -p:Platform=${{ matrix.BuildPlatform }} -p:Configuration=${{ matrix.BuildConfiguration }} TAO/TAO_ACE.sln - name: Build solution ACE/tests/tests.sln run: msbuild -maxcpucount -p:Platform=${{ matrix.BuildPlatform }} -p:Configuration=${{ matrix.BuildConfiguration }} ACE/tests/tests.sln + - name: Build solution TAO/tests/IDL_Test/IDL_Test.sln + run: msbuild -maxcpucount -p:Platform=${{ matrix.BuildPlatform }} -p:Configuration=${{ matrix.BuildConfiguration }} TAO/tests/IDL_Test/IDL_Test.sln diff --git a/ACE/ace/config-macosx-lion.h b/ACE/ace/config-macosx-lion.h index bf03d4d264b..50341583729 100644 --- a/ACE/ace/config-macosx-lion.h +++ b/ACE/ace/config-macosx-lion.h @@ -3,10 +3,6 @@ #include "ace/config-macosx-leopard.h" -#ifdef __clang__ -# define ACE_ANY_OPS_USE_NAMESPACE -#endif /* __clang__ */ - #if defined (__x86_64__) // On 64 bit platforms, the "long" type is 64-bits. Override the // default 32-bit platform-specific format specifiers appropriately. diff --git a/ACE/ace/config-macosx-snowleopard.h b/ACE/ace/config-macosx-snowleopard.h index 553056a9a21..3aaa8c03e88 100644 --- a/ACE/ace/config-macosx-snowleopard.h +++ b/ACE/ace/config-macosx-snowleopard.h @@ -3,10 +3,6 @@ #include "ace/config-macosx-leopard.h" -#ifdef __clang__ -#define ACE_ANY_OPS_USE_NAMESPACE -#endif - #define ACE_LACKS_UCONTEXT_H #endif // ACE_CONFIG_MACOSX_SNOWLEOPARD_H diff --git a/ACE/ace/config-suncc-common.h b/ACE/ace/config-suncc-common.h index ff4d38c4236..86677fb64f5 100644 --- a/ACE/ace/config-suncc-common.h +++ b/ACE/ace/config-suncc-common.h @@ -48,10 +48,5 @@ #define ACE_TEMPLATES_REQUIRE_SOURCE -// Solaris Studio 12.4 implements symbol lookup correctly. -#if defined (__SUNPRO_CC) && (__SUNPRO_CC >= 0x5130) -#define ACE_ANY_OPS_USE_NAMESPACE -#endif - #include /**/ "ace/post.h" #endif /* ACE_SUNCC_COMMON_H */ diff --git a/ACE/ace/config-sunos5.10.h b/ACE/ace/config-sunos5.10.h index 99b12cbc634..94d87715332 100644 --- a/ACE/ace/config-sunos5.10.h +++ b/ACE/ace/config-sunos5.10.h @@ -59,9 +59,4 @@ #define ACE_HAS_SOLARIS_ATOMIC_LIB -// Solaris Studio 12.4 implements symbol lookup correctly. -#if defined (__SUNPRO_CC) && (__SUNPRO_CC >= 0x5130) -#define ACE_ANY_OPS_USE_NAMESPACE -#endif - #endif /* ACE_CONFIG_H */ diff --git a/ACE/ace/config-win32-borland.h b/ACE/ace/config-win32-borland.h index fea108caa44..a793a7e78dd 100644 --- a/ACE/ace/config-win32-borland.h +++ b/ACE/ace/config-win32-borland.h @@ -180,7 +180,6 @@ #endif #ifdef __clang__ -# define ACE_ANY_OPS_USE_NAMESPACE # define ACE_HAS_BUILTIN_BSWAP16 # define ACE_HAS_BUILTIN_BSWAP32 # define ACE_HAS_BUILTIN_BSWAP64 @@ -202,4 +201,3 @@ #include /**/ "ace/post.h" #endif /* ACE_CONFIG_WIN32_BORLAND_H */ - diff --git a/ACE/include/makeinclude/platform_clang_common.GNU b/ACE/include/makeinclude/platform_clang_common.GNU index bb42962e042..2272f139bd5 100644 --- a/ACE/include/makeinclude/platform_clang_common.GNU +++ b/ACE/include/makeinclude/platform_clang_common.GNU @@ -1,8 +1,5 @@ # -*- Makefile -*- -# Compiling TAO requires relaxing strict 2-phase name lookup rules: -CCFLAGS += -fdelayed-template-parsing - ifneq ($(CROSS_COMPILE),) CROSS-COMPILE = 1 # Build using the cross-tools diff --git a/ACE/include/makeinclude/platform_linux_clang.GNU b/ACE/include/makeinclude/platform_linux_clang.GNU index facabe30b10..130f171d3fe 100644 --- a/ACE/include/makeinclude/platform_linux_clang.GNU +++ b/ACE/include/makeinclude/platform_linux_clang.GNU @@ -63,9 +63,6 @@ ifeq ($(shared_libs), 1) endif endif -# Compiling TAO requires relaxing strict 2-phase name lookup rules: -CCFLAGS += -fdelayed-template-parsing - # Added line below to support "Executable Shared Object" files (as # needed by the service configurator). # Marius Kjeldahl <mariusk@sn.no, marius@funcom.com> diff --git a/TAO/TAO_IDL/be/be_global.cpp b/TAO/TAO_IDL/be/be_global.cpp index b72217adcc4..1906f5dd346 100644 --- a/TAO/TAO_IDL/be/be_global.cpp +++ b/TAO/TAO_IDL/be/be_global.cpp @@ -62,6 +62,8 @@ BE_GlobalData::BE_GlobalData (void) stripped_filename_ (0), core_versioning_begin_ (core_versioned_ns_begin), core_versioning_end_ (core_versioned_ns_end), + anyops_versioning_begin_ (core_versioning_begin_ + "namespace CORBA {\n"), + anyops_versioning_end_ ("\n}" + core_versioning_end_), versioning_begin_ (), versioning_end_ (), versioning_include_ (), @@ -1150,6 +1152,9 @@ BE_GlobalData::versioning_end (const char * s) this->core_versioning_begin_ = this->versioning_end_ + // Yes, "end". core_versioned_ns_begin; + + this->anyops_versioning_begin_ = + this->core_versioning_begin_ + "namespace CORBA {\n"; } void @@ -1164,7 +1169,8 @@ BE_GlobalData::versioning_begin (const char * s) core_versioned_ns_end + this->versioning_begin_; // Yes, "begin". - // Yes, "begin". + this->anyops_versioning_end_ = + "\n}" + this->core_versioning_end_; } const char * @@ -1179,6 +1185,18 @@ BE_GlobalData::core_versioning_end (void) const return this->core_versioning_end_.c_str (); } +const char * +BE_GlobalData::anyops_versioning_begin () const +{ + return this->anyops_versioning_begin_.c_str (); +} + +const char * +BE_GlobalData::anyops_versioning_end () const +{ + return this->anyops_versioning_end_.c_str (); +} + // Set the client_hdr_ending. void BE_GlobalData::client_hdr_ending (const char* s) @@ -3743,4 +3761,3 @@ BE_GlobalData::parse_args (long &i, char **av) idl_global->parse_args_exit (1); } } - diff --git a/TAO/TAO_IDL/be/be_visitor_array/any_op_ch.cpp b/TAO/TAO_IDL/be/be_visitor_array/any_op_ch.cpp index 407755fac1b..c4d01707a17 100644 --- a/TAO/TAO_IDL/be/be_visitor_array/any_op_ch.cpp +++ b/TAO/TAO_IDL/be/be_visitor_array/any_op_ch.cpp @@ -35,14 +35,14 @@ be_visitor_array_any_op_ch::visit_array (be_array *node) TAO_INSERT_COMMENT (os); - *os << be_global->core_versioning_begin () << be_nl; + *os << be_global->anyops_versioning_begin () << be_nl; *os << macro << " void operator<<= (::CORBA::Any &, const " << node->name () << "_forany &);" << be_nl; *os << macro << " ::CORBA::Boolean operator>>= (const ::CORBA::Any &, " << node->name () << "_forany &);"; - *os << be_global->core_versioning_end () << be_nl; + *os << be_global->anyops_versioning_end () << be_nl; node->cli_hdr_any_op_gen (1); return 0; diff --git a/TAO/TAO_IDL/be/be_visitor_array/any_op_cs.cpp b/TAO/TAO_IDL/be/be_visitor_array/any_op_cs.cpp index ce41642eb0a..d0ce00355f0 100644 --- a/TAO/TAO_IDL/be/be_visitor_array/any_op_cs.cpp +++ b/TAO/TAO_IDL/be/be_visitor_array/any_op_cs.cpp @@ -34,8 +34,6 @@ be_visitor_array_any_op_cs::visit_array (be_array *node) TAO_INSERT_COMMENT (os); - *os << be_global->core_versioning_begin () << be_nl; - // Since we don't generate CDR stream operators for types that // explicitly contain a local interface (at some level), we // must override these Any template class methods to avoid @@ -44,6 +42,8 @@ be_visitor_array_any_op_cs::visit_array (be_array *node) // type is inserted into an Any and then marshaled. if (node->is_local ()) { + *os << be_global->core_versioning_begin () << be_nl; + *os << be_nl_2 << "namespace TAO" << be_nl << "{" << be_idt_nl @@ -68,8 +68,12 @@ be_visitor_array_any_op_cs::visit_array (be_array *node) << "return false;" << be_uidt_nl << "}" << be_uidt_nl << "}"; + + *os << be_global->core_versioning_end () << be_nl; } + *os << be_global->anyops_versioning_begin () << be_nl; + // If this is non-zero, we want to call its tc_name() // for the TypeCode to pass to the Any operator impls. be_typedef *td = this->ctx_->tdef (); @@ -111,7 +115,7 @@ be_visitor_array_any_op_cs::visit_array (be_array *node) << ");" << be_uidt << be_uidt << be_uidt << be_uidt_nl << "}"; - *os << be_global->core_versioning_end () << be_nl; + *os << be_global->anyops_versioning_end () << be_nl; node->cli_stub_any_op_gen (1); return 0; diff --git a/TAO/TAO_IDL/be/be_visitor_enum/any_op_ch.cpp b/TAO/TAO_IDL/be/be_visitor_enum/any_op_ch.cpp index 00dbd55a087..b980d50f543 100644 --- a/TAO/TAO_IDL/be/be_visitor_enum/any_op_ch.cpp +++ b/TAO/TAO_IDL/be/be_visitor_enum/any_op_ch.cpp @@ -34,51 +34,7 @@ be_visitor_enum_any_op_ch::visit_enum (be_enum *node) TAO_INSERT_COMMENT (os); - be_module *module = 0; - - if (node->is_nested ()) - { - AST_Decl *d = node; - AST_Decl::NodeType nt = d->node_type (); - - while (nt != AST_Decl::NT_root) - { - if (nt == AST_Decl::NT_module) - { - module = dynamic_cast<be_module*> (d); - break; - } - else - { - d = ScopeAsDecl (d->defined_in ()); - nt = d->node_type (); - } - } - - if (module != 0) - { - // Some compilers handle "any" operators in a namespace - // corresponding to their module, others do not. - *os << "\n\n#if defined (ACE_ANY_OPS_USE_NAMESPACE)\n"; - - be_util::gen_nested_namespace_begin (os, module); - - // Generate the Any <<= and >>= operators. - *os << be_nl_2 - << macro << " void operator<<= (::CORBA::Any &, ::" << node->name () - << ");" << be_nl; - *os << macro << " ::CORBA::Boolean operator>>= (const ::CORBA::Any &, ::" - << node->name () << " &);"; - - be_util::gen_nested_namespace_end (os, module); - - // Emit #else. - *os << be_nl_2 - << "#else\n\n"; - } - } - - *os << be_global->core_versioning_begin () << be_nl; + *os << be_global->anyops_versioning_begin () << be_nl; // Generate the Any <<= and >>= operators. *os << be_nl_2 @@ -87,12 +43,7 @@ be_visitor_enum_any_op_ch::visit_enum (be_enum *node) *os << macro << " ::CORBA::Boolean operator>>= (const ::CORBA::Any &, " << node->name () << " &);"; - *os << be_global->core_versioning_end () << be_nl; - - if (module != 0) - { - *os << "\n\n#endif"; - } + *os << be_global->anyops_versioning_end () << be_nl; node->cli_hdr_any_op_gen (1); return 0; diff --git a/TAO/TAO_IDL/be/be_visitor_enum/any_op_cs.cpp b/TAO/TAO_IDL/be/be_visitor_enum/any_op_cs.cpp index 0fbc1b65fd1..8a14b5dadd4 100644 --- a/TAO/TAO_IDL/be/be_visitor_enum/any_op_cs.cpp +++ b/TAO/TAO_IDL/be/be_visitor_enum/any_op_cs.cpp @@ -67,72 +67,7 @@ be_visitor_enum_any_op_cs::visit_enum (be_enum *node) *os << be_global->core_versioning_end () << be_nl; - be_module *module = 0; - if (node->is_nested ()) - { - AST_Decl *d = node; - AST_Decl::NodeType nt = d->node_type (); - - while (nt != AST_Decl::NT_root) - { - if (nt == AST_Decl::NT_module) - { - module = dynamic_cast<be_module*> (d); - break; - } - else - { - d = ScopeAsDecl (d->defined_in ()); - nt = d->node_type (); - } - } - - if (module != 0) - { - // Some compilers handle "any" operators in a namespace corresponding - // to their module, others do not. - *os << "\n\n#if defined (ACE_ANY_OPS_USE_NAMESPACE)\n"; - - be_util::gen_nested_namespace_begin (os, module); - - // Generate the Any <<= and >>= operator declarations - // Any <<= and >>= operators. - *os << "void operator<<= (" << be_idt << be_idt_nl - << "::CORBA::Any &_tao_any," << be_nl - << "::" << node->name () << " _tao_elem)" << be_uidt - << be_uidt_nl - << "{" << be_idt_nl - << "TAO::Any_Basic_Impl_T< ::" << node->name () << ">::insert (" - << be_idt << be_idt_nl - << "_tao_any," << be_nl - << "::" << node->tc_name () << "," << be_nl - << "_tao_elem);" << be_uidt - << be_uidt << be_uidt_nl - << "}" << be_nl_2; - - *os << "::CORBA::Boolean operator>>= (" << be_idt << be_idt_nl - << "const ::CORBA::Any &_tao_any," << be_nl - << "::" << node->name () << " &_tao_elem)" << be_uidt - << be_uidt_nl - << "{" << be_idt_nl - << "return" << be_idt_nl - << "TAO::Any_Basic_Impl_T< ::" << node->name () << ">::extract (" - << be_idt << be_idt_nl - << "_tao_any," << be_nl - << "::" << node->tc_name () << "," << be_nl - << "_tao_elem);" << be_uidt - << be_uidt << be_uidt << be_uidt_nl - << "}"; - - be_util::gen_nested_namespace_end (os, module); - - // Emit #else. - *os << be_nl_2 - << "#else\n"; - } - } - - *os << be_global->core_versioning_begin () << be_nl; + *os << be_global->anyops_versioning_begin () << be_nl; // Generate the Any <<= and >>= operator declarations // Any <<= and >>= operators. @@ -163,12 +98,7 @@ be_visitor_enum_any_op_cs::visit_enum (be_enum *node) << be_uidt << be_uidt << be_uidt_nl << "}"; - *os << be_global->core_versioning_end () << be_nl; - - if (module != 0) - { - *os << "\n\n#endif"; - } + *os << be_global->anyops_versioning_end () << be_nl; node->cli_stub_any_op_gen (1); return 0; diff --git a/TAO/TAO_IDL/be/be_visitor_exception/any_op_ch.cpp b/TAO/TAO_IDL/be/be_visitor_exception/any_op_ch.cpp index fecd1a54a11..158cf5ed5f2 100644 --- a/TAO/TAO_IDL/be/be_visitor_exception/any_op_ch.cpp +++ b/TAO/TAO_IDL/be/be_visitor_exception/any_op_ch.cpp @@ -35,51 +35,8 @@ be_visitor_exception_any_op_ch::visit_exception (be_exception *node) TAO_INSERT_COMMENT (os); - be_module *module = 0; - if (node->is_nested ()) - { - AST_Decl *d = node; - AST_Decl::NodeType nt = d->node_type (); - - while (nt != AST_Decl::NT_root) - { - if (nt == AST_Decl::NT_module) - { - module = dynamic_cast<be_module*> (d); - break; - } - else - { - d = ScopeAsDecl (d->defined_in ()); - nt = d->node_type (); - } - } - - if (module != 0) - { - // Some compilers handle "any" operators in a namespace - // corresponding to their module, others do not. - *os << "\n\n#if defined (ACE_ANY_OPS_USE_NAMESPACE)\n"; - - be_util::gen_nested_namespace_begin (os, module); - - *os << be_nl_2 - << macro << " void operator<<= (::CORBA::Any &, const ::" << node->name () - << " &); // copying version" << be_nl; - *os << macro << " void operator<<= (::CORBA::Any &, ::" << node->name () - << "*); // noncopying version" << be_nl; - *os << macro << " ::CORBA::Boolean operator>>= (const ::CORBA::Any &, const ::" - << node->name () << " *&);"; - - be_util::gen_nested_namespace_end (os, module); - - // Emit #else. - *os << be_nl_2 - << "#else\n\n"; - } - } - *os << be_global->core_versioning_begin () << be_nl; + *os << be_global->anyops_versioning_begin () << be_nl; *os << be_nl_2 << macro << " void operator<<= (::CORBA::Any &, const " << node->name () @@ -89,12 +46,7 @@ be_visitor_exception_any_op_ch::visit_exception (be_exception *node) *os << macro << " ::CORBA::Boolean operator>>= (const ::CORBA::Any &, const " << node->name () << " *&);"; - *os << be_global->core_versioning_end () << be_nl; - - if (module != 0) - { - *os << "\n\n#endif"; - } + *os << be_global->anyops_versioning_end () << be_nl; // All we have to do is to visit the scope and generate code. if (this->visit_scope (node) == -1) @@ -204,4 +156,3 @@ be_visitor_exception_any_op_ch::visit_union (be_union *node) return 0; } - diff --git a/TAO/TAO_IDL/be/be_visitor_exception/any_op_cs.cpp b/TAO/TAO_IDL/be/be_visitor_exception/any_op_cs.cpp index 3b82f48df28..5f1fa07bea2 100644 --- a/TAO/TAO_IDL/be/be_visitor_exception/any_op_cs.cpp +++ b/TAO/TAO_IDL/be/be_visitor_exception/any_op_cs.cpp @@ -101,94 +101,7 @@ be_visitor_exception_any_op_cs::visit_exception (be_exception *node) *os << be_global->core_versioning_end () << be_nl; - be_module *module = 0; - if (node->is_nested ()) - { - AST_Decl *d = node; - AST_Decl::NodeType nt = d->node_type (); - - while (nt != AST_Decl::NT_root) - { - if (nt == AST_Decl::NT_module) - { - module = dynamic_cast<be_module*> (d); - break; - } - else - { - d = ScopeAsDecl (d->defined_in ()); - nt = d->node_type (); - } - } - - if (module != 0) - { - // Some compilers handle "any" operators in a namespace corresponding - // to their module, others do not. - *os << "\n\n#if defined (ACE_ANY_OPS_USE_NAMESPACE)\n"; - - be_util::gen_nested_namespace_begin (os, module); - - // Copying insertion operator. - - *os << be_nl_2 - << "/// Copying insertion." << be_nl - << "void operator<<= (" << be_idt_nl - << "::CORBA::Any &_tao_any," << be_nl - << "const ::" << node->name () << " &_tao_elem)" - << be_uidt_nl - << "{" << be_idt_nl - << "TAO::Any_Dual_Impl_T< ::" << node->name () << ">::insert_copy (" - << be_idt_nl - << "_tao_any," << be_nl - << "::" << node->name () << "::_tao_any_destructor," << be_nl - << "::" << node->tc_name () << "," << be_nl - << "_tao_elem);" << be_uidt - << be_uidt_nl - << "}" << be_nl_2; - - // Non-copying insertion operator." - *os << "/// Non-copying insertion." << be_nl - << "void operator<<= (" << be_idt_nl - << "::CORBA::Any &_tao_any," << be_nl - << "::" << node->name () << " *_tao_elem)" - << be_uidt_nl - << "{" << be_idt_nl - << "TAO::Any_Dual_Impl_T< ::" << node->name () << ">::insert (" - << be_idt_nl - << "_tao_any," << be_nl - << "::" << node->name () << "::_tao_any_destructor," << be_nl - << "::" << node->tc_name () << "," << be_nl - << "_tao_elem);" << be_uidt - << be_uidt_nl - << "}" << be_nl_2; - - // Extraction to const pointer operator. - *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)" - << be_uidt_nl - << "{" << be_idt_nl - << "return TAO::Any_Dual_Impl_T< ::" << node->name () << ">::extract (" - << be_idt_nl - << "_tao_any," << be_nl - << "::" << node->name () << "::_tao_any_destructor," << be_nl - << "::" << node->tc_name () << "," << be_nl - << "_tao_elem);" << be_uidt - << be_uidt_nl - << "}"; - - be_util::gen_nested_namespace_end (os, module); - - // Emit #else. - *os << be_nl_2 - << "#else\n"; - } - } - - - *os << be_global->core_versioning_begin () << be_nl; + *os << be_global->anyops_versioning_begin () << be_nl; // Copying insertion operator. @@ -240,12 +153,7 @@ be_visitor_exception_any_op_cs::visit_exception (be_exception *node) << be_uidt_nl << "}"; - *os << be_global->core_versioning_end () << be_nl; - - if (module != 0) - { - *os << "\n\n#endif"; - } + *os << be_global->anyops_versioning_end () << be_nl; // all we have to do is to visit the scope and generate code if (this->visit_scope (node) == -1) diff --git a/TAO/TAO_IDL/be/be_visitor_interface/any_op_ch.cpp b/TAO/TAO_IDL/be/be_visitor_interface/any_op_ch.cpp index 1e8d9c4391a..e9c617ef740 100644 --- a/TAO/TAO_IDL/be/be_visitor_interface/any_op_ch.cpp +++ b/TAO/TAO_IDL/be/be_visitor_interface/any_op_ch.cpp @@ -41,55 +41,7 @@ be_visitor_interface_any_op_ch::visit_interface (be_interface *node) *os << be_nl_2; - be_module *module = 0; - - if (node->is_nested ()) - { - AST_Decl *d = node; - AST_Decl::NodeType nt = d->node_type (); - - while (nt != AST_Decl::NT_root) - { - if (nt == AST_Decl::NT_module) - { - module = dynamic_cast<be_module*> (d); - break; - } - else - { - d = ScopeAsDecl (d->defined_in ()); - nt = d->node_type (); - } - } - - if (module != 0) - { - // Some compilers handle "any" operators in a namespace - // corresponding to their module, others do not. - *os << "\n\n#if defined (ACE_ANY_OPS_USE_NAMESPACE)\n"; - - be_util::gen_nested_namespace_begin (os, module); - - // emit nested variation of any operators - *os << macro << " void" - << " operator<<= ( ::CORBA::Any &, " << node->local_name () - << "_ptr); // copying" << be_nl; - *os << macro << " void" - << " operator<<= ( ::CORBA::Any &, " << node->local_name () - << "_ptr *); // non-copying" << be_nl; - *os << macro << " ::CORBA::Boolean" - << " operator>>= (const ::CORBA::Any &, " - << node->local_name () << "_ptr &);"; - - be_util::gen_nested_namespace_end (os, module); - - // Emit #else. - *os << be_nl_2 - << "#else\n\n"; - } - } - - *os << be_global->core_versioning_begin () << be_nl; + *os << be_global->anyops_versioning_begin () << be_nl; *os << macro << " void operator<<= (::CORBA::Any &, " << node->name () << "_ptr); // copying" << be_nl; @@ -98,12 +50,7 @@ be_visitor_interface_any_op_ch::visit_interface (be_interface *node) *os << macro << " ::CORBA::Boolean operator>>= (const ::CORBA::Any &, " << node->name () << "_ptr &);"; - *os << be_global->core_versioning_end () << be_nl; - - if (module != 0) - { - *os << "\n\n#endif"; - } + *os << be_global->anyops_versioning_end () << be_nl; // All we have to do is to visit the scope and generate code. if (this->visit_scope (node) == -1) @@ -133,4 +80,3 @@ be_visitor_interface_any_op_ch::visit_connector ( { return this->visit_interface (node); } - diff --git a/TAO/TAO_IDL/be/be_visitor_interface/any_op_cs.cpp b/TAO/TAO_IDL/be/be_visitor_interface/any_op_cs.cpp index c97c127ddbe..9c0659cf5a2 100644 --- a/TAO/TAO_IDL/be/be_visitor_interface/any_op_cs.cpp +++ b/TAO/TAO_IDL/be/be_visitor_interface/any_op_cs.cpp @@ -111,87 +111,7 @@ be_visitor_interface_any_op_cs::visit_interface (be_interface *node) *os << be_global->core_versioning_end () << be_nl; - be_module *module = 0; - - if (node->is_nested ()) - { - AST_Decl *d = node; - AST_Decl::NodeType nt = d->node_type (); - - while (nt != AST_Decl::NT_root) - { - if (nt == AST_Decl::NT_module) - { - module = dynamic_cast<be_module*> (d); - break; - } - else - { - d = ScopeAsDecl (d->defined_in ()); - nt = d->node_type (); - } - } - - if (module != 0) - { - // Some compilers handle "any" operators in a namespace corresponding - // to their module, others do not. - *os << "\n\n#if defined (ACE_ANY_OPS_USE_NAMESPACE)\n"; - - be_util::gen_nested_namespace_begin (os, module); - - // emit nested variation of any operators - *os << be_nl_2 - << "/// Copying insertion." << be_nl - << "void" << be_nl - << "operator<<= (" << be_idt_nl - << "::CORBA::Any &_tao_any," << be_nl - << node->local_name () << "_ptr _tao_elem)" << be_uidt_nl - << "{" << be_idt_nl - << node->local_name () << "_ptr _tao_objptr =" << be_idt_nl - << node->local_name () << "::_duplicate (_tao_elem);" << be_uidt_nl - << "_tao_any <<= &_tao_objptr;" << be_uidt_nl - << "}" << be_nl_2; - - *os << "/// Non-copying insertion." << be_nl - << "void" << be_nl - << "operator<<= (" << be_idt_nl - << "::CORBA::Any &_tao_any," << be_nl - << node->local_name () << "_ptr *_tao_elem)" << be_uidt_nl - << "{" << be_idt_nl - << "TAO::Any_Impl_T<" << node->local_name () << ">::insert (" - << be_idt_nl - << "_tao_any," << be_nl - << node->local_name () << "::_tao_any_destructor," << be_nl - << node->tc_name ()->last_component () << "," << be_nl - << "*_tao_elem);" << be_uidt - << be_uidt_nl - << "}" << be_nl_2; - - *os << "::CORBA::Boolean" << be_nl - << "operator>>= (" << be_idt << be_idt_nl - << "const ::CORBA::Any &_tao_any," << be_nl - << node->local_name () << "_ptr &_tao_elem)" << be_uidt << be_uidt_nl - << "{" << be_idt_nl - << "return" << be_idt_nl - << "TAO::Any_Impl_T<" << node->local_name () << ">::extract (" - << be_idt << be_idt_nl - << "_tao_any," << be_nl - << node->local_name () << "::_tao_any_destructor," << be_nl - << node->tc_name ()->last_component () << "," << be_nl - << "_tao_elem);" << be_uidt << be_uidt - << be_uidt << be_uidt_nl - << "}"; - - be_util::gen_nested_namespace_end (os, module); - - // Emit #else. - *os << be_nl_2 - << "#else\n"; - } - } - - *os << be_global->core_versioning_begin () << be_nl; + *os << be_global->anyops_versioning_begin () << be_nl; *os << be_nl_2 << "/// Copying insertion." << be_nl @@ -235,12 +155,7 @@ be_visitor_interface_any_op_cs::visit_interface (be_interface *node) << be_uidt << be_uidt << be_uidt_nl << "}" << be_nl; - *os << be_global->core_versioning_end () << be_nl; - - if (module != 0) - { - *os << "\n\n#endif"; - } + *os << be_global->anyops_versioning_end () << be_nl; // All we have to do is to visit the scope and generate code. if (this->visit_scope (node) == -1) @@ -267,4 +182,3 @@ be_visitor_interface_any_op_cs::visit_connector ( { return this->visit_interface (node); } - diff --git a/TAO/TAO_IDL/be/be_visitor_interface_fwd/any_op_ch.cpp b/TAO/TAO_IDL/be/be_visitor_interface_fwd/any_op_ch.cpp index b2aae3dd716..bf343108670 100644 --- a/TAO/TAO_IDL/be/be_visitor_interface_fwd/any_op_ch.cpp +++ b/TAO/TAO_IDL/be/be_visitor_interface_fwd/any_op_ch.cpp @@ -47,46 +47,7 @@ be_visitor_interface_fwd_any_op_ch::visit_interface_fwd ( TAO_INSERT_COMMENT (os); - be_module *module = 0; - - if (node->is_nested () && - node->defined_in ()->scope_node_type () == AST_Decl::NT_module) - { - module = dynamic_cast<be_module*> (node->defined_in ()); - - if (0 == module) - { - ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_valuebox_any_op_ch::" - "visit_interface_fwd - " - "Error parsing nested name\n"), - -1); - } - - // Some compilers handle "any" operators in a namespace - // corresponding to their module, others do not. - *os << "\n\n#if defined (ACE_ANY_OPS_USE_NAMESPACE)\n"; - - be_util::gen_nested_namespace_begin (os, module); - - *os << macro << " void" - << " operator<<= ( ::CORBA::Any &, " << node->local_name () - << "_ptr); // copying" << be_nl; - *os << macro << " void" - << " operator<<= ( ::CORBA::Any &, " << node->local_name () - << "_ptr *); // non-copying" << be_nl; - *os << macro << " ::CORBA::Boolean" - << " operator>>= (const ::CORBA::Any &, " - << node->local_name () << " *&);"; - - be_util::gen_nested_namespace_end (os, module); - - // Emit #else. - *os << be_nl_2 - << "#else\n\n"; - } - - *os << be_global->core_versioning_begin () << be_nl; + *os << be_global->anyops_versioning_begin () << be_nl; *os << macro << " void" << " operator<<= (::CORBA::Any &, " << node->name () @@ -98,12 +59,7 @@ be_visitor_interface_fwd_any_op_ch::visit_interface_fwd ( << " operator>>= (const ::CORBA::Any &, " << node->name () << " *&);"; - *os << be_global->core_versioning_end () << be_nl; - - if (module != 0) - { - *os << "\n\n#endif"; - } + *os << be_global->anyops_versioning_end () << be_nl; node->cli_hdr_any_op_gen (1); return 0; 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 495bda7b593..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 += ">"; } @@ -65,70 +65,12 @@ be_visitor_sequence_any_op_ch::visit_sequence (be_sequence *node) name = node->full_name (); } - be_module *module = 0; - if (node->is_nested ()) - { - AST_Decl *d = node; - AST_Decl::NodeType nt = d->node_type (); - - while (nt != AST_Decl::NT_root) - { - if (nt == AST_Decl::NT_module) - { - module = dynamic_cast<be_module*> (d); - break; - } - else - { - d = ScopeAsDecl (d->defined_in ()); - nt = d->node_type (); - } - } - - if (module != 0) - { - // Some compilers handle "any" operators in a namespace - // corresponding to their module, others do not. - *os << "\n\n#if defined (ACE_ANY_OPS_USE_NAMESPACE)\n"; - - be_util::gen_nested_namespace_begin (os, module); - - // Generate the Any <<= and >>= operators. - *os << macro - << " void" - << " operator<<= ( ::CORBA::Any &, const ::" - << name.c_str () - << " &); // copying version" << be_nl; - - if (!alt) - { - *os << macro - << " void" - << " operator<<= ( ::CORBA::Any &, ::" - << name.c_str () - << "*); // noncopying version" << be_nl; - } - - *os << macro - << " ::CORBA::Boolean" - << " operator>>= (const ::CORBA::Any &, const ::" - << name.c_str () - << " *&);"; - - be_util::gen_nested_namespace_end (os, module); - - // Emit #else. - *os << be_nl_2 - << "#else\n\n"; - } - } - - *os << be_global->core_versioning_begin () << be_nl; + *os << be_global->anyops_versioning_begin () << be_nl; // Generate the Any <<= and >>= operators. *os << macro << " void" - << " operator<<= ( ::CORBA::Any &, const " + << " operator<<= (::CORBA::Any &, const ::" << name.c_str () << " &); // copying version" << be_nl; @@ -136,24 +78,18 @@ 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 () << " *&);"; - *os << be_global->core_versioning_end () << be_nl; - - if (module != 0) - { - *os << "\n\n#endif"; - } - + *os << be_global->anyops_versioning_end () << be_nl; node->cli_hdr_any_op_gen (true); return 0; 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 7a504a0fc62..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,114 +176,29 @@ 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. be_typedef *td = this->ctx_->tdef (); - be_module *module = 0; - if (node->is_nested ()) - { - AST_Decl *d = node; - AST_Decl::NodeType nt = d->node_type (); - - while (nt != AST_Decl::NT_root) - { - if (nt == AST_Decl::NT_module) - { - module = dynamic_cast<be_module*> (d); - break; - } - else - { - d = ScopeAsDecl (d->defined_in ()); - nt = d->node_type (); - } - } - - if (module != 0) - { - // Some compilers handle "any" operators in a namespace - // corresponding to their module, others do not. - *os << "\n\n#if defined (ACE_ANY_OPS_USE_NAMESPACE)\n"; - - be_util::gen_nested_namespace_begin (os, module); - - // Copying insertion. - *os << be_nl - << "/// Copying insertion." << be_nl - << "void operator<<= (" << be_idt_nl - << "::CORBA::Any &_tao_any," << be_nl - << "const ::" << node->name () << " &_tao_elem)" - << be_uidt_nl - << "{" << be_idt_nl - << "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 - << "_tao_elem);" << be_uidt - << be_uidt_nl - << "}" << be_nl_2; - - // Non-copying insertion. - *os << "/// Non-copying insertion." << be_nl - << "void operator<<= (" << be_idt_nl - << "::CORBA::Any &_tao_any," << be_nl - << "::" << node->name () << " *_tao_elem)" - << be_uidt_nl - << "{" << be_idt_nl - << "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 - << "_tao_elem);" << be_uidt - << be_uidt_nl - << "}" << be_nl_2; - - // Extraction to const pointer. - *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)" - << be_uidt_nl - << "{" << be_idt_nl - << "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 - << "_tao_elem);" << be_uidt - << be_uidt_nl - << "}"; - - be_util::gen_nested_namespace_end (os, module); - - // Emit #else. - *os << be_nl_2 - << "#else\n\n"; - } - } - - *os << be_global->core_versioning_begin () << be_nl; + *os << be_global->anyops_versioning_begin () << be_nl; // Copying insertion. *os << be_nl << "/// 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; @@ -290,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; @@ -306,24 +223,19 @@ 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 << "}"; - *os << be_global->core_versioning_end () << be_nl; - - if (module != 0) - { - *os << "\n\n#endif"; - } + *os << be_global->anyops_versioning_end () << be_nl; node->cli_stub_any_op_gen (true); return 0; diff --git a/TAO/TAO_IDL/be/be_visitor_structure/any_op_ch.cpp b/TAO/TAO_IDL/be/be_visitor_structure/any_op_ch.cpp index 21d32abdd2f..1cae638881c 100644 --- a/TAO/TAO_IDL/be/be_visitor_structure/any_op_ch.cpp +++ b/TAO/TAO_IDL/be/be_visitor_structure/any_op_ch.cpp @@ -40,65 +40,16 @@ be_visitor_structure_any_op_ch::visit_structure (be_structure *node) TAO_INSERT_COMMENT (os); - be_module *module = 0; - if (node->is_nested ()) - { - AST_Decl *d = node; - AST_Decl::NodeType nt = d->node_type (); - - while (nt != AST_Decl::NT_root) - { - if (nt == AST_Decl::NT_module) - { - module = dynamic_cast<be_module*> (d); - break; - } - else - { - d = ScopeAsDecl (d->defined_in ()); - nt = d->node_type (); - } - } - - if (module != 0) - { - // Some compilers handle "any" operators in a namespace - // corresponding to their module, others do not. - *os << "\n\n#if defined (ACE_ANY_OPS_USE_NAMESPACE)\n"; - - be_util::gen_nested_namespace_begin (os, module); - - *os << macro << " void operator<<= (::CORBA::Any &, const ::" << node->name () - << " &); // copying version" << be_nl; - *os << macro << " void operator<<= (::CORBA::Any &, ::" << node->name () - << "*); // noncopying version" << be_nl; - *os << macro << " ::CORBA::Boolean operator>>= (const ::CORBA::Any &, const ::" - << node->name () << " *&);"; - - be_util::gen_nested_namespace_end (os, module); - - // Emit #else. - *os << be_nl_2 - << "#else\n\n"; - } - } + *os << be_global->anyops_versioning_begin () << be_nl; - *os << be_global->core_versioning_begin () << be_nl; - - *os << macro << " void operator<<= (::CORBA::Any &, const " << node->name () + *os << macro << " void operator<<= (::CORBA::Any &, const ::" << node->name () << " &); // copying version" << be_nl; - *os << macro << " void operator<<= (::CORBA::Any &, " << node->name () + *os << macro << " void operator<<= (::CORBA::Any &, ::" << node->name () << "*); // noncopying version" << be_nl; - *os << macro << " ::CORBA::Boolean operator>>= (const ::CORBA::Any &, const " + *os << macro << " ::CORBA::Boolean operator>>= (const ::CORBA::Any &, const ::" << node->name () << " *&);"; - *os << be_global->core_versioning_end () << be_nl; - - if (module != 0) - { - *os << "\n\n#endif"; - } - + *os << be_global->anyops_versioning_end () << be_nl; // All we have to do is to visit the scope and generate code. if (this->visit_scope (node) == -1) @@ -187,4 +138,3 @@ be_visitor_structure_any_op_ch::visit_enum (be_enum *node) return 0; } - diff --git a/TAO/TAO_IDL/be/be_visitor_structure/any_op_cs.cpp b/TAO/TAO_IDL/be/be_visitor_structure/any_op_cs.cpp index 3b9892a40a5..982d28d8622 100644 --- a/TAO/TAO_IDL/be/be_visitor_structure/any_op_cs.cpp +++ b/TAO/TAO_IDL/be/be_visitor_structure/any_op_cs.cpp @@ -74,104 +74,19 @@ be_visitor_structure_any_op_cs::visit_structure (be_structure *node) *os << be_global->core_versioning_end () << be_nl; } - - be_module *module = 0; - if (node->is_nested ()) - { - AST_Decl *d = node; - AST_Decl::NodeType nt = d->node_type (); - - while (nt != AST_Decl::NT_root) - { - if (nt == AST_Decl::NT_module) - { - module = dynamic_cast<be_module*> (d); - break; - } - else - { - d = ScopeAsDecl (d->defined_in ()); - nt = d->node_type (); - } - } - - if (module != 0) - { - // Some compilers handle "any" operators in a namespace corresponding - // to their module, others do not. - *os << "\n\n#if defined (ACE_ANY_OPS_USE_NAMESPACE)\n"; - - be_util::gen_nested_namespace_begin (os, module); - - // Copying insertion. - *os << "/// Copying insertion." << be_nl - << "void operator<<= (" << be_idt_nl - << "::CORBA::Any &_tao_any," << be_nl - << "const ::" << node->name () << " &_tao_elem)" - << be_uidt_nl - << "{" << be_idt_nl - << "TAO::Any_Dual_Impl_T< ::" << node->name () << ">::insert_copy (" - << be_idt_nl - << "_tao_any," << be_nl - << "::" << node->name () << "::_tao_any_destructor," << be_nl - << "::" << node->tc_name () << "," << be_nl - << "_tao_elem);" - << be_uidt << be_uidt_nl - << "}" << be_nl_2; - - // Non-copying insertion. - *os << "/// Non-copying insertion." << be_nl - << "void operator<<= (" << be_idt_nl - << "::CORBA::Any &_tao_any," << be_nl - << "::" << node->name () << " *_tao_elem)" - << be_uidt_nl - << "{" << be_idt_nl - << "TAO::Any_Dual_Impl_T< ::" << node->name () << ">::insert (" - << be_idt_nl - << "_tao_any," << be_nl - << "::" << node->name () << "::_tao_any_destructor," << be_nl - << "::" << node->tc_name () << "," << be_nl - << "_tao_elem);" << be_uidt - << be_uidt_nl - << "}" << be_nl_2; - - // Extraction to const pointer. - *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)" - << be_uidt_nl - << "{" << be_idt_nl - << "return TAO::Any_Dual_Impl_T< ::" << node->name () << ">::extract (" - << be_idt_nl - << "_tao_any," << be_nl - << "::" << node->name () << "::_tao_any_destructor," << be_nl - << "::" << node->tc_name () << "," << be_nl - << "_tao_elem);" << be_uidt - << be_uidt_nl - << "}"; - - be_util::gen_nested_namespace_end (os, module); - - // Emit #else. - *os << be_nl_2 - << "#else\n"; - } - } - - *os << be_global->core_versioning_begin () << be_nl; + *os << be_global->anyops_versioning_begin () << be_nl; // Copying insertion. *os << "/// 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 + << "::" << node->name () << "::_tao_any_destructor," << be_nl << node->tc_name () << "," << be_nl << "_tao_elem);" << be_uidt << be_uidt_nl @@ -181,13 +96,13 @@ be_visitor_structure_any_op_cs::visit_structure (be_structure *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 + << "::" << node->name () << "::_tao_any_destructor," << be_nl << node->tc_name () << "," << be_nl << "_tao_elem);" << be_uidt << be_uidt_nl @@ -197,24 +112,19 @@ be_visitor_structure_any_op_cs::visit_structure (be_structure *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 + << "::" << node->name () << "::_tao_any_destructor," << be_nl << node->tc_name () << "," << be_nl << "_tao_elem);" << be_uidt << be_uidt_nl << "}"; - *os << be_global->core_versioning_end () << be_nl; - - if (module != 0) - { - *os << "\n\n#endif"; - } + *os << be_global->anyops_versioning_end () << be_nl; // all we have to do is to visit the scope and generate code if (this->visit_scope (node) == -1) diff --git a/TAO/TAO_IDL/be/be_visitor_union/any_op_ch.cpp b/TAO/TAO_IDL/be/be_visitor_union/any_op_ch.cpp index 13ac66f5b08..ad6f0e2412c 100644 --- a/TAO/TAO_IDL/be/be_visitor_union/any_op_ch.cpp +++ b/TAO/TAO_IDL/be/be_visitor_union/any_op_ch.cpp @@ -35,54 +35,7 @@ be_visitor_union_any_op_ch::visit_union (be_union *node) TAO_INSERT_COMMENT (os); - be_module *module = 0; - - AST_Decl *decl = node; - if (decl->is_nested ()) - { - if (node->defined_in ()->scope_node_type () == AST_Decl::NT_interface) - { - be_interface *intf = 0; - intf = dynamic_cast<be_interface*> (node->defined_in ()); - decl = intf; - } - - if (decl->defined_in ()->scope_node_type () == AST_Decl::NT_module) - { - module = dynamic_cast<be_module*> (decl->defined_in ()); - - if (!module) - { - ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_union_any_op_ch::" - "visit_union - " - "Error parsing nested name\n"), - -1); - } - - // Some compilers handle "any" operators in a namespace - // corresponding to their module, others do not. - *os << "\n\n#if defined (ACE_ANY_OPS_USE_NAMESPACE)\n"; - - be_util::gen_nested_namespace_begin (os, module); - - - *os << macro << " void operator<<= (::CORBA::Any &, const ::" << node->name () - << " &); // copying version" << be_nl; - *os << macro << " void operator<<= (::CORBA::Any &, ::" << node->name () - << "*); // noncopying version" << be_nl; - *os << macro << " ::CORBA::Boolean operator>>= (const ::CORBA::Any &, const ::" - << node->name () << " *&);"; - - be_util::gen_nested_namespace_end (os, module); - - // Emit #else. - *os << be_nl_2 - << "#else\n\n"; - } - } - - *os << be_global->core_versioning_begin () << be_nl; + *os << be_global->anyops_versioning_begin () << be_nl; *os << macro << " void operator<<= (::CORBA::Any &, const " << node->name () << " &); // copying version" << be_nl; @@ -91,12 +44,7 @@ be_visitor_union_any_op_ch::visit_union (be_union *node) *os << macro << " ::CORBA::Boolean operator>>= (const ::CORBA::Any &, const " << node->name () << " *&);"; - *os << be_global->core_versioning_end () << be_nl; - - if (module != 0) - { - *os << "\n\n#endif"; - } + *os << be_global->anyops_versioning_end () << be_nl; be_visitor_context ctx (*this->ctx_); for (UTL_ScopeActiveIterator si (node, UTL_Scope::IK_localtypes); @@ -206,4 +154,3 @@ be_visitor_union_any_op_ch::visit_structure (be_structure *node) return 0; } - diff --git a/TAO/TAO_IDL/be/be_visitor_union/any_op_cs.cpp b/TAO/TAO_IDL/be/be_visitor_union/any_op_cs.cpp index d42c997170d..bf419006feb 100644 --- a/TAO/TAO_IDL/be/be_visitor_union/any_op_cs.cpp +++ b/TAO/TAO_IDL/be/be_visitor_union/any_op_cs.cpp @@ -68,94 +68,7 @@ be_visitor_union_any_op_cs::visit_union (be_union *node) *os << be_global->core_versioning_end () << be_nl; - be_module *module = 0; - - AST_Decl *decl = node; - if (decl->is_nested ()) - { - if (node->defined_in ()->scope_node_type () == AST_Decl::NT_interface) - { - be_interface *intf = 0; - intf = dynamic_cast<be_interface*> (node->defined_in ()); - decl = intf; - } - - if (decl->defined_in ()->scope_node_type () == AST_Decl::NT_module) - { - module = dynamic_cast<be_module*> (decl->defined_in ()); - - if (!module) - { - ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_valuebox_any_op_cs::" - "visit_valuebox - " - "Error parsing nested name\n"), - -1); - } - - // Some compilers handle "any" operators in a namespace corresponding - // to their module, others do not. - *os << "\n\n#if defined (ACE_ANY_OPS_USE_NAMESPACE)\n"; - - be_util::gen_nested_namespace_begin (os, module); - - // Copying insertion. - *os << "/// Copying insertion." << be_nl - << "void operator<<= (" << be_idt_nl - << "::CORBA::Any &_tao_any," << be_nl - << "const ::" << node->name () << " &_tao_elem)" - << be_uidt_nl - << "{" << be_idt_nl - << "TAO::Any_Dual_Impl_T< ::" << node->name () << ">::insert_copy (" - << be_idt_nl - << "_tao_any," << be_nl - << "::" << node->name () << "::_tao_any_destructor," << be_nl - << "::" << node->tc_name () << "," << be_nl - << "_tao_elem);" - << be_uidt << be_uidt_nl - << "}" << be_nl_2; - - // Non-copying insertion. - *os << "/// Non-copying insertion." << be_nl - << "void operator<<= (" << be_idt_nl - << "::CORBA::Any &_tao_any," << be_nl - << "::" << node->name () << " *_tao_elem)" - << be_uidt_nl - << "{" << be_idt_nl - << "TAO::Any_Dual_Impl_T< ::" << node->name () << ">::insert (" - << be_idt_nl - << "_tao_any," << be_nl - << "::" << node->name () << "::_tao_any_destructor," << be_nl - << "::" << node->tc_name () << "," << be_nl - << "_tao_elem);" << be_uidt - << be_uidt_nl - << "}" << be_nl_2; - - // Extraction to const pointer. - *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)" - << be_uidt_nl - << "{" << be_idt_nl - << "return TAO::Any_Dual_Impl_T< ::" << node->name () << ">::extract (" - << be_idt_nl - << "_tao_any," << be_nl - << "::" << node->name () << "::_tao_any_destructor," << be_nl - << "::" << node->tc_name () << "," << be_nl - << "_tao_elem);" << be_uidt - << be_uidt_nl - << "}"; - - be_util::gen_nested_namespace_end (os, module); - - // Emit #else. - *os << be_nl_2 - << "#else\n"; - } - } - - *os << be_global->core_versioning_begin () << be_nl; + *os << be_global->anyops_versioning_begin () << be_nl; // Copying insertion. *os << "/// Copying insertion." << be_nl @@ -205,12 +118,7 @@ be_visitor_union_any_op_cs::visit_union (be_union *node) << be_uidt_nl << "}"; - *os << be_global->core_versioning_end () << be_nl; - - if (module != 0) - { - *os << "\n\n#endif"; - } + *os << be_global->anyops_versioning_end () << be_nl; be_visitor_context ctx (*this->ctx_); for (UTL_ScopeActiveIterator si (node, UTL_Scope::IK_localtypes); diff --git a/TAO/TAO_IDL/be/be_visitor_valuebox/any_op_ch.cpp b/TAO/TAO_IDL/be/be_visitor_valuebox/any_op_ch.cpp index b321c7dc49a..cb62d322b62 100644 --- a/TAO/TAO_IDL/be/be_visitor_valuebox/any_op_ch.cpp +++ b/TAO/TAO_IDL/be/be_visitor_valuebox/any_op_ch.cpp @@ -41,49 +41,7 @@ be_visitor_valuebox_any_op_ch::visit_valuebox (be_valuebox *node) TAO_INSERT_COMMENT (os); - be_module *module = 0; - - if (node->is_nested () && - node->defined_in ()->scope_node_type () == AST_Decl::NT_module) - { - module = dynamic_cast<be_module*> (node->defined_in ()); - - if (!module) - { - ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_valuebox_any_op_ch::" - "visit_valuebox - " - "Error parsing nested name\n"), - -1); - } - - // Some compilers handle "any" operatorrs in a namespace - // corresponding to their module, others do not. - *os << "\n\n#if defined (ACE_ANY_OPS_USE_NAMESPACE)\n"; - - be_util::gen_nested_namespace_begin (os, module); - - // emit nested variation of any operators - *os << macro << " void" - << " operator<<= ( ::CORBA::Any &, " << node->local_name () - << " *); // copying" << be_nl; - - *os << macro << " void" - << " operator<<= ( ::CORBA::Any &, " << node->local_name () - << " **); // non-copying" << be_nl; - - *os << macro << " ::CORBA::Boolean" - << " operator>>= (const ::CORBA::Any &, " - << node->local_name () << " *&);"; - - be_util::gen_nested_namespace_end (os, module); - - // Emit #else. - *os << be_nl_2 - << "#else\n\n"; - } - - *os << be_global->core_versioning_begin () << be_nl; + *os << be_global->anyops_versioning_begin () << be_nl; *os << macro << " void operator<<= (::CORBA::Any &, " << node->name () << " *); // copying" << be_nl; @@ -94,12 +52,7 @@ be_visitor_valuebox_any_op_ch::visit_valuebox (be_valuebox *node) *os << macro << " ::CORBA::Boolean operator>>= (const ::CORBA::Any &, " << node->name () << " *&);"; - *os << be_global->core_versioning_end () << be_nl; - - if (module != 0) - { - *os << "\n\n#endif"; - } + *os << be_global->anyops_versioning_end () << be_nl; node->cli_hdr_any_op_gen (1); return 0; diff --git a/TAO/TAO_IDL/be/be_visitor_valuebox/any_op_cs.cpp b/TAO/TAO_IDL/be/be_visitor_valuebox/any_op_cs.cpp index a48f5875801..0aa7f7a517b 100644 --- a/TAO/TAO_IDL/be/be_visitor_valuebox/any_op_cs.cpp +++ b/TAO/TAO_IDL/be/be_visitor_valuebox/any_op_cs.cpp @@ -66,77 +66,7 @@ be_visitor_valuebox_any_op_cs::visit_valuebox (be_valuebox *node) *os << be_global->core_versioning_end () << be_nl; - be_module *module = 0; - - if (node->is_nested () && - node->defined_in ()->scope_node_type () == AST_Decl::NT_module) - { - module = dynamic_cast<be_module*> (node->defined_in ()); - - if (!module) - { - ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_valuebox_any_op_cs::" - "visit_valuebox - " - "Error parsing nested name\n"), - -1); - } - - // Some compilers handle "any" operators in a namespace corresponding - // to their module, others do not. - *os << "\n\n#if defined (ACE_ANY_OPS_USE_NAMESPACE)\n"; - - be_util::gen_nested_namespace_begin (os, module); - - // emit nested variation of any operators - *os << "/// Copying insertion." << be_nl - << "void" << be_nl - << "operator<<= (" << be_idt_nl - << "::CORBA::Any &_tao_any," << be_nl - << node->local_name () << " *_tao_elem)" << be_uidt_nl - << "{" << be_idt_nl - << "::CORBA::add_ref (_tao_elem);" << be_nl - << "_tao_any <<= &_tao_elem;" << be_uidt_nl - << "}" << be_nl_2; - - *os << "/// Non-copying insertion." << be_nl - << "void" << be_nl - << "operator<<= (" << be_idt_nl - << "::CORBA::Any &_tao_any," << be_nl - << node->local_name () << " **_tao_elem)" << be_uidt_nl - << "{" << be_idt_nl - << "TAO::Any_Impl_T<" << node->local_name () << ">::insert (" - << be_idt_nl - << "_tao_any," << be_nl - << node->local_name () << "::_tao_any_destructor," << be_nl - << node->tc_name ()->last_component () << "," << be_nl - << "*_tao_elem);" << be_uidt << be_uidt_nl - << "}" << be_nl_2; - - *os << "::CORBA::Boolean" << be_nl - << "operator>>= (" << be_idt << be_idt_nl - << "const ::CORBA::Any &_tao_any," << be_nl - << node->local_name () << " *&_tao_elem" << be_uidt_nl - << ")" << be_uidt_nl - << "{" << be_idt_nl - << "return" << be_idt_nl - << "TAO::Any_Impl_T<" << node->local_name () << ">::extract (" - << be_idt << be_idt_nl - << "_tao_any," << be_nl - << node->local_name () << "::_tao_any_destructor," << be_nl - << node->tc_name ()->last_component () << "," << be_nl - << "_tao_elem" << be_uidt_nl - << ");" << be_uidt << be_uidt << be_uidt_nl - << "}" << be_nl_2; - - be_util::gen_nested_namespace_end (os, module); - - // Emit #else. - *os << be_nl_2 - << "#else\n\n"; - } - - *os << be_global->core_versioning_begin () << be_nl; + *os << be_global->anyops_versioning_begin () << be_nl; *os << "/// Copying insertion." << be_nl << "void" << be_nl @@ -181,12 +111,7 @@ be_visitor_valuebox_any_op_cs::visit_valuebox (be_valuebox *node) << ");" << be_uidt << be_uidt << be_uidt_nl << "}" << be_nl_2; - *os << be_global->core_versioning_end () << be_nl; - - if (module != 0) - { - *os << "\n\n#endif"; - } + *os << be_global->anyops_versioning_end () << be_nl; node->cli_stub_any_op_gen (1); return 0; diff --git a/TAO/TAO_IDL/be/be_visitor_valuetype/any_op_ch.cpp b/TAO/TAO_IDL/be/be_visitor_valuetype/any_op_ch.cpp index 6178dacbd7e..66668f3eeb8 100644 --- a/TAO/TAO_IDL/be/be_visitor_valuetype/any_op_ch.cpp +++ b/TAO/TAO_IDL/be/be_visitor_valuetype/any_op_ch.cpp @@ -41,49 +41,7 @@ be_visitor_valuetype_any_op_ch::visit_valuetype (be_valuetype *node) TAO_INSERT_COMMENT (os); - be_module *module = 0; - - if (node->is_nested () && - node->defined_in ()->scope_node_type () == AST_Decl::NT_module) - { - module = dynamic_cast<be_module*> (node->defined_in ()); - - if (!module) - { - ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_valuebox_any_op_ch::" - "visit_valuebox - " - "Error parsing nested name\n"), - -1); - } - - // Some compilers handle "any" operators in a namespace - // corresponding to their module, others do not. - *os << "\n\n#if defined (ACE_ANY_OPS_USE_NAMESPACE)\n"; - - be_util::gen_nested_namespace_begin (os, module); - - // emit nested variation of any operators - *os << macro << " void" - << " operator<<= ( ::CORBA::Any &, " << node->local_name () - << " *); // copying" << be_nl; - - *os << macro << " void" - << " operator<<= ( ::CORBA::Any &, " << node->local_name () - << " **); // non-copying" << be_nl; - - *os << macro << " ::CORBA::Boolean" - << " operator>>= (const ::CORBA::Any &, " - << node->local_name () << " *&);"; - - be_util::gen_nested_namespace_end (os, module); - - // Emit #else. - *os << be_nl_2 - << "#else\n\n"; - } - - *os << be_global->core_versioning_begin () << be_nl; + *os << be_global->anyops_versioning_begin () << be_nl; *os << macro << " void operator<<= (::CORBA::Any &, " << node->name () << " *); // copying" << be_nl; @@ -94,12 +52,7 @@ be_visitor_valuetype_any_op_ch::visit_valuetype (be_valuetype *node) *os << macro << " ::CORBA::Boolean operator>>= (const ::CORBA::Any &, " << node->name () << " *&);"; - *os << be_global->core_versioning_end () << be_nl; - - if (module != 0) - { - *os << "\n\n#endif"; - } + *os << be_global->anyops_versioning_end () << be_nl; node->cli_hdr_any_op_gen (1); return 0; @@ -110,4 +63,3 @@ be_visitor_valuetype_any_op_ch::visit_eventtype (be_eventtype *node) { return this->visit_valuetype (node); } - diff --git a/TAO/TAO_IDL/be/be_visitor_valuetype/any_op_cs.cpp b/TAO/TAO_IDL/be/be_visitor_valuetype/any_op_cs.cpp index 99fe595abb7..ff2829400da 100644 --- a/TAO/TAO_IDL/be/be_visitor_valuetype/any_op_cs.cpp +++ b/TAO/TAO_IDL/be/be_visitor_valuetype/any_op_cs.cpp @@ -65,88 +65,7 @@ be_visitor_valuetype_any_op_cs::visit_valuetype (be_valuetype *node) *os << be_global->core_versioning_end () << be_nl; - be_module *module = 0; - - if (node->is_nested () && - node->defined_in ()->scope_node_type () == AST_Decl::NT_module) - { - module = dynamic_cast<be_module*> (node->defined_in ()); - - if (!module) - { - ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_valuebox_any_op_cs::" - "visit_valuebox - " - "Error parsing nested name\n"), - -1); - } - - // Some compiler handle "any" operators in a namespace corresponding - // to their module, others do not. - *os << "\n\n#if defined (ACE_ANY_OPS_USE_NAMESPACE)\n"; - - be_util::gen_nested_namespace_begin (os, module); - - // emit nested variation of any operators - *os << "/// Copying insertion." << be_nl - << "void" << be_nl - << "operator<<= (" << be_idt_nl - << "::CORBA::Any &_tao_any," << be_nl - << node->local_name () << " *_tao_elem)" - << be_uidt_nl - << "{" << be_idt_nl - << "#ifdef TAO_VALUETYPE_COPYING_ANY_INSERTION_USES_COPY_VALUE" << be_idt_nl - << node->local_name () << " *_tao_copy =" << be_idt_nl - << "_tao_elem ?" << be_idt_nl - << node->local_name () << "::_downcast (_tao_elem->_copy_value ())" << be_nl - << ": 0;" << be_uidt << be_uidt_nl - << "_tao_any <<= &_tao_copy;" << be_uidt_nl - << "#else" << be_idt_nl - << "::CORBA::add_ref (_tao_elem);" << be_nl - << "_tao_any <<= &_tao_elem;" << be_uidt_nl - << "#endif" << be_uidt_nl - << "}" << be_nl_2; - - *os << "/// Non-copying insertion." << be_nl - << "void" << be_nl - << "operator<<= (" << be_idt_nl - << "::CORBA::Any &_tao_any," << be_nl - << node->local_name () << " **_tao_elem)" - << be_uidt_nl - << "{" << be_idt_nl - << "TAO::Any_Impl_T<" << node->local_name () << ">::insert (" - << be_idt_nl - << "_tao_any," << be_nl - << node->local_name () << "::_tao_any_destructor," << be_nl - << node->tc_name ()->last_component () << "," << be_nl - << "*_tao_elem);" << be_uidt - << be_uidt_nl - << "}" << be_nl_2; - - *os << "::CORBA::Boolean" << be_nl - << "operator>>= (" << be_idt << be_idt_nl - << "const ::CORBA::Any &_tao_any," << be_nl - << node->local_name () << " *&_tao_elem" << be_uidt_nl - << ")" << be_uidt_nl - << "{" << be_idt_nl - << "return" << be_idt_nl - << "TAO::Any_Impl_T<" << node->local_name () << ">::extract (" - << be_idt << be_idt_nl - << "_tao_any," << be_nl - << node->local_name () << "::_tao_any_destructor," << be_nl - << node->tc_name ()->last_component () << "," << be_nl - << "_tao_elem" << be_uidt_nl - << ");" << be_uidt << be_uidt << be_uidt_nl - << "}" << be_nl_2; - - be_util::gen_nested_namespace_end (os, module); - - // Emit #else. - *os << be_nl_2 - << "#else\n\n"; - } - - *os << be_global->core_versioning_begin () << be_nl; + *os << be_global->anyops_versioning_begin () << be_nl; *os << "/// Copying insertion." << be_nl << "void" << be_nl @@ -199,12 +118,7 @@ be_visitor_valuetype_any_op_cs::visit_valuetype (be_valuetype *node) << ");" << be_uidt << be_uidt << be_uidt_nl << "}" << be_nl_2; - *os << be_global->core_versioning_end () << be_nl; - - if (module != 0) - { - *os << "\n\n#endif"; - } + *os << be_global->anyops_versioning_end () << be_nl; node->cli_stub_any_op_gen (1); return 0; diff --git a/TAO/TAO_IDL/be/be_visitor_valuetype_fwd/any_op_ch.cpp b/TAO/TAO_IDL/be/be_visitor_valuetype_fwd/any_op_ch.cpp index 6ab9b5a5021..cc7458101c7 100644 --- a/TAO/TAO_IDL/be/be_visitor_valuetype_fwd/any_op_ch.cpp +++ b/TAO/TAO_IDL/be/be_visitor_valuetype_fwd/any_op_ch.cpp @@ -53,50 +53,7 @@ be_visitor_valuetype_fwd_any_op_ch::visit_valuetype_fwd ( TAO_INSERT_COMMENT (os); - be_module *module = 0; - - if (node->is_nested () && - node->defined_in ()->scope_node_type () == AST_Decl::NT_module) - { - module = dynamic_cast<be_module*> (node->defined_in ()); - - if (!module) - { - ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_valuebox_any_op_ch::" - "visit_valuebox - " - "Error parsing nested name\n"), - -1); - } - - // Some compilers handle "any" operators in a namespace - // corresponding to their module, others do not. - *os << "\n\n#if defined (ACE_ANY_OPS_USE_NAMESPACE)\n"; - - *os << be_global->core_versioning_begin () << be_nl; - be_util::gen_nested_namespace_begin (os, module); - - // emit nested variation of any operators - *os << macro << " void" - << " operator<<= ( ::CORBA::Any &, " << node->local_name () - << " *); // copying" << be_nl; - *os << macro << " void" - << " operator<<= ( ::CORBA::Any &, " << node->local_name () - << " **); // non-copying" << be_nl; - *os << macro << " ::CORBA::Boolean" - << " operator>>= (const ::CORBA::Any &, " - << node->local_name () << " *&);"; - - be_util::gen_nested_namespace_end (os, module); - - *os << be_nl - << be_global->core_versioning_end () << be_nl; - - // emit #else - *os << "#else\n\n"; - } - - *os << be_global->core_versioning_begin () << be_nl; + *os << be_global->anyops_versioning_begin () << be_nl; *os << macro << " void" << " operator<<= ( ::CORBA::Any &, " << node->name () @@ -108,11 +65,7 @@ be_visitor_valuetype_fwd_any_op_ch::visit_valuetype_fwd ( << " operator>>= (const ::CORBA::Any &, " << node->name () << " *&);"; - *os << be_global->core_versioning_end () << be_nl; - if (module != 0) - { - *os << "\n\n#endif"; - } + *os << be_global->anyops_versioning_end () << be_nl; node->cli_hdr_any_op_gen (1); return 0; @@ -123,4 +76,3 @@ be_visitor_valuetype_fwd_any_op_ch::visit_eventtype_fwd (be_eventtype_fwd *node) { return this->visit_valuetype_fwd (node); } - diff --git a/TAO/TAO_IDL/be_include/be_global.h b/TAO/TAO_IDL/be_include/be_global.h index b7f5e351666..82991fabf8b 100644 --- a/TAO/TAO_IDL/be_include/be_global.h +++ b/TAO/TAO_IDL/be_include/be_global.h @@ -437,6 +437,12 @@ public: /// related code. const char * core_versioning_end (void) const; + /// Get text that opens a "versioned" namespace for CORBA::Any operators + const char *anyops_versioning_begin () const; + + /// Get text that closes a "versioned" namespace for CORBA::Any operators + const char *anyops_versioning_end () const; + // = Set and get methods for different file name endings. /// Set the client_hdr_ending. @@ -981,6 +987,12 @@ private: /// orbsvcs related code. ACE_CString core_versioning_end_; + /// Text that opens a "versioned" namespace for CORBA::Any operators + ACE_CString anyops_versioning_begin_; + + /// Text that closes a "versioned" namespace for CORBA::Any operators + ACE_CString anyops_versioning_end_; + /// Text that opens a "versioned" namespace. ACE_CString versioning_begin_; diff --git a/TAO/tao/AnyTypeCode/Any.cpp b/TAO/tao/AnyTypeCode/Any.cpp index b74124189a3..b152037cf80 100644 --- a/TAO/tao/AnyTypeCode/Any.cpp +++ b/TAO/tao/AnyTypeCode/Any.cpp @@ -362,10 +362,8 @@ CORBA::Any::operator<<= (CORBA::Any::from_wstring ws) // Insertion of the other basic types. -#ifdef ACE_ANY_OPS_USE_NAMESPACE namespace CORBA { -#endif void operator<<= (CORBA::Any &any, CORBA::Short s) @@ -771,9 +769,7 @@ operator >>= (const CORBA::Any &any, std::wstring &str) } #endif -#ifdef ACE_ANY_OPS_USE_NAMESPACE } -#endif // ================================================================ // Any_Impl_T template specializations. diff --git a/TAO/tao/AnyTypeCode/Any.h b/TAO/tao/AnyTypeCode/Any.h index 2f644c9ad78..e41c3166dc3 100644 --- a/TAO/tao/AnyTypeCode/Any.h +++ b/TAO/tao/AnyTypeCode/Any.h @@ -280,10 +280,8 @@ operator<< (std::ostream &, const CORBA::Any &); #endif /* GEN_OSTREAM_OPS */ -#ifdef ACE_ANY_OPS_USE_NAMESPACE namespace CORBA { -#endif /// Typesafe insertion. @@ -346,9 +344,7 @@ TAO_AnyTypeCode_Export CORBA::Boolean operator>>= (const CORBA::Any &, std::wstring &); #endif -#ifdef ACE_ANY_OPS_USE_NAMESPACE } -#endif TAO_END_VERSIONED_NAMESPACE_DECL @@ -358,10 +354,8 @@ TAO_END_VERSIONED_NAMESPACE_DECL TAO_BEGIN_VERSIONED_NAMESPACE_DECL -#ifdef ACE_ANY_OPS_USE_NAMESPACE namespace CORBA { -#endif /// Copying versions of insertion operators for basic types /// must also be defined for CORBA::Any_var. @@ -426,10 +420,7 @@ TAO_AnyTypeCode_Export CORBA::Boolean operator>>= (const CORBA::Any_var &, CORBA::Any::to_wstring); TAO_AnyTypeCode_Export CORBA::Boolean operator>>= (const CORBA::Any_var &, CORBA::Any::to_object); - -#ifdef ACE_ANY_OPS_USE_NAMESPACE } -#endif TAO_END_VERSIONED_NAMESPACE_DECL diff --git a/TAO/tao/AnyTypeCode/Any.inl b/TAO/tao/AnyTypeCode/Any.inl index bdb65512148..d3eae42553c 100644 --- a/TAO/tao/AnyTypeCode/Any.inl +++ b/TAO/tao/AnyTypeCode/Any.inl @@ -85,10 +85,8 @@ CORBA::Any_var::ptr (void) const // CORBA::Any_var insertion operators // ************************************************************* -#ifdef ACE_ANY_OPS_USE_NAMESPACE namespace CORBA { -#endif ACE_INLINE void operator <<= (CORBA::Any_var &lhs, CORBA::Short rhs) @@ -316,9 +314,7 @@ operator >>= (const CORBA::Any_var &lhs, CORBA::Any::to_object rhs) return lhs.in () >>= rhs; } -#ifdef ACE_ANY_OPS_USE_NAMESPACE } -#endif // ************************************************************* // Inline operations for class CORBA::Any_out diff --git a/TAO/tao/AnyTypeCode/ExceptionA.cpp b/TAO/tao/AnyTypeCode/ExceptionA.cpp index 301d70b5f49..7201cce9be4 100644 --- a/TAO/tao/AnyTypeCode/ExceptionA.cpp +++ b/TAO/tao/AnyTypeCode/ExceptionA.cpp @@ -77,11 +77,8 @@ namespace TAO // ======================================================================= -#ifdef ACE_ANY_OPS_USE_NAMESPACE namespace CORBA { -#endif - // Insertion of CORBA::Exception - copying. void @@ -105,9 +102,7 @@ operator<<= (CORBA::Any &any, CORBA::Exception *exception) exception); } -#ifdef ACE_ANY_OPS_USE_NAMESPACE } -#endif TAO_END_VERSIONED_NAMESPACE_DECL diff --git a/TAO/tao/AnyTypeCode/ExceptionA.h b/TAO/tao/AnyTypeCode/ExceptionA.h index 7cb37d60f87..8a36f21990e 100644 --- a/TAO/tao/AnyTypeCode/ExceptionA.h +++ b/TAO/tao/AnyTypeCode/ExceptionA.h @@ -32,19 +32,11 @@ namespace CORBA { class Any; typedef Any *Any_ptr; -} - -#ifdef ACE_ANY_OPS_USE_NAMESPACE -namespace CORBA -{ -#endif TAO_AnyTypeCode_Export void operator<<= (CORBA::Any &, const CORBA::Exception &); TAO_AnyTypeCode_Export void operator<<= (CORBA::Any &, CORBA::Exception *); -#ifdef ACE_ANY_OPS_USE_NAMESPACE } -#endif TAO_END_VERSIONED_NAMESPACE_DECL diff --git a/TAO/tao/AnyTypeCode/WrongTransactionA.cpp b/TAO/tao/AnyTypeCode/WrongTransactionA.cpp index bd3a7c61878..c2b44013cc1 100644 --- a/TAO/tao/AnyTypeCode/WrongTransactionA.cpp +++ b/TAO/tao/AnyTypeCode/WrongTransactionA.cpp @@ -88,10 +88,8 @@ namespace TAO } } -#ifdef ACE_ANY_OPS_USE_NAMESPACE namespace CORBA { -#endif // Copying insertion. void operator<<= ( @@ -148,8 +146,6 @@ CORBA::Boolean operator>>= ( ); } -#ifdef ACE_ANY_OPS_USE_NAMESPACE } -#endif TAO_END_VERSIONED_NAMESPACE_DECL diff --git a/TAO/tao/AnyTypeCode/WrongTransactionA.h b/TAO/tao/AnyTypeCode/WrongTransactionA.h index c7497e18426..ea41d49874c 100644 --- a/TAO/tao/AnyTypeCode/WrongTransactionA.h +++ b/TAO/tao/AnyTypeCode/WrongTransactionA.h @@ -75,19 +75,15 @@ namespace TAO // TAO_IDL - Generated from // be\be_visitor_exception/any_op_ch.cpp:52 -#ifdef ACE_ANY_OPS_USE_NAMESPACE namespace CORBA { -#endif TAO_AnyTypeCode_Export void operator<<= (CORBA::Any &, const CORBA::WrongTransaction &); // copying version TAO_AnyTypeCode_Export void operator<<= (CORBA::Any &, CORBA::WrongTransaction*); // noncopying version TAO_AnyTypeCode_Export CORBA::Boolean operator>>= (const CORBA::Any &, CORBA::WrongTransaction *&); // deprecated TAO_AnyTypeCode_Export CORBA::Boolean operator>>= (const CORBA::Any &, const CORBA::WrongTransaction *&); -#ifdef ACE_ANY_OPS_USE_NAMESPACE } -#endif // TAO_IDL - Generated from // be\be_codegen.cpp:955 @@ -100,5 +96,3 @@ TAO_END_VERSIONED_NAMESPACE_DECL #include /**/ "ace/post.h" #endif /* ifndef */ - - diff --git a/TAO/tao/RTCORBA/RT_ProtocolPropertiesA.cpp b/TAO/tao/RTCORBA/RT_ProtocolPropertiesA.cpp index 0316299507a..24a1656185c 100644 --- a/TAO/tao/RTCORBA/RT_ProtocolPropertiesA.cpp +++ b/TAO/tao/RTCORBA/RT_ProtocolPropertiesA.cpp @@ -56,12 +56,6 @@ namespace RTCORBA // TAO_IDL - Generated from // be\be_visitor_interface/any_op_cs.cpp:51 -TAO_END_VERSIONED_NAMESPACE_DECL - - -TAO_BEGIN_VERSIONED_NAMESPACE_DECL - - namespace TAO { @@ -92,67 +86,9 @@ namespace TAO return false; } } -TAO_END_VERSIONED_NAMESPACE_DECL - - -TAO_BEGIN_VERSIONED_NAMESPACE_DECL - - - - -#if defined (ACE_ANY_OPS_USE_NAMESPACE) - -namespace RTCORBA -{ - - - /// Copying insertion. - void - operator<<= ( - ::CORBA::Any &_tao_any, - ProtocolProperties_ptr _tao_elem) - { - ProtocolProperties_ptr _tao_objptr = - ProtocolProperties::_duplicate (_tao_elem); - _tao_any <<= &_tao_objptr; - } - - /// Non-copying insertion. - void - operator<<= ( - ::CORBA::Any &_tao_any, - ProtocolProperties_ptr *_tao_elem) - { - TAO::Any_Impl_T<ProtocolProperties>::insert ( - _tao_any, - ProtocolProperties::_tao_any_destructor, - _tc_ProtocolProperties, - *_tao_elem); - } - - ::CORBA::Boolean - operator>>= ( - const ::CORBA::Any &_tao_any, - ProtocolProperties_ptr &_tao_elem) - { - return - TAO::Any_Impl_T<ProtocolProperties>::extract ( - _tao_any, - ProtocolProperties::_tao_any_destructor, - _tc_ProtocolProperties, - _tao_elem); - } -} - -#else - - -TAO_END_VERSIONED_NAMESPACE_DECL - - -TAO_BEGIN_VERSIONED_NAMESPACE_DECL +namespace CORBA { /// Copying insertion. void @@ -191,16 +127,6 @@ operator>>= ( _tao_elem); } -TAO_END_VERSIONED_NAMESPACE_DECL - - -TAO_BEGIN_VERSIONED_NAMESPACE_DECL - - - - -#endif +} TAO_END_VERSIONED_NAMESPACE_DECL - - diff --git a/TAO/tao/RTCORBA/RT_ProtocolPropertiesA.h b/TAO/tao/RTCORBA/RT_ProtocolPropertiesA.h index b96446ca92a..01d9fe52e01 100644 --- a/TAO/tao/RTCORBA/RT_ProtocolPropertiesA.h +++ b/TAO/tao/RTCORBA/RT_ProtocolPropertiesA.h @@ -62,37 +62,11 @@ namespace RTCORBA -#if defined (ACE_ANY_OPS_USE_NAMESPACE) - -namespace RTCORBA -{ - TAO_RTCORBA_Export void operator<<= ( ::CORBA::Any &, ProtocolProperties_ptr); // copying - TAO_RTCORBA_Export void operator<<= ( ::CORBA::Any &, ProtocolProperties_ptr *); // non-copying - TAO_RTCORBA_Export ::CORBA::Boolean operator>>= (const ::CORBA::Any &, ProtocolProperties_ptr &); -} - -#else - - - -TAO_END_VERSIONED_NAMESPACE_DECL - - -TAO_BEGIN_VERSIONED_NAMESPACE_DECL - +namespace CORBA { TAO_RTCORBA_Export void operator<<= (::CORBA::Any &, RTCORBA::ProtocolProperties_ptr); // copying TAO_RTCORBA_Export void operator<<= (::CORBA::Any &, RTCORBA::ProtocolProperties_ptr *); // non-copying TAO_RTCORBA_Export ::CORBA::Boolean operator>>= (const ::CORBA::Any &, RTCORBA::ProtocolProperties_ptr &); -TAO_END_VERSIONED_NAMESPACE_DECL - - -TAO_BEGIN_VERSIONED_NAMESPACE_DECL - - - - -#endif - +} TAO_END_VERSIONED_NAMESPACE_DECL 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 |