From 8c7cc4d18ddf28a18a01fef53aaea68422b2fff2 Mon Sep 17 00:00:00 2001 From: parsons Date: Thu, 11 Aug 2011 18:44:35 +0000 Subject: ChangeLogTag: Thu Aug 11 18:40:36 UTC 2011 Jeff Parsons --- ChangeLog | 61 ++++++++++++++++++++++ TAO-INSTALL.html | 7 ++- TAO_IDL/ast/ast_interface.cpp | 6 --- TAO_IDL/be/be_global.cpp | 18 +++++++ TAO_IDL/be/be_util.cpp | 5 ++ TAO_IDL/be/be_visitor_arg_traits.cpp | 13 ----- TAO_IDL/be/be_visitor_array/array_cs.cpp | 8 +-- TAO_IDL/be/be_visitor_interface/interface_cs.cpp | 8 +-- TAO_IDL/be/be_visitor_root/root_ch.cpp | 15 ++++-- TAO_IDL/be/be_visitor_root/root_cs.cpp | 15 ++++-- TAO_IDL/be/be_visitor_sequence/cdr_op_cs.cpp | 3 +- TAO_IDL/be/be_visitor_structure/cdr_op_cs.cpp | 10 ++-- TAO_IDL/be/be_visitor_structure/structure_cs.cpp | 16 +++--- TAO_IDL/be/be_visitor_traits.cpp | 43 ++++++++------- TAO_IDL/be_include/be_global.h | 9 ++++ tao/IFR_Client/IFR_Client.mpc | 5 +- tao/Object_KeyC.h | 6 +-- .../Sequence_Unit_Tests/string_sequence_tester.hpp | 2 +- 18 files changed, 171 insertions(+), 79 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9afc7f9266b..27c860120d9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,64 @@ +Thu Aug 11 18:40:36 UTC 2011 Jeff Parsons + + * Merged main trunk into the alt_mapping_SAIC branch again. + + Mon Aug 8 14:26:30 UTC 2011 Johnny Willemsen + + * TAO_IDL/be/be_visitor_interface/interface_cs.cpp: + Don't generate arg traits if they are disabled + + Mon Aug 8 09:01:55 UTC 2011 Johnny Willemsen + + * TAO_IDL/be/be_codegen.cpp: + * TAO_IDL/be/be_global.cpp: + * TAO_IDL/be/be_util.cpp: + * TAO_IDL/be/be_visitor_connector/connector_dds_exh.cpp: + * TAO_IDL/be/be_visitor_root/root_ch.cpp: + * TAO_IDL/be/be_visitor_root/root_cs.cpp: + * TAO_IDL/be/be_visitor_sequence/cdr_op_cs.cpp: + * TAO_IDL/be/be_visitor_structure/cdr_op_cs.cpp: + * TAO_IDL/be/be_visitor_structure/structure_cs.cpp: + * TAO_IDL/be/be_visitor_traits.cpp: + * TAO_IDL/be_include/be_global.h: + Added support for -Scdr which suppresses the CDR streaming operations. + This safes footprint when we are using IDL defined types, but these + are not intended to be send through remote CORBA interfaces + + Thu Aug 4 15:47:33 UTC 2011 Phil Mesnier + + * TAO-INSTALL.html: + + Added note about building for Android. + + * tests/Sequence_Unit_Tests/string_sequence_tester.hpp: + + Additional compiler macro added to build on Android. + + Thanks to Trevor Fields of OCI for doing the heavy lifting + for porting TAO to Android. + + Sat Jul 23 22:40:39 UTC 2011 Phil Mesnier + + * TAO_IDL/be/be_visitor_arg_traits.cpp: + + Fuzz fix. + + Sat Jul 23 14:55:15 UTC 2011 Phil Mesnier + + * TAO/tao/IFR_Client/IFR_Client.mpc + + Fixed dependencies on new IFR_Client_Skel project so it + builds on windows. + + Wed Jul 20 18:53:29 UTC 2011 Jeff Parsons + + * TAO_IDL/ast/ast_interface: + + Removed an unnecessary 'seen' flag for arg traits, it was + not only unneeded, but also pulling in #includes in the + *S.h file that wouldn't compile if the IDL contains + valuetypes and no non-local interfaces. + Wed Jul 20 16:07:43 UTC 2011 Jeff Parsons * Fixes to elimiate compile errors due to merge. diff --git a/TAO-INSTALL.html b/TAO-INSTALL.html index d8b5259f8c3..256d8dc5b61 100644 --- a/TAO-INSTALL.html +++ b/TAO-INSTALL.html @@ -203,11 +203,14 @@ must support implicit templates.

With cross compilation you build on the so called host system for a certain target system. The host system can for example be linux and the target -can for example be VxWorks, LynxOS or Linux. +can for example be VxWorks, LynxOS, or Linux. If you are building TAO for a VxWorks target, please see the detailed instructions for building and installing ACE and TAO in $ACE_ROOT/ACE-INSTALL.html.

+href="../ACE/ACE-INSTALL.html#vxworks">$ACE_ROOT/ACE-INSTALL.html.

+

If you are building TAO for an Android target, please see the notes +for building and installing ACE and TAO in $ACE_ROOT/ACE-INSTALL.html.

Cross-compiling TAO is not much different than building it for a self-host. The one major difference is that TAO's IDL compiler diff --git a/TAO_IDL/ast/ast_interface.cpp b/TAO_IDL/ast/ast_interface.cpp index a6bcd815c73..4aafc06dd89 100644 --- a/TAO_IDL/ast/ast_interface.cpp +++ b/TAO_IDL/ast/ast_interface.cpp @@ -131,12 +131,6 @@ AST_Interface::AST_Interface (UTL_ScopedName *n, this->size_type (AST_Type::VARIABLE); // always the case this->has_constructor (true); // always the case - // Check for non-local and not a dummy for a fwd decl. - if (! local && nih != -1) - { - idl_global->non_local_iface_seen_ = true; - } - // Enqueue the param holders (if any) for later destruction. // By the time our destroy() is called, it will be too late // to iterate over pd_inherits. diff --git a/TAO_IDL/be/be_global.cpp b/TAO_IDL/be/be_global.cpp index 8d8a3e8c4a4..2234c0eb162 100644 --- a/TAO_IDL/be/be_global.cpp +++ b/TAO_IDL/be/be_global.cpp @@ -91,6 +91,7 @@ BE_GlobalData::BE_GlobalData (void) skel_output_dir_ (0), anyop_output_dir_ (0), any_support_ (true), + cdr_support_ (true), tc_support_ (true), obv_opt_accessor_ (0), gen_impl_files_ (false), @@ -1521,6 +1522,18 @@ BE_GlobalData::any_support (void) const return this->any_support_; } +void +BE_GlobalData::cdr_support (bool val) +{ + this->cdr_support_ = val; +} + +bool +BE_GlobalData::cdr_support (void) const +{ + return this->cdr_support_; +} + void BE_GlobalData::tc_support (bool val) { @@ -3351,6 +3364,11 @@ BE_GlobalData::parse_args (long &i, char **av) // No stub inline. be_global->gen_client_stub (false); } + else if (av[i][3] == 'd' && av[i][4] == 'r') + { + // No cdr support. + be_global->cdr_support (false); + } else { ACE_ERROR (( diff --git a/TAO_IDL/be/be_util.cpp b/TAO_IDL/be/be_util.cpp index 29b7ab2402b..7bce09bc700 100644 --- a/TAO_IDL/be/be_util.cpp +++ b/TAO_IDL/be/be_util.cpp @@ -791,6 +791,11 @@ be_util::usage (void) ACE_TEXT (" for local interfaces") ACE_TEXT (" (support enabled by default)\n") )); + ACE_DEBUG (( + LM_DEBUG, + ACE_TEXT (" -Scdr\t\t\tsuppress CDR support") + ACE_TEXT (" (support enabled by default)\n") + )); ACE_DEBUG (( LM_DEBUG, ACE_TEXT (" -Sat\t\t\tsuppress arg traits") diff --git a/TAO_IDL/be/be_visitor_arg_traits.cpp b/TAO_IDL/be/be_visitor_arg_traits.cpp index 3f5dd300306..efd9a9cd6fd 100644 --- a/TAO_IDL/be/be_visitor_arg_traits.cpp +++ b/TAO_IDL/be/be_visitor_arg_traits.cpp @@ -678,17 +678,6 @@ be_visitor_arg_traits::visit_sequence (be_sequence *node) *os << be_nl_2 << "// TAO_IDL - Generated from" << be_nl << "// " << __FILE__ << ":" << __LINE__; - AST_Type *bt = node->base_type ()->unaliased_type (); - - std::string guard_suffix = - std::string ("Seq_") + std::string (this->S_) + std::string ("arg_traits"); - - // The guard should be generated to prevent multiple declarations, - // since a sequence of a given element type may be typedef'd - // more than once. - - os->gen_ifdef_macro (bt->flat_name (), guard_suffix.c_str (), false); - bool use_vec = (node->unbounded () && be_global->alt_mapping ()); UTL_ScopedName *sn = alias->name (); @@ -705,8 +694,6 @@ be_visitor_arg_traits::visit_sequence (be_sequence *node) << "{" << be_nl << "};"; - os->gen_endif (); - return 0; } diff --git a/TAO_IDL/be/be_visitor_array/array_cs.cpp b/TAO_IDL/be/be_visitor_array/array_cs.cpp index d1b40071784..70bcfd15cbb 100644 --- a/TAO_IDL/be/be_visitor_array/array_cs.cpp +++ b/TAO_IDL/be/be_visitor_array/array_cs.cpp @@ -147,8 +147,8 @@ int be_visitor_array_cs::visit_array (be_array *node) // free method. *os << "void" << be_nl << fname << "_free (" << be_idt << be_idt_nl - << fname << "_slice *_tao_slice" << be_uidt_nl - << ")" << be_uidt_nl; + << fname << "_slice *_tao_slice)" << be_uidt + << be_uidt_nl; *os << "{" << be_idt_nl; *os << "delete [] _tao_slice;" << be_uidt_nl; *os << "}" << be_nl_2; @@ -157,8 +157,8 @@ int be_visitor_array_cs::visit_array (be_array *node) *os << "void " << be_nl; *os << fname << "_copy (" << be_idt << be_idt_nl << fname << "_slice * _tao_to," << be_nl - << "const " << fname << "_slice *_tao_from" << be_uidt_nl - << ")" << be_uidt_nl; + << "const " << fname << "_slice *_tao_from)" << be_uidt + << be_uidt_nl; *os << "{" << be_idt_nl; *os << "// Copy each individual element." << be_nl; diff --git a/TAO_IDL/be/be_visitor_interface/interface_cs.cpp b/TAO_IDL/be/be_visitor_interface/interface_cs.cpp index 0cfcf428e3d..cd7b65a2499 100644 --- a/TAO_IDL/be/be_visitor_interface/interface_cs.cpp +++ b/TAO_IDL/be/be_visitor_interface/interface_cs.cpp @@ -47,11 +47,11 @@ be_visitor_interface_cs::visit_interface (be_interface *node) AST_Component *c = AST_Component::narrow_from_decl (node); TAO_OutStream *os = this->ctx_->stream (); - *os << be_nl_2 << "// TAO_IDL - Generated from" << be_nl - << "// " << __FILE__ << ":" << __LINE__; - - if (node->is_defined ()) + if (node->is_defined () && be_global->gen_arg_traits ()) { + *os << be_nl_2 << "// TAO_IDL - Generated from" << be_nl + << "// " << __FILE__ << ":" << __LINE__; + *os << be_nl_2 << "// Traits specializations for " << node->name () << "."; diff --git a/TAO_IDL/be/be_visitor_root/root_ch.cpp b/TAO_IDL/be/be_visitor_root/root_ch.cpp index 0a1dec62d25..ed167664904 100644 --- a/TAO_IDL/be/be_visitor_root/root_ch.cpp +++ b/TAO_IDL/be/be_visitor_root/root_ch.cpp @@ -370,9 +370,16 @@ be_visitor_root_ch::gen_any_ops (be_root *node) int be_visitor_root_ch::gen_cdr_ops (be_root *node) { - be_visitor_context ctx = *this->ctx_; - ctx.state (TAO_CodeGen::TAO_ROOT_CDR_OP_CH); - be_visitor_root_cdr_op visitor (&ctx); - return node->accept (&visitor); + int status = 0; + + if (be_global->cdr_support ()) + { + be_visitor_context ctx = *this->ctx_; + ctx.state (TAO_CodeGen::TAO_ROOT_CDR_OP_CH); + be_visitor_root_cdr_op visitor (&ctx); + status = node->accept (&visitor); + } + + return status; } diff --git a/TAO_IDL/be/be_visitor_root/root_cs.cpp b/TAO_IDL/be/be_visitor_root/root_cs.cpp index 3a293267f84..8548f3fb939 100644 --- a/TAO_IDL/be/be_visitor_root/root_cs.cpp +++ b/TAO_IDL/be/be_visitor_root/root_cs.cpp @@ -136,10 +136,17 @@ be_visitor_root_cs::gen_any_ops (be_root *node) int be_visitor_root_cs::gen_cdr_ops (be_root *node) { - be_visitor_context ctx = *this->ctx_; - ctx.state (TAO_CodeGen::TAO_ROOT_CDR_OP_CS); - be_visitor_root_cdr_op visitor (&ctx); - return node->accept (&visitor); + int status = 0; + + if (be_global->cdr_support ()) + { + be_visitor_context ctx = *this->ctx_; + ctx.state (TAO_CodeGen::TAO_ROOT_CDR_OP_CS); + be_visitor_root_cdr_op visitor (&ctx); + status = node->accept (&visitor); + } + + return status; } diff --git a/TAO_IDL/be/be_visitor_sequence/cdr_op_cs.cpp b/TAO_IDL/be/be_visitor_sequence/cdr_op_cs.cpp index 1aefe56d349..2e216463ee7 100644 --- a/TAO_IDL/be/be_visitor_sequence/cdr_op_cs.cpp +++ b/TAO_IDL/be/be_visitor_sequence/cdr_op_cs.cpp @@ -75,8 +75,7 @@ be_visitor_sequence_cdr_op_cs::visit_sequence (be_sequence *node) int status = this->gen_anonymous_base_type ( be_type::narrow_from_decl (bt), - TAO_CodeGen::TAO_ROOT_CDR_OP_CS - ); + TAO_CodeGen::TAO_ROOT_CDR_OP_CS); if (status == -1) { diff --git a/TAO_IDL/be/be_visitor_structure/cdr_op_cs.cpp b/TAO_IDL/be/be_visitor_structure/cdr_op_cs.cpp index b294dfa6ca0..10e4fcad29b 100644 --- a/TAO_IDL/be/be_visitor_structure/cdr_op_cs.cpp +++ b/TAO_IDL/be/be_visitor_structure/cdr_op_cs.cpp @@ -49,7 +49,7 @@ be_visitor_structure_cdr_op_cs::visit_structure (be_structure *node) TAO_OutStream *os = this->ctx_->stream (); *os << be_nl_2 << "// TAO_IDL - Generated from" << be_nl - << "// " << __FILE__ << ":" << __LINE__ << be_nl_2; + << "// " << __FILE__ << ":" << __LINE__ << be_nl; *os << be_global->core_versioning_begin () << be_nl; @@ -58,8 +58,8 @@ be_visitor_structure_cdr_op_cs::visit_structure (be_structure *node) *os << "::CORBA::Boolean operator<< (" << be_idt << be_idt_nl << "TAO_OutputCDR &strm," << be_nl - << "const " << node->name () << " &_tao_aggregate" << be_uidt_nl - << ")" << be_uidt_nl + << "const " << node->name () << " &_tao_aggregate)" << be_uidt + << be_uidt_nl << "{" << be_idt_nl; be_visitor_context new_ctx (*this->ctx_); @@ -99,8 +99,7 @@ be_visitor_structure_cdr_op_cs::visit_structure (be_structure *node) *os << "_tao_aggregate"; } - *os << be_uidt_nl - << ")" << be_uidt_nl + *os << ")" << be_uidt << be_uidt_nl << "{" << be_idt_nl; if (node->is_local ()) @@ -144,6 +143,7 @@ be_visitor_structure_cdr_op_cs::visit_structure (be_structure *node) *os << be_global->core_versioning_end () << be_nl; node->cli_stub_cdr_op_gen (true); + return 0; } diff --git a/TAO_IDL/be/be_visitor_structure/structure_cs.cpp b/TAO_IDL/be/be_visitor_structure/structure_cs.cpp index 403fe774109..2e8723d799c 100644 --- a/TAO_IDL/be/be_visitor_structure/structure_cs.cpp +++ b/TAO_IDL/be/be_visitor_structure/structure_cs.cpp @@ -49,19 +49,19 @@ be_visitor_structure_cs::visit_structure (be_structure *node) } } - TAO_OutStream *os = this->ctx_->stream (); - - *os << be_nl_2; - *os << "// TAO_IDL - Generated from " << be_nl - << "// " << __FILE__ << ":" << __LINE__ << be_nl_2; - if (be_global->any_support ()) { + TAO_OutStream *os = this->ctx_->stream (); + + *os << be_nl_2; + *os << "// TAO_IDL - Generated from " << be_nl + << "// " << __FILE__ << ":" << __LINE__ << be_nl_2; + *os << "void " << be_nl << node->name () << "::_tao_any_destructor (" << be_idt << be_idt_nl - << "void *_tao_void_pointer" << be_uidt_nl - << ")" << be_uidt_nl + << "void *_tao_void_pointer)" << be_uidt + << be_uidt_nl << "{" << be_idt_nl << node->local_name () << " *_tao_tmp_pointer =" << be_idt_nl << "static_cast<" << node->local_name () diff --git a/TAO_IDL/be/be_visitor_traits.cpp b/TAO_IDL/be/be_visitor_traits.cpp index 0f0fa5c33f2..cb2616c223c 100644 --- a/TAO_IDL/be/be_visitor_traits.cpp +++ b/TAO_IDL/be/be_visitor_traits.cpp @@ -53,32 +53,35 @@ be_visitor_traits::~be_visitor_traits (void) int be_visitor_traits::visit_root (be_root *node) { - TAO_OutStream *os = this->ctx_->stream (); + if (be_global->gen_arg_traits ()) + { + TAO_OutStream *os = this->ctx_->stream (); - *os << be_nl_2 - << "// TAO_IDL - Generated from" << be_nl - << "// " << __FILE__ << ":" << __LINE__; + *os << be_nl_2 + << "// TAO_IDL - Generated from" << be_nl + << "// " << __FILE__ << ":" << __LINE__; - *os << be_nl - << be_global->core_versioning_begin (); + *os << be_nl + << be_global->core_versioning_begin (); - *os << be_nl - << "// Traits specializations." << be_nl - << "namespace TAO" << be_nl - << "{" << be_idt; + *os << be_nl + << "// Traits specializations." << be_nl + << "namespace TAO" << be_nl + << "{" << be_idt; - if (this->visit_scope (node) == -1) - { - ACE_ERROR_RETURN ((LM_ERROR, - "(%N:%l) be_visitor_traits::" - "visit_root - visit scope failed\n"), - -1); - } + if (this->visit_scope (node) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_traits::" + "visit_root - visit scope failed\n"), + -1); + } - *os << be_uidt_nl - << "}"; + *os << be_uidt_nl + << "}"; - *os << be_global->core_versioning_end () << be_nl; + *os << be_global->core_versioning_end () << be_nl; + } return 0; } diff --git a/TAO_IDL/be_include/be_global.h b/TAO_IDL/be_include/be_global.h index 80c01149d15..a7c0397d4ed 100644 --- a/TAO_IDL/be_include/be_global.h +++ b/TAO_IDL/be_include/be_global.h @@ -593,6 +593,12 @@ public: /// Check Any support. bool any_support (void) const; + /// Set cdr support. + void cdr_support (bool); + + /// Check cdr support. + bool cdr_support (void) const; + /// Set TypeCode support. void tc_support (bool); @@ -1028,6 +1034,9 @@ private: /// do we support Any operators? bool any_support_; + /// do we support cdr? + bool cdr_support_; + /// do we support typecodes? bool tc_support_; diff --git a/tao/IFR_Client/IFR_Client.mpc b/tao/IFR_Client/IFR_Client.mpc index e6f5254ab15..1d50a825948 100644 --- a/tao/IFR_Client/IFR_Client.mpc +++ b/tao/IFR_Client/IFR_Client.mpc @@ -63,9 +63,8 @@ project(IFR_Client) : taolib, tao_output, install, anytypecode, taoidldefaults { } } -project(IFR_Client_skel) : taolib, tao_output, install, taoidldefaults, portableserver { - after += IFR_Client - libs += TAO_IFR_Client +project(IFR_Client_skel) : ifr_client, taolib, tao_output, install, anytypecode, taoidldefaults, portableserver{ + after += *idl sharedname = TAO_IFR_Client_skel dynamicflags += TAO_IFR_CLIENT_SKEL_BUILD_DLL diff --git a/tao/Object_KeyC.h b/tao/Object_KeyC.h index 547fb6bf6f2..0bb3803c56a 100644 --- a/tao/Object_KeyC.h +++ b/tao/Object_KeyC.h @@ -28,8 +28,8 @@ // TAO_IDL - Generated from // w:\tao\tao_idl\be\be_codegen.cpp:150 -#ifndef _TAO_PIDL_OBJECT_KEYC_13ALDY_H_ -#define _TAO_PIDL_OBJECT_KEYC_13ALDY_H_ +#ifndef _TAO_PIDL_OBJECT_KEYC_NYHQMR_H_ +#define _TAO_PIDL_OBJECT_KEYC_NYHQMR_H_ #include /**/ "ace/pre.h" @@ -114,7 +114,7 @@ TAO_BEGIN_VERSIONED_NAMESPACE_DECL // TAO_IDL - Generated from -// w:\tao\tao_idl\be\be_visitor_traits.cpp:60 +// w:\tao\tao_idl\be\be_visitor_traits.cpp:62 TAO_END_VERSIONED_NAMESPACE_DECL diff --git a/tests/Sequence_Unit_Tests/string_sequence_tester.hpp b/tests/Sequence_Unit_Tests/string_sequence_tester.hpp index 6ebcf3d7018..cfe469708a5 100644 --- a/tests/Sequence_Unit_Tests/string_sequence_tester.hpp +++ b/tests/Sequence_Unit_Tests/string_sequence_tester.hpp @@ -62,7 +62,7 @@ struct string_sequence_test_helpers } }; -#if defined(_GLIBCPP_VERSION) && !defined(_GLIBCPP_USE_WCHAR_T) +#if defined(_GLIBCPP_VERSION) && !defined(_GLIBCPP_USE_WCHAR_T) && !defined(TAO_LACKS_WCHAR_CXX_STDLIB) # define TAO_LACKS_WCHAR_CXX_STDLIB #endif -- cgit v1.2.1