diff options
Diffstat (limited to 'TAO/TAO_IDL/be/be_visitor_traits.cpp')
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_traits.cpp | 399 |
1 files changed, 0 insertions, 399 deletions
diff --git a/TAO/TAO_IDL/be/be_visitor_traits.cpp b/TAO/TAO_IDL/be/be_visitor_traits.cpp index 9dfff51054c..36032f9b35d 100644 --- a/TAO/TAO_IDL/be/be_visitor_traits.cpp +++ b/TAO/TAO_IDL/be/be_visitor_traits.cpp @@ -22,19 +22,9 @@ #include "be_valuetype_fwd.h" #include "be_eventtype.h" #include "be_eventtype_fwd.h" -#include "be_array.h" -#include "be_enum.h" -#include "be_sequence.h" -#include "be_string.h" -#include "be_structure.h" -#include "be_field.h" -#include "be_union.h" -#include "be_union_branch.h" #include "be_typedef.h" #include "be_helper.h" #include "be_extern.h" -#include "utl_identifier.h" -#include "idl_defines.h" ACE_RCSID (be, be_visitor_traits, @@ -132,29 +122,6 @@ be_visitor_traits::visit_interface (be_interface *node) os->gen_endif (); } - // This should be generated even for imported nodes. The ifdef guard prevents - // multiple declarations. - if (node->seen_in_operation ()) - { - os->gen_ifdef_macro (node->flat_name (), "arg_traits"); - - *os << be_nl << be_nl - << "ACE_TEMPLATE_SPECIALIZATION" << be_nl - << "class " << be_global->stub_export_macro () << " Arg_Traits<" - << node->name () << ">" << be_idt_nl - << ": public" << be_idt << be_idt_nl - << "Object_Arg_Traits_T<" << be_idt << be_idt_nl - << node->name () << "_ptr," << be_nl - << node->name () << "_var," << be_nl - << node->name () << "_out," << be_nl - << "TAO::Objref_Traits<" << node->name () << ">" << be_uidt_nl - << ">" << be_uidt << be_uidt << be_uidt << be_uidt_nl - << "{" << be_nl - << "};"; - - os->gen_endif (); - } - if (this->visit_scope (node) != 0) { ACE_ERROR_RETURN ((LM_ERROR, @@ -221,29 +188,6 @@ be_visitor_traits::visit_valuetype (be_valuetype *node) os->gen_endif (); } - // This should be generated even for imported nodes. The ifdef guard prevents - // multiple declarations. - if (node->seen_in_operation ()) - { - os->gen_ifdef_macro (node->flat_name (), "arg_traits"); - - *os << be_nl << be_nl - << "ACE_TEMPLATE_SPECIALIZATION" << be_nl - << "class " << be_global->stub_export_macro () << " Arg_Traits<" - << node->name () << ">" << be_idt_nl - << ": public" << be_idt << be_idt_nl - << "Object_Arg_Traits_T<" << be_idt << be_idt_nl - << node->name () << " *," << be_nl - << node->name () << "_var," << be_nl - << node->name () << "_out," << be_nl - << "TAO::Value_Traits<" << node->name () << ">" << be_uidt_nl - << ">" << be_uidt << be_uidt << be_uidt << be_uidt_nl - << "{" << be_nl - << "};"; - - os->gen_endif (); - } - int status = this->visit_scope (node); if (status != 0) @@ -297,349 +241,6 @@ be_visitor_traits::visit_eventtype_fwd (be_eventtype_fwd *node) return this->visit_valuetype_fwd (node); } -int -be_visitor_traits::visit_sequence (be_sequence *node) -{ - if (node->cli_traits_gen () || !node->seen_in_operation ()) - { - return 0; - } - - TAO_OutStream *os = this->ctx_->stream (); - be_typedef *alias = this->ctx_->alias (); - - *os << be_nl << be_nl << "// TAO_IDL - Generated from" << be_nl - << "// " << __FILE__ << ":" << __LINE__; - - // This will include the bound if there is one, and should also - // prevent duplication, even if there have been further typdefs. - os->gen_ifdef_macro (node->gen_name (), "traits"); - - *os << be_nl << be_nl - << "ACE_TEMPLATE_SPECIALIZATION" << be_nl - << "class " << be_global->stub_export_macro () << " Arg_Traits<" - << alias->name () << ">" << be_idt_nl - << ": public" << be_idt << be_idt_nl - << "Var_Size_Arg_Traits_T<" << be_idt << be_idt_nl - << alias->name () << "," << be_nl - << alias->name () << "_var," << be_nl - << alias->name () << "_out" << be_uidt_nl - << ">" << be_uidt << be_uidt << be_uidt << be_uidt_nl - << "{" << be_nl - << "};"; - - os->gen_endif (); - - node->cli_traits_gen (I_TRUE); - return 0; -} - -int -be_visitor_traits::visit_string (be_string *node) -{ - if (node->cli_traits_gen () || !node->seen_in_operation ()) - { - return 0; - } - - unsigned long bound = node->max_size ()->ev ()->u.ulval; - be_typedef *alias = this->ctx_->alias (); - - // Unbounded (w)string args are handled as a predefined type. - // Bounded (w)strings must come in as a typedef - they can't - // be used directly as arguments or return types. - if (bound == 0 || alias == 0) - { - return 0; - } - - idl_bool wide = (node->width () != 1); - - TAO_OutStream *os = this->ctx_->stream (); - - os->gen_ifdef_macro (node->flat_name (), "arg_traits"); - - // A workaround 'dummy' type, since bounded (w)strings are all - // generated as typedefs of (w)char *. - *os << be_nl << be_nl - << "struct " << alias->local_name () << "_" << bound << " {};"; - - *os << be_nl << be_nl - << "ACE_TEMPLATE_SPECIALIZATION" << be_nl - << "class " << be_global->stub_export_macro () << " Arg_Traits<" - << alias->local_name () << "_" << bound << ">" << be_idt_nl - << ": public" << be_idt << be_idt_nl - << "BD_" << (wide ? "W" : "") - << "String_Arg_Traits<" << bound << ">" - << be_uidt << be_uidt << be_uidt_nl - << "{" << be_nl - << "};"; - - os->gen_endif (); - - node->cli_traits_gen (I_TRUE); - return 0; -} - -int -be_visitor_traits::visit_array (be_array *node) -{ - if (node->cli_traits_gen ()) - { - return 0; - } - - TAO_OutStream *os = this->ctx_->stream (); - - // This should be generated even for imported nodes. The ifdef guard prevents - // multiple declarations. - if (node->seen_in_operation ()) - { - os->gen_ifdef_macro (node->flat_name (), "arg_traits"); - - *os << be_nl << be_nl - << "ACE_TEMPLATE_SPECIALIZATION" << be_nl - << "class " << be_global->stub_export_macro () << " Arg_Traits<" - << node->name () << ">" << be_idt_nl - << ": public" << be_idt << be_idt_nl; - - *os << (node->size_type () == AST_Type::FIXED ? "Fixed" : "Var") - << "_Array_Arg_Traits_T<" << be_idt << be_idt_nl - << node->name () << "," << be_nl - << node->name () << "_slice," << be_nl - << node->name () << "_var," << be_nl; - - if (node->size_type () == AST_Type::VARIABLE) - { - *os << node->name () << "_out," << be_nl; - } - - *os << node->name () << "_forany" << be_uidt_nl - << ">" << be_uidt << be_uidt << be_uidt << be_uidt_nl - << "{" << be_nl - << "};"; - - os->gen_endif (); - } - - node->cli_traits_gen (I_TRUE); - return 0; -} - -int -be_visitor_traits::visit_enum (be_enum *node) -{ - if (node->cli_traits_gen () || !node->seen_in_operation ()) - { - return 0; - } - - TAO_OutStream *os = this->ctx_->stream (); - - *os << be_nl << be_nl << "// TAO_IDL - Generated from" << be_nl - << "// " << __FILE__ << ":" << __LINE__; - - // This should be generated even for imported nodes. The ifdef guard prevents - // multiple declarations. - os->gen_ifdef_macro (node->flat_name (), "arg_traits"); - - *os << be_nl << be_nl - << "ACE_TEMPLATE_SPECIALIZATION" << be_nl - << "class " << be_global->stub_export_macro () << " Arg_Traits<" - << node->name () << ">" << be_idt_nl - << ": public" << be_idt << be_idt_nl; - - *os << "Basic_Arg_Traits_T<" << be_idt << be_idt_nl - << node->name () << be_uidt_nl - << ">" << be_uidt << be_uidt << be_uidt << be_uidt_nl - << "{" << be_nl - << "};"; - - os->gen_endif (); - - node->cli_traits_gen (I_TRUE); - return 0; -} - -int -be_visitor_traits::visit_structure (be_structure *node) -{ - if (node->cli_traits_gen ()) - { - return 0; - } - - // This should be generated even for imported nodes. The ifdef guard prevents - // multiple declarations. - if (node->seen_in_operation ()) - { - TAO_OutStream *os = this->ctx_->stream (); - - *os << be_nl << be_nl << "// TAO_IDL - Generated from" << be_nl - << "// " << __FILE__ << ":" << __LINE__; - - os->gen_ifdef_macro (node->flat_name (), "arg_traits"); - - *os << be_nl << be_nl - << "ACE_TEMPLATE_SPECIALIZATION" << be_nl - << "class " << be_global->stub_export_macro () << " Arg_Traits<" - << node->name () << ">" << be_idt_nl - << ": public" << be_idt << be_idt_nl; - - *os << (node->size_type () == AST_Type::FIXED ? "Fixed" : "Var") - << "_Size_Arg_Traits_T<" << be_idt << be_idt_nl - << node->name (); - - if (node->size_type () == AST_Type::VARIABLE) - { - *os << "," << be_nl - << node->name () << "_var," << be_nl - << node->name () << "_out"; - } - - *os << be_uidt_nl - << ">" << be_uidt << be_uidt << be_uidt << be_uidt_nl - << "{" << be_nl - << "};"; - - os->gen_endif (); - } - - if (this->visit_scope (node) != 0) - { - ACE_ERROR_RETURN ((LM_ERROR, - "(%N:%l) be_visitor_traits::" - "visit_structure - visit scope failed\n"), - -1); - } - - node->cli_traits_gen (I_TRUE); - return 0; -} - -int -be_visitor_traits::visit_field (be_field *node) -{ - be_type *bt = be_type::narrow_from_decl (node->field_type ()); - - if (!bt) - { - ACE_ERROR_RETURN ((LM_ERROR, - "(%N:%l) be_visitor_traits::" - "visit_field - " - "Bad field type\n"), - -1); - } - - // Valuetypes may not be *declared* in a field, so this will - // get handled elsewhere, and will also avoid nested valuetype - // recursion. So we set the field node as processed (the - // field *type* may not have been reached yet) and return. - if (bt->base_node_type () == AST_Decl::NT_valuetype) - { - node->cli_traits_gen (I_TRUE); - return 0; - } - - if (bt->accept (this) == -1) - { - ACE_ERROR_RETURN ((LM_ERROR, - "(%N:%l) be_visitor_traits::" - "visit_field - " - "codegen for field type failed\n"), - -1); - } - - node->cli_traits_gen (I_TRUE); - bt->cli_traits_gen (I_TRUE); - return 0; -} - -int -be_visitor_traits::visit_union (be_union *node) -{ - if (node->cli_traits_gen ()) - { - return 0; - } - - // This should be generated even for imported nodes. The ifdef guard prevents - // multiple declarations. - if (node->seen_in_operation ()) - { - TAO_OutStream *os = this->ctx_->stream (); - - *os << be_nl << be_nl << "// TAO_IDL - Generated from" << be_nl - << "// " << __FILE__ << ":" << __LINE__; - - os->gen_ifdef_macro (node->flat_name (), "arg_traits"); - - *os << be_nl << be_nl - << "ACE_TEMPLATE_SPECIALIZATION" << be_nl - << "class " << be_global->stub_export_macro () << " Arg_Traits<" - << node->name () << ">" << be_idt_nl - << ": public" << be_idt << be_idt_nl; - - *os << (node->size_type () == AST_Type::FIXED ? "Fixed" : "Var") - << "_Size_Arg_Traits_T<" << be_idt << be_idt_nl - << node->name (); - - if (node->size_type () == AST_Type::VARIABLE) - { - *os << "," << be_nl - << node->name () << "_var," << be_nl - << node->name () << "_out"; - } - - *os << be_uidt_nl - << ">" << be_uidt << be_uidt << be_uidt << be_uidt_nl - << "{" << be_nl - << "};"; - - os->gen_endif (); - } - - int status = this->visit_scope (node); - - if (status != 0) - { - ACE_ERROR_RETURN ((LM_ERROR, - "(%N:%l) be_visitor_traits::" - "visit_union - visit scope failed\n"), - -1); - } - - node->cli_traits_gen (I_TRUE); - return 0; -} - -int -be_visitor_traits::visit_union_branch (be_union_branch *node) -{ - be_type *bt = be_type::narrow_from_decl (node->field_type ()); - - if (!bt) - { - ACE_ERROR_RETURN ((LM_ERROR, - "(%N:%l) be_visitor_traits::" - "visit_union_branch - " - "Bad union_branch type\n"), - -1); - } - - if (bt->accept (this) == -1) - { - ACE_ERROR_RETURN ((LM_ERROR, - "(%N:%l) be_visitor_traits::" - "visit_union_branch - " - "codegen for union_branch type failed\n"), - -1); - } - - node->cli_traits_gen (I_TRUE); - return 0; -} - int be_visitor_traits::visit_typedef (be_typedef *node) { |