diff options
Diffstat (limited to 'TAO/TAO_IDL/be/be_visitor_valuetype/any_op_cs.cpp')
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_valuetype/any_op_cs.cpp | 101 |
1 files changed, 60 insertions, 41 deletions
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 8955c59e853..82dff9db21f 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 @@ -41,37 +41,47 @@ be_visitor_valuetype_any_op_cs::~be_visitor_valuetype_any_op_cs (void) int be_visitor_valuetype_any_op_cs::visit_valuetype (be_valuetype *node) { - if (node->cli_stub_any_op_gen () || node->imported ()) + if (node->cli_stub_any_op_gen () + || node->imported () + || node->is_local ()) { return 0; } TAO_OutStream *os = this->ctx_->stream (); - os->indent (); - // Generate the Any <<= and >>= operator declarations - *os << be_global->stub_export_macro () << " void" << be_nl - << "operator<<= (CORBA::Any &any, " << node->name () - << " *value) // copying" << be_nl + *os << "// TAO_IDL - Generated from" << be_nl + << "// " << __FILE__ << ":" << __LINE__ << be_nl << be_nl; + + *os << "// Copying." << be_nl + << "void" << be_nl + << "operator<<= (" << be_idt << be_idt_nl + << "CORBA::Any &any," << be_nl + << node->name () << " *value" << be_uidt_nl + << ")" << be_uidt_nl << "{" << be_idt_nl - << "TAO_OutputCDR stream;" << be_nl - << "if (stream << value)" << be_nl + << "TAO_OutputCDR stream;" << be_nl << be_nl + << "if (stream << value)" << be_idt_nl << "{" << be_idt_nl << "any._tao_replace (" << be_idt << be_idt_nl << node->tc_name () << ", " << be_nl << "TAO_ENCAP_BYTE_ORDER," << be_nl - << "stream.begin ());" << be_uidt << be_uidt << be_uidt_nl - << "}" << be_uidt_nl + << "stream.begin ()" << be_uidt_nl + << ");" << be_uidt << be_uidt_nl + << "}" << be_uidt << be_uidt_nl << "}" << be_nl << be_nl; - *os << be_global->stub_export_macro () << " void" << be_nl - << "operator<<= (CORBA::Any &any, " << node->name () - << " **value) // non-copying" << be_nl + *os << "// Non-copying." << be_nl + << "void" << be_nl + << "operator<<= (" << be_idt << be_idt_nl + << "CORBA::Any &any," << be_nl + << node->name ()<< " **value" << be_uidt_nl + << ")" << be_uidt_nl << "{" << be_idt_nl - << "TAO_OutputCDR stream;" << be_nl - << "if (stream << *value)" << be_nl + << "TAO_OutputCDR stream;" << be_nl << be_nl + << "if (stream << *value)" << be_idt_nl << "{" << be_idt_nl << "any._tao_replace (" << be_idt << be_idt_nl << node->tc_name () << ", " << be_nl @@ -79,56 +89,65 @@ be_visitor_valuetype_any_op_cs::visit_valuetype (be_valuetype *node) << "stream.begin ()," << be_nl << "1," << be_nl << "*value," << be_nl - << node->name () << "::_tao_any_destructor);" - << be_uidt << be_uidt << be_uidt_nl - << "}" << be_uidt_nl + << node->name () << "::_tao_any_destructor" << be_uidt_nl + << ");" << be_uidt << be_uidt_nl + << "}" << be_uidt << be_uidt_nl << "}" << be_nl << be_nl; - *os << be_global->stub_export_macro () << " CORBA::Boolean" << be_nl - << "operator>>= (const CORBA::Any &any, " - << node->name () << " *&value)" << be_nl + *os << "CORBA::Boolean" << be_nl + << "operator>>= (" << be_idt << be_idt_nl + << "const CORBA::Any &any," << be_nl + << node->name () << " *&value" << be_uidt_nl + << ")" << be_uidt_nl << "{" << be_idt_nl << "ACE_TRY_NEW_ENV" << be_nl << "{" << be_idt_nl << "value = 0;" << be_nl - << "CORBA::TypeCode_var type = any.type ();" << be_nl << be_nl - << "CORBA::Boolean result = type->equivalent (" << node->tc_name () - << " ACE_ENV_ARG_PARAMETER);" << be_nl + << "CORBA::TypeCode_var type = any.type ();" << be_nl + << "CORBA::Boolean result =" << be_idt_nl + << "type->equivalent (" << be_idt << be_idt_nl + << node->tc_name () << be_nl + << "ACE_ENV_ARG_PARAMETER" << be_uidt_nl + << ");" << be_uidt << be_uidt_nl << "ACE_TRY_CHECK;" << be_nl << be_nl - << "if (!result)" << be_nl + << "if (!result)" << be_idt_nl << "{" << be_idt_nl << "return 0; // not equivalent" << be_uidt_nl - << "}" << be_nl - << "if (any.any_owns_data ())" << be_nl + << "}" << be_uidt_nl << be_nl + << "if (any.any_owns_data ())" << be_idt_nl << "{" << be_idt_nl - << "const " << node->name () << " *const_holder = " + << "const " << node->name () << " *const_holder =" << be_idt_nl << "ACE_static_cast (" << be_idt << be_idt_nl - << "const " << node->name () << "*," << be_nl - << "any.value ());" << be_uidt << be_uidt_nl - << "value = ACE_const_cast (" << be_idt << be_idt_nl - << node->name () << "*," << be_nl - << "const_holder);" << be_uidt << be_uidt_nl + << "const " << node->name () << " *," << be_nl + << "any.value ()" << be_uidt_nl + << ");" << be_uidt << be_uidt_nl + << "value =" << be_idt_nl + << "ACE_const_cast (" << be_idt << be_idt_nl + << node->name () << " *," << be_nl + << "const_holder" << be_uidt_nl + << ");" << be_uidt << be_uidt_nl << "return 1;" << be_uidt_nl - << "}" << be_nl - << "else" << be_nl // else any does not own the data + << "}" << be_uidt_nl + << "else" << be_idt_nl // else any does not own the data << "{" << be_idt_nl << node->name () << " *tmp;" << be_nl << "TAO_InputCDR stream (" << be_idt << be_idt_nl << "any._tao_get_cdr ()," << be_nl - << "any._tao_byte_order ());" << be_uidt << be_uidt_nl - << "if (stream >> tmp)" << be_nl + << "any._tao_byte_order ()" << be_uidt_nl + << ");" << be_uidt_nl << be_nl + << "if (stream >> tmp)" << be_idt_nl << "{" << be_idt_nl << "((CORBA::Any *)&any)->_tao_replace (" << be_idt << be_idt_nl << node->tc_name () << "," << be_nl << "1," << be_nl << "ACE_static_cast (void *, tmp)," << be_nl - << node->name () << "::_tao_any_destructor);" << be_uidt << be_uidt_nl + << node->name () << "::_tao_any_destructor" << be_uidt_nl + << ");" << be_uidt_nl << "value = tmp;" << be_nl << "return 1;" << be_uidt_nl - << "}" << be_nl - << be_uidt_nl - << "}" << be_uidt_nl + << "}" << be_uidt << be_uidt_nl + << "}" << be_uidt << be_uidt_nl << "}" << be_nl << "ACE_CATCHANY" << be_nl << "{" << be_nl |