summaryrefslogtreecommitdiff
path: root/TAO/TAO_IDL/be/be_visitor_attribute/attribute.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/TAO_IDL/be/be_visitor_attribute/attribute.cpp')
-rw-r--r--TAO/TAO_IDL/be/be_visitor_attribute/attribute.cpp451
1 files changed, 314 insertions, 137 deletions
diff --git a/TAO/TAO_IDL/be/be_visitor_attribute/attribute.cpp b/TAO/TAO_IDL/be/be_visitor_attribute/attribute.cpp
index 709f3716673..40101b9fe37 100644
--- a/TAO/TAO_IDL/be/be_visitor_attribute/attribute.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_attribute/attribute.cpp
@@ -18,13 +18,9 @@
//
// ============================================================================
-#include "idl.h"
-#include "idl_extern.h"
-#include "be.h"
-
-#include "be_visitor_attribute.h"
-
-ACE_RCSID(be_visitor_attribute, attribute, "$Id$")
+ACE_RCSID (be_visitor_attribute,
+ attribute,
+ "$Id$")
// Attribute gets mapped to one or possibly two operations based on whether
@@ -65,8 +61,8 @@ be_visitor_attribute::~be_visitor_attribute (void)
int
be_visitor_attribute::visit_attribute (be_attribute *node)
{
- this->ctx_->node (node); // save the node
- this->ctx_->attribute (node); // save this attribute node
+ this->ctx_->node (node);
+ this->ctx_->attribute (node);
// first the "get" operation
@@ -80,15 +76,15 @@ be_visitor_attribute::visit_attribute (be_attribute *node)
get_op.set_defined_in (node->defined_in ());
// Get the strategy from the attribute and hand it over
- // to the operation
+ // to the operation.
delete get_op.set_strategy (node->get_get_strategy ());
be_visitor_context ctx (*this->ctx_);
+ int status = 1;
- // this switch statement eliminates the need for different classes that have
- // exactly the same code except different states.
switch (this->ctx_->state ())
{
+ // These two cases are the only ones that could involved a strategy.
case TAO_CodeGen::TAO_ATTRIBUTE_CH:
ctx.state (TAO_CodeGen::TAO_OPERATION_CH);
break;
@@ -96,73 +92,154 @@ be_visitor_attribute::visit_attribute (be_attribute *node)
ctx.state (TAO_CodeGen::TAO_OPERATION_CS);
break;
case TAO_CodeGen::TAO_ATTRIBUTE_SH:
- ctx.state (TAO_CodeGen::TAO_OPERATION_SH);
- break;
+ {
+ ctx.state (TAO_CodeGen::TAO_OPERATION_SH);
+ be_visitor_operation_sh visitor (&ctx);
+ status = get_op.accept (&visitor);
+ break;
+ }
case TAO_CodeGen::TAO_ATTRIBUTE_IH:
- ctx.state (TAO_CodeGen::TAO_OPERATION_IH);
- break;
+ {
+ ctx.state (TAO_CodeGen::TAO_OPERATION_IH);
+ be_visitor_operation_ih visitor (&ctx);
+ status = get_op.accept (&visitor);
+ break;
+ }
case TAO_CodeGen::TAO_ATTRIBUTE_SS:
- ctx.state (TAO_CodeGen::TAO_OPERATION_SS);
- break;
+ {
+ ctx.state (TAO_CodeGen::TAO_OPERATION_SS);
+ be_visitor_operation_ss visitor (&ctx);
+ status = get_op.accept (&visitor);
+ break;
+ }
case TAO_CodeGen::TAO_ATTRIBUTE_IS:
- ctx.state (TAO_CodeGen::TAO_OPERATION_IS);
- break;
+ {
+ ctx.state (TAO_CodeGen::TAO_OPERATION_IS);
+ be_visitor_operation_is visitor (&ctx);
+ status = get_op.accept (&visitor);
+ break;
+ }
case TAO_CodeGen::TAO_ATTRIBUTE_THRU_POA_COLLOCATED_SH:
- ctx.state (TAO_CodeGen::TAO_OPERATION_THRU_POA_COLLOCATED_SH);
- break;
+ {
+ ctx.state (TAO_CodeGen::TAO_OPERATION_THRU_POA_COLLOCATED_SH);
+ be_visitor_operation_thru_poa_collocated_sh visitor (&ctx);
+ status = get_op.accept (&visitor);
+ break;
+ }
case TAO_CodeGen::TAO_ATTRIBUTE_THRU_POA_COLLOCATED_SS:
- ctx.state (TAO_CodeGen::TAO_OPERATION_THRU_POA_COLLOCATED_SS);
- break;
+ {
+ ctx.state (TAO_CodeGen::TAO_OPERATION_THRU_POA_COLLOCATED_SS);
+ be_visitor_operation_thru_poa_collocated_ss visitor (&ctx);
+ status = get_op.accept (&visitor);
+ break;
+ }
case TAO_CodeGen::TAO_ATTRIBUTE_DIRECT_COLLOCATED_SH:
- ctx.state (TAO_CodeGen::TAO_OPERATION_DIRECT_COLLOCATED_SH);
- break;
+ {
+ ctx.state (TAO_CodeGen::TAO_OPERATION_DIRECT_COLLOCATED_SH);
+ be_visitor_operation_direct_collocated_sh visitor (&ctx);
+ status = get_op.accept (&visitor);
+ break;
+ }
case TAO_CodeGen::TAO_ATTRIBUTE_DIRECT_COLLOCATED_SS:
- ctx.state (TAO_CodeGen::TAO_OPERATION_DIRECT_COLLOCATED_SS);
- break;
-
+ {
+ ctx.state (TAO_CodeGen::TAO_OPERATION_DIRECT_COLLOCATED_SS);
+ be_visitor_operation_direct_collocated_ss visitor (&ctx);
+ status = get_op.accept (&visitor);
+ break;
+ }
case TAO_CodeGen::TAO_ATTRIBUTE_BASE_PROXY_IMPL_CH:
- ctx.state (TAO_CodeGen::TAO_OPERATION_BASE_PROXY_IMPL_CH);
- break;
+ {
+ ctx.state (TAO_CodeGen::TAO_OPERATION_BASE_PROXY_IMPL_CH);
+ be_visitor_operation_base_proxy_impl_ch visitor (&ctx);
+ status = get_op.accept (&visitor);
+ break;
+ }
case TAO_CodeGen::TAO_ATTRIBUTE_PROXY_IMPL_XH:
- ctx.state (TAO_CodeGen::TAO_OPERATION_PROXY_IMPL_XH);
- break;
+ {
+ ctx.state (TAO_CodeGen::TAO_OPERATION_PROXY_IMPL_XH);
+ be_visitor_operation_proxy_impl_xh visitor (&ctx);
+ status = get_op.accept (&visitor);
+ break;
+ }
case TAO_CodeGen::TAO_ATTRIBUTE_REMOTE_PROXY_IMPL_CS:
- ctx.state (TAO_CodeGen::TAO_OPERATION_REMOTE_PROXY_IMPL_CS);
- break;
+ {
+ ctx.state (TAO_CodeGen::TAO_OPERATION_REMOTE_PROXY_IMPL_CS);
+ be_visitor_operation_remote_proxy_impl_cs visitor (&ctx);
+ status = get_op.accept (&visitor);
+ break;
+ }
case TAO_CodeGen::TAO_ATTRIBUTE_THRU_POA_PROXY_IMPL_SS:
- ctx.state (TAO_CodeGen::TAO_OPERATION_THRU_POA_PROXY_IMPL_SS);
- break;
+ {
+ ctx.state (TAO_CodeGen::TAO_OPERATION_THRU_POA_PROXY_IMPL_SS);
+ be_visitor_operation_thru_poa_proxy_impl_ss visitor (&ctx);
+ status = get_op.accept (&visitor);
+ break;
+ }
case TAO_CodeGen::TAO_ATTRIBUTE_DIRECT_PROXY_IMPL_SS:
- ctx.state (TAO_CodeGen::TAO_OPERATION_DIRECT_PROXY_IMPL_SS);
- break;
-
+ {
+ ctx.state (TAO_CodeGen::TAO_OPERATION_DIRECT_PROXY_IMPL_SS);
+ be_visitor_operation_direct_proxy_impl_ss visitor (&ctx);
+ status = get_op.accept (&visitor);
+ break;
+ }
case TAO_CodeGen::TAO_ATTRIBUTE_SMART_PROXY_CH:
- ctx.state (TAO_CodeGen::TAO_OPERATION_SMART_PROXY_CH);
- break;
+ {
+ ctx.state (TAO_CodeGen::TAO_OPERATION_SMART_PROXY_CH);
+ be_visitor_operation_smart_proxy_ch visitor (&ctx);
+ status = get_op.accept (&visitor);
+ break;
+ }
case TAO_CodeGen::TAO_ATTRIBUTE_SMART_PROXY_CS:
- ctx.state (TAO_CodeGen::TAO_OPERATION_SMART_PROXY_CS);
- break;
+ {
+ ctx.state (TAO_CodeGen::TAO_OPERATION_SMART_PROXY_CS);
+ be_visitor_operation_smart_proxy_cs visitor (&ctx);
+ status = get_op.accept (&visitor);
+ break;
+ }
case TAO_CodeGen::TAO_ATTRIBUTE_INTERCEPTORS_CH:
- ctx.state (TAO_CodeGen::TAO_OPERATION_INTERCEPTORS_CH);
- break;
+ {
+ ctx.state (TAO_CodeGen::TAO_OPERATION_INTERCEPTORS_CH);
+ be_visitor_operation_interceptors_ch visitor (&ctx);
+ status = get_op.accept (&visitor);
+ break;
+ }
case TAO_CodeGen::TAO_ATTRIBUTE_INTERCEPTORS_CS:
- ctx.state (TAO_CodeGen::TAO_OPERATION_INTERCEPTORS_CS);
- break;
+ {
+ ctx.state (TAO_CodeGen::TAO_OPERATION_INTERCEPTORS_CS);
+ be_visitor_operation_interceptors_cs visitor (&ctx);
+ status = get_op.accept (&visitor);
+ break;
+ }
case TAO_CodeGen::TAO_ATTRIBUTE_INTERCEPTORS_SH:
- ctx.state (TAO_CodeGen::TAO_OPERATION_INTERCEPTORS_SH);
- break;
+ {
+ ctx.state (TAO_CodeGen::TAO_OPERATION_INTERCEPTORS_SH);
+ be_visitor_operation_interceptors_sh visitor (&ctx);
+ status = get_op.accept (&visitor);
+ break;
+ }
case TAO_CodeGen::TAO_ATTRIBUTE_INTERCEPTORS_SS:
- ctx.state (TAO_CodeGen::TAO_OPERATION_INTERCEPTORS_SS);
- break;
+ {
+ ctx.state (TAO_CodeGen::TAO_OPERATION_INTERCEPTORS_SS);
+ be_visitor_operation_interceptors_ss visitor (&ctx);
+ status = get_op.accept (&visitor);
+ break;
+ }
case TAO_CodeGen::TAO_ATTRIBUTE_TIE_SH:
- ctx.state (TAO_CodeGen::TAO_OPERATION_TIE_SH);
- break;
+ {
+ ctx.state (TAO_CodeGen::TAO_OPERATION_TIE_SH);
+ be_visitor_operation_tie_sh visitor (&ctx);
+ status = get_op.accept (&visitor);
+ break;
+ }
case TAO_CodeGen::TAO_ATTRIBUTE_TIE_SI:
- ctx.state (TAO_CodeGen::TAO_OPERATION_TIE_SI);
- break;
-
+ {
+ ctx.state (TAO_CodeGen::TAO_OPERATION_TIE_SI);
+ be_visitor_operation_tie_si visitor (&ctx);
+ status = get_op.accept (&visitor);
+ break;
+ }
default:
- // error
+ // Error.
ACE_ERROR_RETURN ((LM_ERROR,
"(%N:%l) be_visitor_attribute::"
"visit_attribute - "
@@ -170,28 +247,19 @@ be_visitor_attribute::visit_attribute (be_attribute *node)
-1);
}
- // Change the state depending on the kind of node strategy
- ctx.state (get_op.next_state (ctx.state ()));
-
- be_visitor *visitor = tao_cg->make_visitor (&ctx);
-
- if (!visitor || (get_op.accept (visitor) == -1))
+ if (status == -1)
{
- delete visitor;
ACE_ERROR_RETURN ((LM_ERROR,
"(%N:%l) be_visitor_attribute::"
"visit_attribute - "
"codegen for get_attribute failed\n"),
-1);
}
-
- delete visitor;
- visitor = 0;
-
- if (get_op.has_extra_code_generation (ctx.state ()))
+ else if (status == 1)
{
- // Change the state depending on the kind of node strategy
- ctx.state (get_op.next_state (ctx.state (), 1));
+ // Change the state depending on the kind of node strategy.
+ ctx.state (get_op.next_state (ctx.state ()));
+
be_visitor *visitor = tao_cg->make_visitor (&ctx);
if (!visitor || (get_op.accept (visitor) == -1))
@@ -206,6 +274,26 @@ be_visitor_attribute::visit_attribute (be_attribute *node)
delete visitor;
visitor = 0;
+
+ if (get_op.has_extra_code_generation (ctx.state ()))
+ {
+ // Change the state depending on the kind of node strategy.
+ ctx.state (get_op.next_state (ctx.state (), 1));
+ be_visitor *visitor = tao_cg->make_visitor (&ctx);
+
+ if (!visitor || (get_op.accept (visitor) == -1))
+ {
+ delete visitor;
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_attribute::"
+ "visit_attribute - "
+ "codegen for get_attribute failed\n"),
+ -1);
+ }
+
+ delete visitor;
+ visitor = 0;
+ }
}
// Do nothing for readonly attributes.
@@ -214,28 +302,22 @@ be_visitor_attribute::visit_attribute (be_attribute *node)
return 0;
}
- // Create the set method.
- Identifier *id = 0;
- UTL_ScopedName *sn = 0;
-
- ACE_NEW_RETURN (id,
- Identifier ("void"),
- -1);
+ status = 1;
- ACE_NEW_RETURN (sn,
- UTL_ScopedName (id,
- 0),
- -1);
+ // Create the set method.
+ Identifier id ("void");
+ UTL_ScopedName sn (&id,
+ 0);
- // the return type is "void"
+ // The return type is "void".
be_predefined_type rt (AST_PredefinedType::PT_void,
- sn);
- // argument type is the same as the attribute type
+ &sn);
+ // Argument type is the same as the attribute type.
be_argument arg (AST_Argument::dir_IN,
node->field_type (),
node->name ());
arg.set_name ((UTL_IdList *) node->name ()->copy ());
- // create the operation
+ // Create the operation.
be_operation set_op (&rt,
AST_Operation::OP_noflags,
node->name (),
@@ -250,10 +332,11 @@ be_visitor_attribute::visit_attribute (be_attribute *node)
delete set_op.set_strategy (node->get_set_strategy ());
ctx = *this->ctx_;
- // this switch statement eliminates the need for different classes that have
- // exactly the same code except different states.
+ status = 1;
+
switch (this->ctx_->state ())
{
+ // These two cases are the only ones that could involved a strategy.
case TAO_CodeGen::TAO_ATTRIBUTE_CH:
ctx.state (TAO_CodeGen::TAO_OPERATION_CH);
break;
@@ -261,72 +344,154 @@ be_visitor_attribute::visit_attribute (be_attribute *node)
ctx.state (TAO_CodeGen::TAO_OPERATION_CS);
break;
case TAO_CodeGen::TAO_ATTRIBUTE_SH:
- ctx.state (TAO_CodeGen::TAO_OPERATION_SH);
- break;
+ {
+ ctx.state (TAO_CodeGen::TAO_OPERATION_SH);
+ be_visitor_operation_sh visitor (&ctx);
+ status = set_op.accept (&visitor);
+ break;
+ }
case TAO_CodeGen::TAO_ATTRIBUTE_IH:
- ctx.state (TAO_CodeGen::TAO_OPERATION_IH);
- break;
+ {
+ ctx.state (TAO_CodeGen::TAO_OPERATION_IH);
+ be_visitor_operation_ih visitor (&ctx);
+ status = set_op.accept (&visitor);
+ break;
+ }
case TAO_CodeGen::TAO_ATTRIBUTE_SS:
- ctx.state (TAO_CodeGen::TAO_OPERATION_SS);
- break;
+ {
+ ctx.state (TAO_CodeGen::TAO_OPERATION_SS);
+ be_visitor_operation_ss visitor (&ctx);
+ status = set_op.accept (&visitor);
+ break;
+ }
case TAO_CodeGen::TAO_ATTRIBUTE_IS:
- ctx.state (TAO_CodeGen::TAO_OPERATION_IS);
- break;
+ {
+ ctx.state (TAO_CodeGen::TAO_OPERATION_IS);
+ be_visitor_operation_is visitor (&ctx);
+ status = set_op.accept (&visitor);
+ break;
+ }
case TAO_CodeGen::TAO_ATTRIBUTE_THRU_POA_COLLOCATED_SH:
- ctx.state (TAO_CodeGen::TAO_OPERATION_THRU_POA_COLLOCATED_SH);
- break;
+ {
+ ctx.state (TAO_CodeGen::TAO_OPERATION_THRU_POA_COLLOCATED_SH);
+ be_visitor_operation_thru_poa_collocated_sh visitor (&ctx);
+ status = set_op.accept (&visitor);
+ break;
+ }
case TAO_CodeGen::TAO_ATTRIBUTE_THRU_POA_COLLOCATED_SS:
- ctx.state (TAO_CodeGen::TAO_OPERATION_THRU_POA_COLLOCATED_SS);
- break;
+ {
+ ctx.state (TAO_CodeGen::TAO_OPERATION_THRU_POA_COLLOCATED_SS);
+ be_visitor_operation_thru_poa_collocated_ss visitor (&ctx);
+ status = set_op.accept (&visitor);
+ break;
+ }
case TAO_CodeGen::TAO_ATTRIBUTE_DIRECT_COLLOCATED_SH:
- ctx.state (TAO_CodeGen::TAO_OPERATION_DIRECT_COLLOCATED_SH);
- break;
+ {
+ ctx.state (TAO_CodeGen::TAO_OPERATION_DIRECT_COLLOCATED_SH);
+ be_visitor_operation_direct_collocated_sh visitor (&ctx);
+ status = set_op.accept (&visitor);
+ break;
+ }
case TAO_CodeGen::TAO_ATTRIBUTE_DIRECT_COLLOCATED_SS:
- ctx.state (TAO_CodeGen::TAO_OPERATION_DIRECT_COLLOCATED_SS);
- break;
-
+ {
+ ctx.state (TAO_CodeGen::TAO_OPERATION_DIRECT_COLLOCATED_SS);
+ be_visitor_operation_direct_collocated_ss visitor (&ctx);
+ status = set_op.accept (&visitor);
+ break;
+ }
case TAO_CodeGen::TAO_ATTRIBUTE_BASE_PROXY_IMPL_CH:
- ctx.state (TAO_CodeGen::TAO_OPERATION_BASE_PROXY_IMPL_CH);
- break;
+ {
+ ctx.state (TAO_CodeGen::TAO_OPERATION_BASE_PROXY_IMPL_CH);
+ be_visitor_operation_base_proxy_impl_ch visitor (&ctx);
+ status = set_op.accept (&visitor);
+ break;
+ }
case TAO_CodeGen::TAO_ATTRIBUTE_PROXY_IMPL_XH:
- ctx.state (TAO_CodeGen::TAO_OPERATION_PROXY_IMPL_XH);
- break;
+ {
+ ctx.state (TAO_CodeGen::TAO_OPERATION_PROXY_IMPL_XH);
+ be_visitor_operation_proxy_impl_xh visitor (&ctx);
+ status = set_op.accept (&visitor);
+ break;
+ }
case TAO_CodeGen::TAO_ATTRIBUTE_REMOTE_PROXY_IMPL_CS:
- ctx.state (TAO_CodeGen::TAO_OPERATION_REMOTE_PROXY_IMPL_CS);
- break;
+ {
+ ctx.state (TAO_CodeGen::TAO_OPERATION_REMOTE_PROXY_IMPL_CS);
+ be_visitor_operation_remote_proxy_impl_cs visitor (&ctx);
+ status = set_op.accept (&visitor);
+ break;
+ }
case TAO_CodeGen::TAO_ATTRIBUTE_THRU_POA_PROXY_IMPL_SS:
- ctx.state (TAO_CodeGen::TAO_OPERATION_THRU_POA_PROXY_IMPL_SS);
- break;
+ {
+ ctx.state (TAO_CodeGen::TAO_OPERATION_THRU_POA_PROXY_IMPL_SS);
+ be_visitor_operation_thru_poa_proxy_impl_ss visitor (&ctx);
+ status = set_op.accept (&visitor);
+ break;
+ }
case TAO_CodeGen::TAO_ATTRIBUTE_DIRECT_PROXY_IMPL_SS:
- ctx.state (TAO_CodeGen::TAO_OPERATION_DIRECT_PROXY_IMPL_SS);
- break;
- case TAO_CodeGen::TAO_ATTRIBUTE_TIE_SH:
- ctx.state (TAO_CodeGen::TAO_OPERATION_TIE_SH);
- break;
- case TAO_CodeGen::TAO_ATTRIBUTE_TIE_SI:
- ctx.state (TAO_CodeGen::TAO_OPERATION_TIE_SI);
- break;
+ {
+ ctx.state (TAO_CodeGen::TAO_OPERATION_DIRECT_PROXY_IMPL_SS);
+ be_visitor_operation_direct_proxy_impl_ss visitor (&ctx);
+ status = set_op.accept (&visitor);
+ break;
+ }
case TAO_CodeGen::TAO_ATTRIBUTE_SMART_PROXY_CH:
- ctx.state (TAO_CodeGen::TAO_OPERATION_SMART_PROXY_CH);
- break;
+ {
+ ctx.state (TAO_CodeGen::TAO_OPERATION_SMART_PROXY_CH);
+ be_visitor_operation_smart_proxy_ch visitor (&ctx);
+ status = set_op.accept (&visitor);
+ break;
+ }
case TAO_CodeGen::TAO_ATTRIBUTE_SMART_PROXY_CS:
- ctx.state (TAO_CodeGen::TAO_OPERATION_SMART_PROXY_CS);
- break;
+ {
+ ctx.state (TAO_CodeGen::TAO_OPERATION_SMART_PROXY_CS);
+ be_visitor_operation_smart_proxy_cs visitor (&ctx);
+ status = set_op.accept (&visitor);
+ break;
+ }
case TAO_CodeGen::TAO_ATTRIBUTE_INTERCEPTORS_CH:
- ctx.state (TAO_CodeGen::TAO_OPERATION_INTERCEPTORS_CH);
- break;
+ {
+ ctx.state (TAO_CodeGen::TAO_OPERATION_INTERCEPTORS_CH);
+ be_visitor_operation_interceptors_ch visitor (&ctx);
+ status = set_op.accept (&visitor);
+ break;
+ }
case TAO_CodeGen::TAO_ATTRIBUTE_INTERCEPTORS_CS:
- ctx.state (TAO_CodeGen::TAO_OPERATION_INTERCEPTORS_CS);
- break;
+ {
+ ctx.state (TAO_CodeGen::TAO_OPERATION_INTERCEPTORS_CS);
+ be_visitor_operation_interceptors_cs visitor (&ctx);
+ status = set_op.accept (&visitor);
+ break;
+ }
case TAO_CodeGen::TAO_ATTRIBUTE_INTERCEPTORS_SH:
- ctx.state (TAO_CodeGen::TAO_OPERATION_INTERCEPTORS_SH);
- break;
+ {
+ ctx.state (TAO_CodeGen::TAO_OPERATION_INTERCEPTORS_SH);
+ be_visitor_operation_interceptors_sh visitor (&ctx);
+ status = set_op.accept (&visitor);
+ break;
+ }
case TAO_CodeGen::TAO_ATTRIBUTE_INTERCEPTORS_SS:
- ctx.state (TAO_CodeGen::TAO_OPERATION_INTERCEPTORS_SS);
- break;
-
+ {
+ ctx.state (TAO_CodeGen::TAO_OPERATION_INTERCEPTORS_SS);
+ be_visitor_operation_interceptors_ss visitor (&ctx);
+ status = set_op.accept (&visitor);
+ break;
+ }
+ case TAO_CodeGen::TAO_ATTRIBUTE_TIE_SH:
+ {
+ ctx.state (TAO_CodeGen::TAO_OPERATION_TIE_SH);
+ be_visitor_operation_tie_sh visitor (&ctx);
+ status = set_op.accept (&visitor);
+ break;
+ }
+ case TAO_CodeGen::TAO_ATTRIBUTE_TIE_SI:
+ {
+ ctx.state (TAO_CodeGen::TAO_OPERATION_TIE_SI);
+ be_visitor_operation_tie_si visitor (&ctx);
+ status = set_op.accept (&visitor);
+ break;
+ }
default:
- // error
+ // Error.
ACE_ERROR_RETURN ((LM_ERROR,
"(%N:%l) be_visitor_attribute::"
"visit_attribute - "
@@ -334,10 +499,22 @@ be_visitor_attribute::visit_attribute (be_attribute *node)
-1);
}
+ if (status == 0)
+ {
+ return 0;
+ }
+ else if (status == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_attribute::"
+ "visit_attribute - "
+ "codegen for get_attribute failed\n"),
+ -1);
+ }
// Change the state depending on the kind of node strategy
ctx.state (set_op.next_state (ctx.state ()));
- visitor = tao_cg->make_visitor (&ctx);
+ be_visitor *visitor = tao_cg->make_visitor (&ctx);
if (!visitor || (set_op.accept (visitor) == -1))
{