diff options
Diffstat (limited to 'TAO/TAO_IDL/be/be_visitor_argument/marshal_ss.cpp')
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_argument/marshal_ss.cpp | 711 |
1 files changed, 597 insertions, 114 deletions
diff --git a/TAO/TAO_IDL/be/be_visitor_argument/marshal_ss.cpp b/TAO/TAO_IDL/be/be_visitor_argument/marshal_ss.cpp index b7b28bc1b53..4e30a8430e2 100644 --- a/TAO/TAO_IDL/be/be_visitor_argument/marshal_ss.cpp +++ b/TAO/TAO_IDL/be/be_visitor_argument/marshal_ss.cpp @@ -31,12 +31,14 @@ ACE_RCSID(be_visitor_argument, marshal_ss, "$Id$") // routines // ************************************************************************ -be_visitor_args_marshal_ss::be_visitor_args_marshal_ss (be_visitor_context *ctx) +be_visitor_args_marshal_ss:: +be_visitor_args_marshal_ss (be_visitor_context *ctx) : be_visitor_args (ctx) { } -be_visitor_args_marshal_ss::~be_visitor_args_marshal_ss (void) +be_visitor_args_marshal_ss:: +~be_visitor_args_marshal_ss (void) { } @@ -44,12 +46,12 @@ int be_visitor_args_marshal_ss::visit_argument (be_argument *node) { this->ctx_->node (node); // save the argument node - // retrieve the type + // retrieve the type of the argument be_type *bt = be_type::narrow_from_decl (node->field_type ()); if (!bt) { ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_args_marshal_ss::" + "be_visitor_args_compiled_marshal_ss::" "visit_argument - " "Bad argument type\n"), -1); @@ -58,41 +60,129 @@ int be_visitor_args_marshal_ss::visit_argument (be_argument *node) // Different types have different mappings when used as in/out or // inout parameters. Let this visitor deal with the type + TAO_OutStream *os = this->ctx_->stream (); // get output stream + + if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT) + { + switch (this->direction ()) + { + case AST_Argument::dir_IN: + case AST_Argument::dir_INOUT: + os->indent (); + *os << "(_tao_in >> "; + break; + case AST_Argument::dir_OUT: + break; + } + } + else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT) + { + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + os->indent (); + *os << "(_tao_out << "; + break; + } + } + else + { + ACE_ERROR_RETURN ((LM_ERROR, + "be_visitor_args_compiled_marshal_ss::" + "visit_argument - " + "Bad substate\n"), + -1); + } + if (bt->accept (this) == -1) { ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_args_marshal_ss::" + "be_visitor_args_compiled_marshal_ss::" "visit_argument - " "cannot accept visitor\n"), -1); } + if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT) + { + switch (this->direction ()) + { + case AST_Argument::dir_IN: + case AST_Argument::dir_INOUT: + *os << ")"; + break; + case AST_Argument::dir_OUT: + break; + } + } + else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT) + { + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + *os << ")"; + break; + } + } + else + { + ACE_ERROR_RETURN ((LM_ERROR, + "be_visitor_args_compiled_marshal_ss::" + "visit_argument - " + "Bad substate\n"), + -1); + } + return 0; } -int be_visitor_args_marshal_ss::visit_array (be_array *node) +int be_visitor_args_marshal_ss::visit_array (be_array *) { TAO_OutStream *os = this->ctx_->stream (); // get output stream be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument // node - switch (this->direction ()) - { - case AST_Argument::dir_IN: - case AST_Argument::dir_INOUT: - os->indent (); - *os << arg->local_name (); - break; - case AST_Argument::dir_OUT: - os->indent (); - if (node->size_type () == be_type::VARIABLE) + + if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT) + { + switch (this->direction ()) { - *os << arg->local_name () << ".inout ()"; + case AST_Argument::dir_IN: + *os << "_tao_forany_" << arg->local_name (); + break; + case AST_Argument::dir_INOUT: + *os << "_tao_forany_" << arg->local_name (); + break; + case AST_Argument::dir_OUT: + break; } - else + } + else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT) + { + switch (this->direction ()) { - *os << arg->local_name (); + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + *os << "_tao_forany_" << arg->local_name (); + break; + case AST_Argument::dir_OUT: + *os << "_tao_forany_" << arg->local_name (); + break; } - break; + } + else + { + ACE_ERROR_RETURN ((LM_ERROR, + "be_visitor_args_compiled_marshal_ss::" + "visit_array - " + "Bad substate\n"), + -1); } return 0; } @@ -102,14 +192,38 @@ int be_visitor_args_marshal_ss::visit_enum (be_enum *) TAO_OutStream *os = this->ctx_->stream (); // get output stream be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument // node - switch (this->direction ()) + + if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT) + { + switch (this->direction ()) + { + case AST_Argument::dir_IN: + case AST_Argument::dir_INOUT: + *os << arg->local_name (); + break; + case AST_Argument::dir_OUT: + break; + } + } + else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT) { - case AST_Argument::dir_IN: - case AST_Argument::dir_INOUT: - case AST_Argument::dir_OUT: - os->indent (); - *os << "&" << arg->local_name (); - break; + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + *os << arg->local_name (); + break; + } + } + else + { + ACE_ERROR_RETURN ((LM_ERROR, + "be_visitor_args_compiled_marshal_ss::" + "visit_enum - " + "Bad substate\n"), + -1); } return 0; } @@ -119,14 +233,38 @@ int be_visitor_args_marshal_ss::visit_interface (be_interface *) TAO_OutStream *os = this->ctx_->stream (); // get output stream be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument // node - switch (this->direction ()) + + if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT) + { + switch (this->direction ()) + { + case AST_Argument::dir_IN: + case AST_Argument::dir_INOUT: + *os << arg->local_name () << ".out ()"; + break; + case AST_Argument::dir_OUT: + break; + } + } + else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT) + { + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + *os << arg->local_name () << ".in ()"; + break; + } + } + else { - case AST_Argument::dir_IN: - case AST_Argument::dir_INOUT: - case AST_Argument::dir_OUT: - os->indent (); - *os << "&_tao_base_var_" << arg->local_name () << ".inout ()"; - break; + ACE_ERROR_RETURN ((LM_ERROR, + "be_visitor_args_compiled_marshal_ss::" + "visit_interface - " + "Bad substate\n"), + -1); } return 0; } @@ -136,155 +274,500 @@ int be_visitor_args_marshal_ss::visit_interface_fwd (be_interface_fwd *) TAO_OutStream *os = this->ctx_->stream (); // get output stream be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument // node - switch (this->direction ()) + + if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT) { - case AST_Argument::dir_IN: - case AST_Argument::dir_INOUT: - case AST_Argument::dir_OUT: - os->indent (); - *os << "&_tao_base_var_" << arg->local_name () << ".inout ()"; - break; + switch (this->direction ()) + { + case AST_Argument::dir_IN: + case AST_Argument::dir_INOUT: + *os << arg->local_name () << ".out ()"; + break; + case AST_Argument::dir_OUT: + break; + } + } + else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT) + { + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + *os << arg->local_name () << ".in ()"; + break; + } + } + else + { + ACE_ERROR_RETURN ((LM_ERROR, + "be_visitor_args_compiled_marshal_ss::" + "visit_interface_fwd - " + "Bad substate\n"), + -1); } return 0; } -int be_visitor_args_marshal_ss::visit_predefined_type (be_predefined_type *node) +#ifdef IDL_HAS_VALUETYPE + +int be_visitor_args_marshal_ss::visit_valuetype (be_valuetype *) { TAO_OutStream *os = this->ctx_->stream (); // get output stream be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument // node - // check if the type is an any - if (node->pt () == AST_PredefinedType::PT_any) + if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT) { switch (this->direction ()) { case AST_Argument::dir_IN: case AST_Argument::dir_INOUT: - os->indent (); - *os << "&" << arg->local_name (); + *os << arg->local_name () << ".out ()"; break; case AST_Argument::dir_OUT: - os->indent (); - *os << "&" << arg->local_name () << ".inout ()"; break; - } // end switch direction - } // end of if - else if (node->pt () == AST_PredefinedType::PT_pseudo) // e.g., CORBA::Object + } + } + else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT) { switch (this->direction ()) { case AST_Argument::dir_IN: + break; case AST_Argument::dir_INOUT: case AST_Argument::dir_OUT: - os->indent (); - *os << "&" << arg->local_name () << ".inout ()"; + *os << arg->local_name () << ".in ()"; + break; + } + } + else + { + ACE_ERROR_RETURN ((LM_ERROR, + "be_visitor_args_compiled_marshal_ss::" + "visit_valuetype - " + "Bad substate\n"), + -1); + } + return 0; +} + +int be_visitor_args_marshal_ss::visit_valuetype_fwd (be_valuetype_fwd *) +{ + TAO_OutStream *os = this->ctx_->stream (); // get output stream + be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument + // node + + if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT) + { + switch (this->direction ()) + { + case AST_Argument::dir_IN: + case AST_Argument::dir_INOUT: + *os << arg->local_name () << ".out ()"; + break; + case AST_Argument::dir_OUT: break; - } // end switch direction - } // end else if - else // simple predefined types + } + } + else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT) { switch (this->direction ()) { case AST_Argument::dir_IN: + break; case AST_Argument::dir_INOUT: case AST_Argument::dir_OUT: - os->indent (); - *os << "&" << arg->local_name (); + *os << arg->local_name () << ".in ()"; break; - } // end switch direction - } // end of else + } + } + else + { + ACE_ERROR_RETURN ((LM_ERROR, + "be_visitor_args_compiled_marshal_ss::" + "visit_valuetype_fwd - " + "Bad substate\n"), + -1); + } + return 0; +} + +#endif /* IDL_HAS_VALUETYPE */ + +int be_visitor_args_marshal_ss::visit_predefined_type (be_predefined_type *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // get output stream + be_argument *arg = this->ctx_->be_node_as_argument (); // get argument node + if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT) + { + switch (this->direction ()) + { + case AST_Argument::dir_IN: + case AST_Argument::dir_INOUT: + switch (node->pt ()) + { + case AST_PredefinedType::PT_pseudo: + *os << arg->local_name () << ".out ()"; + break; + case AST_PredefinedType::PT_any: + case AST_PredefinedType::PT_long: + case AST_PredefinedType::PT_ulong: + case AST_PredefinedType::PT_longlong: + case AST_PredefinedType::PT_ulonglong: + case AST_PredefinedType::PT_short: + case AST_PredefinedType::PT_ushort: + case AST_PredefinedType::PT_float: + case AST_PredefinedType::PT_double: + case AST_PredefinedType::PT_longdouble: + *os << arg->local_name (); + break; + case AST_PredefinedType::PT_char: + *os << "CORBA::Any::to_char (" << arg->local_name () << ")"; + break; + case AST_PredefinedType::PT_wchar: + *os << "CORBA::Any::to_wchar (" << arg->local_name () << ")"; + break; + case AST_PredefinedType::PT_boolean: + *os << "CORBA::Any::to_boolean (" << arg->local_name () << ")"; + break; + case AST_PredefinedType::PT_octet: + *os << "CORBA::Any::to_octet (" << arg->local_name () << ")"; + break; + default: + ACE_ERROR_RETURN ((LM_ERROR, + "be_visitor_args_compiled_marshal_ss::" + "visit_predefined_type - " + "Bad predefined type\n"), + -1); + } + break; + case AST_Argument::dir_OUT: + break; + } + } + else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT) + { + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + switch (node->pt ()) + { + case AST_PredefinedType::PT_pseudo: + *os << arg->local_name () << ".in ()"; + break; + case AST_PredefinedType::PT_any: + *os << arg->local_name (); + break; + case AST_PredefinedType::PT_long: + case AST_PredefinedType::PT_ulong: + case AST_PredefinedType::PT_longlong: + case AST_PredefinedType::PT_ulonglong: + case AST_PredefinedType::PT_short: + case AST_PredefinedType::PT_ushort: + case AST_PredefinedType::PT_float: + case AST_PredefinedType::PT_double: + case AST_PredefinedType::PT_longdouble: + *os << arg->local_name (); + break; + case AST_PredefinedType::PT_char: + *os << "CORBA::Any::from_char (" << arg->local_name () << ")"; + break; + case AST_PredefinedType::PT_wchar: + *os << "CORBA::Any::from_wchar (" << arg->local_name () << ")"; + break; + case AST_PredefinedType::PT_boolean: + *os << "CORBA::Any::from_boolean (" << arg->local_name () << ")"; + break; + case AST_PredefinedType::PT_octet: + *os << "CORBA::Any::from_octet (" << arg->local_name () << ")"; + break; + default: + ACE_ERROR_RETURN ((LM_ERROR, + "be_visitor_operation_rettype_compiled_marshal_ss::" + "visit_array - " + "Bad predefined type\n"), + -1); + } + break; + case AST_Argument::dir_OUT: + switch (node->pt ()) + { + case AST_PredefinedType::PT_pseudo: + *os << arg->local_name () << ".in ()"; + break; + case AST_PredefinedType::PT_any: + *os << arg->local_name () << ".in ()"; + break; + case AST_PredefinedType::PT_long: + case AST_PredefinedType::PT_ulong: + case AST_PredefinedType::PT_longlong: + case AST_PredefinedType::PT_ulonglong: + case AST_PredefinedType::PT_short: + case AST_PredefinedType::PT_ushort: + case AST_PredefinedType::PT_float: + case AST_PredefinedType::PT_double: + case AST_PredefinedType::PT_longdouble: + *os << arg->local_name (); + break; + case AST_PredefinedType::PT_char: + *os << "CORBA::Any::from_char (" << arg->local_name () << ")"; + break; + case AST_PredefinedType::PT_wchar: + *os << "CORBA::Any::from_wchar (" << arg->local_name () << ")"; + break; + case AST_PredefinedType::PT_boolean: + *os << "CORBA::Any::from_boolean (" << arg->local_name () << ")"; + break; + case AST_PredefinedType::PT_octet: + *os << "CORBA::Any::from_octet (" << arg->local_name () << ")"; + break; + default: + ACE_ERROR_RETURN ((LM_ERROR, + "be_visitor_operation_rettype_compiled_marshal_ss::" + "visit_array - " + "Bad predefined type\n"), + -1); + } + break; + } + } + else + { + ACE_ERROR_RETURN ((LM_ERROR, + "be_visitor_args_compiled_marshal_ss::" + "visit_array - " + "Bad substate\n"), + -1); + } return 0; } int be_visitor_args_marshal_ss::visit_sequence (be_sequence *) { - TAO_OutStream *os = this->ctx_->stream (); // get the stream + TAO_OutStream *os = this->ctx_->stream (); // get output stream be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument // node - switch (this->direction ()) + if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT) + { + switch (this->direction ()) + { + case AST_Argument::dir_IN: + case AST_Argument::dir_INOUT: + *os << arg->local_name (); + break; + case AST_Argument::dir_OUT: + break; + } + } + else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT) + { + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + *os << arg->local_name (); + break; + case AST_Argument::dir_OUT: + *os << arg->local_name () << ".in ()"; + break; + } + } + else { - case AST_Argument::dir_IN: - case AST_Argument::dir_INOUT: - os->indent (); - *os << "&" << arg->local_name (); - break; - case AST_Argument::dir_OUT: - os->indent (); - *os << "&" << arg->local_name () << ".inout ()"; - break; + ACE_ERROR_RETURN ((LM_ERROR, + "be_visitor_args_compiled_marshal_ss::" + "visit_interface - " + "Bad substate\n"), + -1); } return 0; } -int be_visitor_args_marshal_ss::visit_string (be_string *) +int be_visitor_args_marshal_ss::visit_string (be_string *node) { - TAO_OutStream *os = this->ctx_->stream (); // get the stream + TAO_OutStream *os = this->ctx_->stream (); // get output stream be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument // node - switch (this->direction ()) + if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT) { - case AST_Argument::dir_IN: - case AST_Argument::dir_INOUT: - os->indent (); - *os << "&" << arg->local_name (); - break; - case AST_Argument::dir_OUT: - os->indent (); - *os << "&" << arg->local_name () << ".inout ()"; - break; + switch (this->direction ()) + { + case AST_Argument::dir_IN: + case AST_Argument::dir_INOUT: + // we need to make a distinction between bounded and unbounded strings + if (node->max_size ()->ev ()->u.ulval == 0) + { + *os << arg->local_name () << ".out ()"; + } + else + { + if (node->width () == sizeof (char)) + { + *os << "CORBA::Any::to_string ("; + } + else + { + *os << "CORBA::Any::to_wstring ("; + } + + *os << arg->local_name () << ".out (), " + << node->max_size ()->ev ()->u.ulval - 1 + << ")"; + } + break; + case AST_Argument::dir_OUT: + break; + } + } + else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT) + { + // we need to make a distinction between bounded and unbounded strings + if (node->max_size ()->ev ()->u.ulval == 0) + { + // unbounded + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + *os << arg->local_name () << ".in ()"; + break; + } + } + else + { + // bounded + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + if (node->width () == sizeof (char)) + { + *os << "CORBA::Any::from_string ((char *)"; + } + else + { + *os << "CORBA::Any::from_wstring ((CORBA::WChar *)"; + } + + *os << arg->local_name () << ".in (), " + << node->max_size ()->ev ()->u.ulval - 1 << ")"; + break; + } + } + } + else + { + ACE_ERROR_RETURN ((LM_ERROR, + "be_visitor_args_compiled_marshal_ss::" + "visit_string - " + "Bad substate\n"), + -1); } return 0; } int be_visitor_args_marshal_ss::visit_structure (be_structure *node) { - TAO_OutStream *os = this->ctx_->stream (); // get the stream + TAO_OutStream *os = this->ctx_->stream (); // get output stream be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument // node - switch (this->direction ()) - { - case AST_Argument::dir_IN: - case AST_Argument::dir_INOUT: - os->indent (); - *os << "&" << arg->local_name (); - break; - case AST_Argument::dir_OUT: - os->indent (); - if (node->size_type () == be_type::VARIABLE) - *os << "&" << arg->local_name () << ".inout ()"; - else - *os << "&" << arg->local_name (); - break; + if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT) + { + switch (this->direction ()) + { + case AST_Argument::dir_IN: + case AST_Argument::dir_INOUT: + *os << arg->local_name (); + break; + case AST_Argument::dir_OUT: + break; + } + } + else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT) + { + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + *os << arg->local_name (); + break; + case AST_Argument::dir_OUT: + if (node->size_type () == be_decl::VARIABLE) + *os << arg->local_name () << ".in ()"; + else + *os << arg->local_name (); + break; + } + } + else + { + ACE_ERROR_RETURN ((LM_ERROR, + "be_visitor_args_compiled_marshal_ss::" + "visit_structure - " + "Bad substate\n"), + -1); } return 0; } int be_visitor_args_marshal_ss::visit_union (be_union *node) { - TAO_OutStream *os = this->ctx_->stream (); // get the stream + TAO_OutStream *os = this->ctx_->stream (); // get output stream be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument // node - switch (this->direction ()) - { - case AST_Argument::dir_IN: - case AST_Argument::dir_INOUT: - os->indent (); - *os << "&" << arg->local_name (); - break; - case AST_Argument::dir_OUT: - os->indent (); - if (node->size_type () == be_type::VARIABLE) - *os << "&" << arg->local_name () << ".inout ()"; - else - *os << "&" << arg->local_name (); - break; + if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT) + { + switch (this->direction ()) + { + case AST_Argument::dir_IN: + case AST_Argument::dir_INOUT: + *os << arg->local_name (); + break; + case AST_Argument::dir_OUT: + break; + } + } + else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT) + { + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + *os << arg->local_name (); + break; + case AST_Argument::dir_OUT: + if (node->size_type () == be_decl::VARIABLE) + *os << arg->local_name () << ".in ()"; + else + *os << arg->local_name (); + break; + } } + else + { + ACE_ERROR_RETURN ((LM_ERROR, + "be_visitor_args_compiled_marshal_ss::" + "visit_union - " + "Bad substate\n"), + -1); + } + return 0; } @@ -294,7 +777,7 @@ int be_visitor_args_marshal_ss::visit_typedef (be_typedef *node) if (node->primitive_base_type ()->accept (this) == -1) { ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_args_marshal_ss::" + "be_visitor_args_compiled_marshal_ss::" "visit_typedef - " "accept on primitive type failed\n"), -1); |