summaryrefslogtreecommitdiff
path: root/TAO
diff options
context:
space:
mode:
Diffstat (limited to 'TAO')
-rw-r--r--TAO/ChangeLog-99c22
-rw-r--r--TAO/TAO_IDL/be/be_visitor_array/cdr_op_ch.cpp28
-rw-r--r--TAO/TAO_IDL/be/be_visitor_field/cdr_op_cs.cpp4
-rw-r--r--TAO/TAO_IDL/util/utl_global.cpp2
-rw-r--r--TAO/tao/CDR.h2
-rw-r--r--TAO/tao/CDR.i6
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,