diff options
author | William R. Otte <wotte@dre.vanderbilt.edu> | 2009-07-14 12:13:54 +0000 |
---|---|---|
committer | William R. Otte <wotte@dre.vanderbilt.edu> | 2009-07-14 12:13:54 +0000 |
commit | 00a6d3c7a315423e1e584b3c7a445be1f20ebf41 (patch) | |
tree | 06d38b591fa8a01631a2d64ccf9038f12ed5d48b /TAO/TAO_IDL/be/be_visitor_null_return_value.cpp | |
parent | 618d7a1736bbc5a5f7a07c56cba9a26a5ed8548a (diff) | |
download | ATCD-00a6d3c7a315423e1e584b3c7a445be1f20ebf41.tar.gz |
Tue Jul 14 11:12:09 UTC 2009 William R. Otte <wotte@dre.vanderbilt.edu>
Diffstat (limited to 'TAO/TAO_IDL/be/be_visitor_null_return_value.cpp')
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_null_return_value.cpp | 187 |
1 files changed, 187 insertions, 0 deletions
diff --git a/TAO/TAO_IDL/be/be_visitor_null_return_value.cpp b/TAO/TAO_IDL/be/be_visitor_null_return_value.cpp new file mode 100644 index 00000000000..6a4d3bc5270 --- /dev/null +++ b/TAO/TAO_IDL/be/be_visitor_null_return_value.cpp @@ -0,0 +1,187 @@ +#include "be_visitor_null_return_value.h" + +#include "be_visitor_context.h" +#include "be_helper.h" +#include "be_array.h" +#include "be_component.h" +#include "be_enum.h" +#include "be_eventtype.h" +#include "be_home.h" +#include "be_predefined_type.h" +#include "be_sequence.h" +#include "be_string.h" +#include "be_structure.h" +#include "be_typedef.h" +#include "be_union.h" +#include "be_valuebox.h" +#include "be_valuetype.h" + +be_visitor_null_return_value::be_visitor_null_return_value ( + be_visitor_context *ctx) + : be_visitor_decl (ctx), + os_ (*ctx->stream ()) +{ +} + +be_visitor_null_return_value::~be_visitor_null_return_value (void) +{ +} + +int +be_visitor_null_return_value::visit_array (be_array *) +{ + os_ << "0"; + + return 0; +} + +int +be_visitor_null_return_value::visit_component (be_component *node) +{ + return this->visit_interface (node); +} + +int +be_visitor_null_return_value::visit_enum (be_enum *node) +{ + os_ << "static_cast< ::" << node->full_name () << "> (0UL)"; + + return 0; +} + +int +be_visitor_null_return_value::visit_eventtype (be_eventtype *node) +{ + return this->visit_valuetype (node); +} + +int +be_visitor_null_return_value::visit_home (be_home *node) +{ + return this->visit_interface (node); +} + +int +be_visitor_null_return_value::visit_interface (be_interface *node) +{ + os_ << "::" << node->full_name () << "::_nil ()"; + + return 0; +} + +int +be_visitor_null_return_value::visit_predefined_type (be_predefined_type *node) +{ + switch (node->pt ()) + { + case AST_PredefinedType::PT_boolean: + os_ << "false"; + break; + case AST_PredefinedType::PT_octet: + case AST_PredefinedType::PT_char: + case AST_PredefinedType::PT_wchar: + case AST_PredefinedType::PT_short: + case AST_PredefinedType::PT_ushort: + case AST_PredefinedType::PT_long: + case AST_PredefinedType::PT_ulong: + case AST_PredefinedType::PT_ulonglong: + case AST_PredefinedType::PT_value: + case AST_PredefinedType::PT_any: + os_ << "0"; + break; + case AST_PredefinedType::PT_longlong: + os_ << "ACE_CDR_LONGLONG_INITIALIZER"; + break; + case AST_PredefinedType::PT_float: + os_ << "0.0f"; + break; + case AST_PredefinedType::PT_double: + os_ << "0.0"; + break; + case AST_PredefinedType::PT_longdouble: + os_ << "ACE_CDR_LONG_DOUBLE_INITIALIZER"; + break; + case AST_PredefinedType::PT_object: + os_ << "::CORBA::Object::_nil ()"; + break; + case AST_PredefinedType::PT_abstract: + os_ << "::CORBA::AbstractBase::_nil ()"; + break; + case AST_PredefinedType::PT_pseudo: + os_ << "::CORBA::TypeCode::_nil ()"; + break; + default: // PT_void not handled. + break; + } + + return 0; +} + +int +be_visitor_null_return_value::visit_sequence (be_sequence *) +{ + os_ << "0"; + + return 0; +} + +int +be_visitor_null_return_value::visit_string (be_string *) +{ + os_ << "0"; + + return 0; +} + +int +be_visitor_null_return_value::visit_structure (be_structure *node) +{ + if (node->size_type () == AST_Type::FIXED) + { + os_ << "::" << node->full_name () << " ()"; + } + else + { + os_ << "0"; + } + + return 0; +} + +int +be_visitor_null_return_value::visit_typedef (be_typedef *node) +{ + return node->primitive_base_type ()->accept (this); +} + +int +be_visitor_null_return_value::visit_union (be_union *node) +{ + if (node->size_type () == AST_Type::FIXED) + { + os_ << "::" << node->full_name () << " ()"; + } + else + { + os_ << "0"; + } + + return 0; +} + +int +be_visitor_null_return_value::visit_valuebox (be_valuebox *) +{ + os_ << "0"; + + return 0; +} + +int +be_visitor_null_return_value::visit_valuetype (be_valuetype *) +{ + os_ << "0"; + + return 0; +} + |