diff options
author | mcorino <mcorino@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2010-10-22 11:39:41 +0000 |
---|---|---|
committer | mcorino <mcorino@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2010-10-22 11:39:41 +0000 |
commit | 4f54804ca64150b6253a1396a164d89033cecf1f (patch) | |
tree | 1a7de0150f1e527a24a8d745fc9e2302e05c32be | |
parent | 2ce5cfe2b8d701eb2fc217cc178d890f7deaabd6 (diff) | |
download | ATCD-4f54804ca64150b6253a1396a164d89033cecf1f.tar.gz |
Fri Oct 22 11:32:10 UTC 2010 Martin Corino <corino_m@remedy.nl>
* TAO_IDL/be/be_visitor_typecode/struct_typecode.cpp:
* TAO_IDL/be/be_visitor_typecode/union_typecode.cpp:
* TAO_IDL/be/be_visitor_typecode/value_typecode.cpp:
Some changes to fix behaviour when encountering nested
recursive type.
-rw-r--r-- | TAO/ChangeLog | 8 | ||||
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_typecode/struct_typecode.cpp | 7 | ||||
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_typecode/union_typecode.cpp | 7 | ||||
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_typecode/value_typecode.cpp | 7 |
4 files changed, 23 insertions, 6 deletions
diff --git a/TAO/ChangeLog b/TAO/ChangeLog index 9cdc209d3d6..46f28d3a5b8 100644 --- a/TAO/ChangeLog +++ b/TAO/ChangeLog @@ -1,3 +1,11 @@ +Fri Oct 22 11:32:10 UTC 2010 Martin Corino <corino_m@remedy.nl> + + * TAO_IDL/be/be_visitor_typecode/struct_typecode.cpp: + * TAO_IDL/be/be_visitor_typecode/union_typecode.cpp: + * TAO_IDL/be/be_visitor_typecode/value_typecode.cpp: + Some changes to fix behaviour when encountering nested + recursive type. + Fri Oct 22 07:50:54 UTC 2010 Marcel Smit <msmit@remedy.nl> * TAO_IDL/be/be_visitor_component/executor_exh.cpp: diff --git a/TAO/TAO_IDL/be/be_visitor_typecode/struct_typecode.cpp b/TAO/TAO_IDL/be/be_visitor_typecode/struct_typecode.cpp index f3d62577312..ff4a1ddd970 100644 --- a/TAO/TAO_IDL/be/be_visitor_typecode/struct_typecode.cpp +++ b/TAO/TAO_IDL/be/be_visitor_typecode/struct_typecode.cpp @@ -33,8 +33,8 @@ TAO::be_visitor_struct_typecode::visit_structure (be_structure * node) this->queue_lookup (this->tc_queue_, node); ACE_Unbounded_Queue<AST_Type *> recursion_queue; - this->is_recursive_ = node->in_recursion (recursion_queue); - if (qnode && this->is_recursive_) + bool in_recursion = node->in_recursion (recursion_queue); + if (qnode && in_recursion) { // we're repeated and we're recursive so just leave return 0; @@ -53,6 +53,9 @@ TAO::be_visitor_struct_typecode::visit_structure (be_structure * node) return 0; } + // as this was no nested visit mark this typecode as recursive + this->is_recursive_ = in_recursion; + static bool const is_exception = false; return this->visit (node, is_exception); } diff --git a/TAO/TAO_IDL/be/be_visitor_typecode/union_typecode.cpp b/TAO/TAO_IDL/be/be_visitor_typecode/union_typecode.cpp index 639031801ee..388c40f0e27 100644 --- a/TAO/TAO_IDL/be/be_visitor_typecode/union_typecode.cpp +++ b/TAO/TAO_IDL/be/be_visitor_typecode/union_typecode.cpp @@ -34,8 +34,8 @@ TAO::be_visitor_union_typecode::visit_union (be_union * node) this->queue_lookup (this->tc_queue_, node); ACE_Unbounded_Queue<AST_Type *> recursion_queue; - this->is_recursive_ = node->in_recursion (recursion_queue); - if (qnode && this->is_recursive_) + bool in_recursion = node->in_recursion (recursion_queue); + if (qnode && in_recursion) { // we're repeated and we're recursive so just leave return 0; @@ -54,6 +54,9 @@ TAO::be_visitor_union_typecode::visit_union (be_union * node) return 0; } + // as this was no nested visit mark this typecode as recursive + this->is_recursive_ = in_recursion; + this->is_nested_ = true; TAO_OutStream & os = *this->ctx_->stream (); diff --git a/TAO/TAO_IDL/be/be_visitor_typecode/value_typecode.cpp b/TAO/TAO_IDL/be/be_visitor_typecode/value_typecode.cpp index 8c62547813c..ace5a6a1ba6 100644 --- a/TAO/TAO_IDL/be/be_visitor_typecode/value_typecode.cpp +++ b/TAO/TAO_IDL/be/be_visitor_typecode/value_typecode.cpp @@ -33,8 +33,8 @@ TAO::be_visitor_value_typecode::visit_valuetype (be_valuetype * node) this->queue_lookup (this->tc_queue_, node); ACE_Unbounded_Queue<AST_Type *> recursion_queue; - this->is_recursive_ = node->in_recursion (recursion_queue); - if (qnode && this->is_recursive_) + bool in_recursion = node->in_recursion (recursion_queue); + if (qnode && in_recursion) { // we're repeated and we're recursive so just leave return 0; @@ -53,6 +53,9 @@ TAO::be_visitor_value_typecode::visit_valuetype (be_valuetype * node) return 0; } + // as this was no nested visit mark this typecode as recursive + this->is_recursive_ = in_recursion; + this->is_nested_ = true; TAO_OutStream & os = *this->ctx_->stream (); |