diff options
Diffstat (limited to 'TAO')
-rw-r--r-- | TAO/ChangeLog-99c | 22 | ||||
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_array/cdr_op_ch.cpp | 28 | ||||
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_field/cdr_op_cs.cpp | 4 | ||||
-rw-r--r-- | TAO/TAO_IDL/util/utl_global.cpp | 2 | ||||
-rw-r--r-- | TAO/tao/CDR.h | 2 | ||||
-rw-r--r-- | TAO/tao/CDR.i | 6 |
6 files changed, 57 insertions, 7 deletions
diff --git a/TAO/ChangeLog-99c b/TAO/ChangeLog-99c index 93b29d252bc..fb889e8fba9 100644 --- a/TAO/ChangeLog-99c +++ b/TAO/ChangeLog-99c @@ -1,3 +1,25 @@ +Sat Feb 6 23:16:14 1999 Carlos O'Ryan <coryan@cs.wustl.edu> + + * TAO_IDL/util/utl_global.cpp: + Activated compiled marshaling by default. IRIX/MIPSpro and + Linux/EGCS are happy, and so seems Solaris/CC; the old behavior + can be invoked using the -Ge IDL compiler option, or by setting + the TAO_IDLFLAGS environment variable to "-Ge". + + * TAO_IDL/be/be_visitor_field/cdr_op_cs.cpp: + A ACE_static_cast was used to remove constness, it should be + ACE_const_cast. + + * TAO_IDL/be/be_visitor_array/cdr_op_ch.cpp: + Sometimes the array name is prefixed by an _, but the operator + << and >> for CDR streams was generated by appending the _ to + the complete name, not just the base name; this made the IRIX + compiler very unhappy. + + * tao/CDR.h: + * tao/CDR.i: + Added the operator << for TAO_OutputCDR and "const CORBA::Char*" + Sat Feb 06 21:11:05 1999 Jeff Parsons <parsons@cs.wustl.edu> * corba.h: diff --git a/TAO/TAO_IDL/be/be_visitor_array/cdr_op_ch.cpp b/TAO/TAO_IDL/be/be_visitor_array/cdr_op_ch.cpp index 86dec883d62..776217da5d5 100644 --- a/TAO/TAO_IDL/be/be_visitor_array/cdr_op_ch.cpp +++ b/TAO/TAO_IDL/be/be_visitor_array/cdr_op_ch.cpp @@ -53,14 +53,34 @@ be_visitor_array_cdr_op_ch::visit_array (be_array *node) // generate the CDR << and >> operator declarations *os << "CORBA::Boolean " << idl_global->export_macro () << " operator<< (TAO_OutputCDR &, const "; + // @@ TODO: this should be done in the node, it is absurd to repeat + // this code all over the visitors!!!! if (!this->ctx_->tdef ()) - *os << "_"; - *os << node->name () << "_forany &); // " << be_nl; + { + be_scope* scope = be_scope::narrow_from_scope (node->defined_in ()); + be_decl* parent = scope->decl (); + *os << parent->fullname () + << "::_" << node->local_name () + << "_forany &);" << be_nl; + } + else + { + *os << node->name () << "_forany &);" << be_nl; + } *os << "CORBA::Boolean " << idl_global->export_macro () << " operator>> (TAO_InputCDR &, "; if (!this->ctx_->tdef ()) - *os << "_"; - *os << node->name () << "_forany &);\n"; + { + be_scope* scope = be_scope::narrow_from_scope (node->defined_in ()); + be_decl* parent = scope->decl (); + *os << parent->fullname () + << "::_" << node->local_name () + << "_forany &);" << be_nl; + } + else + { + *os << node->name () << "_forany &);" << be_nl; + } node->cli_hdr_cdr_op_gen (1); return 0; diff --git a/TAO/TAO_IDL/be/be_visitor_field/cdr_op_cs.cpp b/TAO/TAO_IDL/be/be_visitor_field/cdr_op_cs.cpp index 370a4b991dd..23d27f2c29d 100644 --- a/TAO/TAO_IDL/be/be_visitor_field/cdr_op_cs.cpp +++ b/TAO/TAO_IDL/be/be_visitor_field/cdr_op_cs.cpp @@ -123,12 +123,12 @@ be_visitor_field_cdr_op_cs::visit_array (be_array *node) { case TAO_CodeGen::TAO_CDR_INPUT: *os << "(strm >> " << fname << "_forany " - << "(ACE_static_cast (" << fname << "_slice *, " + << "(ACE_const_cast (" << fname << "_slice *, " << "_tao_aggregate." << f->local_name () << ")))"; return 0; case TAO_CodeGen::TAO_CDR_OUTPUT: *os << "(strm << " << fname << "_forany " - << "(ACE_static_cast (" << fname << "_slice *, " + << "(ACE_const_cast (" << fname << "_slice *, " << "_tao_aggregate." << f->local_name () << ")))"; return 0; case TAO_CodeGen::TAO_CDR_SCOPE: diff --git a/TAO/TAO_IDL/util/utl_global.cpp b/TAO/TAO_IDL/util/utl_global.cpp index 72ab909d24d..22f95d7d230 100644 --- a/TAO/TAO_IDL/util/utl_global.cpp +++ b/TAO/TAO_IDL/util/utl_global.cpp @@ -125,7 +125,7 @@ IDL_GlobalData::IDL_GlobalData (void) output_dir_ (0), any_support_ (I_TRUE), tc_support_ (I_TRUE), - compiled_marshaling_ (I_FALSE), + compiled_marshaling_ (I_TRUE), gen_impl_files_ (I_FALSE), gen_copy_ctor_ (I_FALSE), gen_assign_op_ (I_FALSE), diff --git a/TAO/tao/CDR.h b/TAO/tao/CDR.h index bd1032e3da5..227ccd40134 100644 --- a/TAO/tao/CDR.h +++ b/TAO/tao/CDR.h @@ -259,6 +259,8 @@ extern TAO_Export CORBA::Boolean operator<< (TAO_OutputCDR &os, CORBA::Float x); extern TAO_Export CORBA::Boolean operator<< (TAO_OutputCDR &os, CORBA::Double x); +extern TAO_Export CORBA::Boolean operator<< (TAO_OutputCDR &os, + const CORBA::Char* x); // CDR input operators for CORBA types diff --git a/TAO/tao/CDR.i b/TAO/tao/CDR.i index bfd0e6ee840..12c4768450c 100644 --- a/TAO/tao/CDR.i +++ b/TAO/tao/CDR.i @@ -110,6 +110,12 @@ ACE_INLINE CORBA::Boolean operator<< (TAO_OutputCDR &os, return ACE_static_cast(ACE_OutputCDR&,os) << x; } +ACE_INLINE CORBA::Boolean operator<< (TAO_OutputCDR &os, + const CORBA::Char* x) +{ + return ACE_static_cast(ACE_OutputCDR&,os) << x; +} + // **************************************************************** ACE_INLINE CORBA::Boolean operator>> (TAO_InputCDR &is, |