diff options
author | parsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2001-03-02 00:55:49 +0000 |
---|---|---|
committer | parsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2001-03-02 00:55:49 +0000 |
commit | efb7ea05036a37764f4e9f7e785fa85ad7a568f5 (patch) | |
tree | eb6ecb7cf4d59332885cdd93afa3bbc77ea332e5 | |
parent | 5ff1ef66f0696b55e0374fffe207bd842d3e335a (diff) | |
download | ATCD-efb7ea05036a37764f4e9f7e785fa85ad7a568f5.tar.gz |
ChangeLogTag: Thu Mar 1 18:51:45 2001 Jeff Parsons <parsons@cs.wustl.edu>
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_array/array_ch.cpp | 57 | ||||
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_array/array_ci.cpp | 29 | ||||
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_sequence/sequence_ch.cpp | 47 | ||||
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_sequence/sequence_ci.cpp | 41 |
4 files changed, 82 insertions, 92 deletions
diff --git a/TAO/TAO_IDL/be/be_visitor_array/array_ch.cpp b/TAO/TAO_IDL/be/be_visitor_array/array_ch.cpp index ae0b44e6e0f..5b5b4d32575 100644 --- a/TAO/TAO_IDL/be/be_visitor_array/array_ch.cpp +++ b/TAO/TAO_IDL/be/be_visitor_array/array_ch.cpp @@ -139,60 +139,35 @@ int be_visitor_array_ch::visit_array (be_array *node) } *os << ";\n"; - // typedef the _var, _out, and _forany types - if (this->gen_var_defn (node) == -1) + // No _var or _out class for an anonymous (non-typedef'd) array. + if (this->ctx_->tdef () != 0) { - ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_array_ch::" - "visit_argument - " - "var_defn failed\n"), - -1); - } - // a class is generated for an out defn only for a variable length struct - if (node->size_type () == be_decl::VARIABLE) - { - if (this->gen_out_defn (node) == -1) + // Generate the _var and _out class declarations. + if (this->gen_var_defn (node) == -1) { ACE_ERROR_RETURN ((LM_ERROR, "be_visitor_array_ch::" "visit_argument - " - "out_defn failed\n"), + "var_defn failed\n"), -1); } - } - else - { - // fixed size - os->indent (); - // if we are a typedefed array, we can use the TYPE name to define an - // _out type. However, for anonymous arrays that do not give rise to a - // new type, we use the base type for defining an out type - if (this->ctx_->tdef ()) + // An out defn is generated only for a variable length struct + if (node->size_type () == be_decl::VARIABLE) { - *os << "typedef " << node->local_name () << " " - << node->local_name () << "_out;\n"; - } - else - { - *os << "typedef "; - if (bt->accept (this) == -1) - { - ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_array_ch::" - "visit_array - " - "base type decl failed\n"), - -1); - } - *os << " _" << node->local_name () << "_out"; - if (node->gen_dimensions (os) == -1) + if (this->gen_out_defn (node) == -1) { ACE_ERROR_RETURN ((LM_ERROR, "be_visitor_array_ch::" - "visit_array - " - "gen dimensions failed\n"), + "visit_argument - " + "out_defn failed\n"), -1); } - *os << ";\n"; + } + else + { + os->indent (); + *os << "typedef " << node->local_name () << " " + << node->local_name () << "_out;\n"; } } diff --git a/TAO/TAO_IDL/be/be_visitor_array/array_ci.cpp b/TAO/TAO_IDL/be/be_visitor_array/array_ci.cpp index 7dedb5491b8..e89dc21302f 100644 --- a/TAO/TAO_IDL/be/be_visitor_array/array_ci.cpp +++ b/TAO/TAO_IDL/be/be_visitor_array/array_ci.cpp @@ -74,27 +74,32 @@ int be_visitor_array_ci::visit_array (be_array *node) } } - // generate code for the _var, _out, and _forany types - if (this->gen_var_impl (node) == -1) + // No _var or _out class for an anonymous (non-typedef'd) array. + if (this->ctx_->tdef () != 0) { - ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_array_ci::" - "visit_array - " - "var_defn failed\n"), - -1); - } - if (node->size_type () == be_decl::VARIABLE) - { - if (this->gen_out_impl (node) == -1) + // Generate code for the _var and _out types + if (this->gen_var_impl (node) == -1) { ACE_ERROR_RETURN ((LM_ERROR, "be_visitor_array_ci::" "visit_array - " - "out_defn failed\n"), + "var_defn failed\n"), -1); } + if (node->size_type () == be_decl::VARIABLE) + { + if (this->gen_out_impl (node) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + "be_visitor_array_ci::" + "visit_array - " + "out_defn failed\n"), + -1); + } + } } + // Generate code for the forany type. if (this->gen_forany_impl (node) == -1) { ACE_ERROR_RETURN ((LM_ERROR, diff --git a/TAO/TAO_IDL/be/be_visitor_sequence/sequence_ch.cpp b/TAO/TAO_IDL/be/be_visitor_sequence/sequence_ch.cpp index 3e5ce556459..cc2ce275d93 100644 --- a/TAO/TAO_IDL/be/be_visitor_sequence/sequence_ch.cpp +++ b/TAO/TAO_IDL/be/be_visitor_sequence/sequence_ch.cpp @@ -474,33 +474,38 @@ int be_visitor_sequence_ch::visit_sequence (be_sequence *node) os->gen_endif (); // Endif macro. - // Generate the ifdefined macro for the var type. - os->gen_ifdef_macro (node->flat_name (), "_var"); - - // Generate the var and out types. - if (this->gen_var_defn (node) == -1) + // No _var or _out class for an anonymous (non-typedef'd) sequence. + if (this->ctx_->tdef () != 0) { - ACE_ERROR_RETURN ((LM_ERROR, - "(%N:%l) be_visitor_sequence_ch::" - "visit_sequence - " - "codegen for _var failed\n"), -1); - } + // Generate the ifdefined macro for the var type. + os->gen_ifdef_macro (node->flat_name (), "_var"); - os->gen_endif (); + // Generate the var and out types. + if (this->gen_var_defn (node) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_sequence_ch::" + "visit_sequence - " + "codegen for _var failed\n"), -1); + } - // Generate the ifdefined macro for the _out type. - os->gen_ifdef_macro (node->flat_name (), "_out"); + os->gen_endif (); - if (this->gen_out_defn (node) == -1) - { - ACE_ERROR_RETURN ((LM_ERROR, - "(%N:%l) be_visitor_sequence_ch::" - "visit_sequence - " - "codegen for _out failed\n"), - -1); + // Generate the ifdefined macro for the _out type. + os->gen_ifdef_macro (node->flat_name (), "_out"); + + if (this->gen_out_defn (node) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_sequence_ch::" + "visit_sequence - " + "codegen for _out failed\n"), + -1); + } + + os->gen_endif (); } - os->gen_endif (); node->cli_hdr_gen (1); return 0; diff --git a/TAO/TAO_IDL/be/be_visitor_sequence/sequence_ci.cpp b/TAO/TAO_IDL/be/be_visitor_sequence/sequence_ci.cpp index 003ce0e444f..151610e5c37 100644 --- a/TAO/TAO_IDL/be/be_visitor_sequence/sequence_ci.cpp +++ b/TAO/TAO_IDL/be/be_visitor_sequence/sequence_ci.cpp @@ -64,28 +64,33 @@ be_visitor_sequence_ci::visit_sequence (be_sequence *node) // End of instantiation. - // Generate the ifdefined macro for the sequence type. - os->gen_ifdef_macro (node->flat_name ()); - - // All we do is generate the _var and _out implementations. - if (this->gen_var_impl (node) == -1) + // No _var or _out class for an anonymous (non-typedef'd) sequence. + if (this->ctx_->tdef () != 0) { - ACE_ERROR_RETURN ((LM_ERROR, - "(%N:%l) be_visitor_sequence_ci::" - "visit_sequence - " - "codegen for _var failed\n"), -1); - } + // Generate the ifdefined macro for the sequence type. + os->gen_ifdef_macro (node->flat_name ()); - if (this->gen_out_impl (node) == -1) - { - ACE_ERROR_RETURN ((LM_ERROR, - "(%N:%l) be_visitor_sequence_ci::" - "visit_sequence - " - "codegen for _out failed\n"), -1); + // All we do is generate the _var and _out implementations. + if (this->gen_var_impl (node) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_sequence_ci::" + "visit_sequence - " + "codegen for _var failed\n"), -1); + } + + if (this->gen_out_impl (node) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_sequence_ci::" + "visit_sequence - " + "codegen for _out failed\n"), -1); + } + + // Generate the endif macro for the sequence type. + os->gen_endif (); } - // Generate the endif macro for the sequence type. - os->gen_endif (); node->cli_inline_gen (1); return 0; |