summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2001-03-02 00:55:49 +0000
committerparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2001-03-02 00:55:49 +0000
commitefb7ea05036a37764f4e9f7e785fa85ad7a568f5 (patch)
treeeb6ecb7cf4d59332885cdd93afa3bbc77ea332e5
parent5ff1ef66f0696b55e0374fffe207bd842d3e335a (diff)
downloadATCD-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.cpp57
-rw-r--r--TAO/TAO_IDL/be/be_visitor_array/array_ci.cpp29
-rw-r--r--TAO/TAO_IDL/be/be_visitor_sequence/sequence_ch.cpp47
-rw-r--r--TAO/TAO_IDL/be/be_visitor_sequence/sequence_ci.cpp41
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;