summaryrefslogtreecommitdiff
path: root/TAO/TAO_IDL/be/be_visitor_null_return_value.cpp
diff options
context:
space:
mode:
authorWilliam R. Otte <wotte@dre.vanderbilt.edu>2009-07-14 12:13:54 +0000
committerWilliam R. Otte <wotte@dre.vanderbilt.edu>2009-07-14 12:13:54 +0000
commit00a6d3c7a315423e1e584b3c7a445be1f20ebf41 (patch)
tree06d38b591fa8a01631a2d64ccf9038f12ed5d48b /TAO/TAO_IDL/be/be_visitor_null_return_value.cpp
parent618d7a1736bbc5a5f7a07c56cba9a26a5ed8548a (diff)
downloadATCD-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.cpp187
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;
+}
+