summaryrefslogtreecommitdiff
path: root/TAO/TAO_IDL/ast/ast_constant.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/TAO_IDL/ast/ast_constant.cpp')
-rw-r--r--TAO/TAO_IDL/ast/ast_constant.cpp104
1 files changed, 80 insertions, 24 deletions
diff --git a/TAO/TAO_IDL/ast/ast_constant.cpp b/TAO/TAO_IDL/ast/ast_constant.cpp
index 32871cedeb2..015da4b8657 100644
--- a/TAO/TAO_IDL/ast/ast_constant.cpp
+++ b/TAO/TAO_IDL/ast/ast_constant.cpp
@@ -75,6 +75,7 @@ trademarks or registered trademarks of Sun Microsystems, Inc.
#include "utl_identifier.h"
#include "ast_visitor.h"
#include "ast_generator.h"
+#include "nr_extern.h"
ACE_RCSID (ast,
ast_constant,
@@ -83,47 +84,41 @@ ACE_RCSID (ast,
// Static functions.
// Convert a value from the enum AST_Expression::ExprType to a char *.
-static const char *
-exprtype_to_string (AST_Expression::ExprType et)
+const char *
+AST_Constant::exprtype_to_string (AST_Expression::ExprType et)
{
switch (et)
{
case AST_Expression::EV_short:
- return "short";
+ return "Short";
case AST_Expression::EV_ushort:
- return "unsigned short";
+ return "UShort";
case AST_Expression::EV_long:
- return "long";
+ return "Long";
case AST_Expression::EV_ulong:
- return "unsigned long";
+ return "ULong";
case AST_Expression::EV_float:
- return "float";
+ return "Float";
case AST_Expression::EV_double:
- return "double";
+ return "Double";
case AST_Expression::EV_char:
- return "char";
+ return "Char";
case AST_Expression::EV_octet:
- return "octet";
+ return "Octet";
case AST_Expression::EV_bool:
- return "boolean";
+ return "Boolean";
case AST_Expression::EV_string:
- return "string";
- case AST_Expression::EV_enum:
- return "enum";
- case AST_Expression::EV_void:
- return "void";
- case AST_Expression::EV_none:
- return "none";
+ return "Char*";
case AST_Expression::EV_ulonglong:
- return "unsigned long long";
+ return "ULongLong";
case AST_Expression::EV_longlong:
- return "long long";
+ return "LongLong";
case AST_Expression::EV_wchar:
- return "wchar";
+ return "Wchar";
case AST_Expression::EV_wstring:
- return "wstring";
+ return "Wchar*";
case AST_Expression::EV_longdouble:
- return 0;
+ return "LongDouble";
}
return 0;
@@ -189,7 +184,7 @@ AST_Constant::~AST_Constant (void)
void
AST_Constant::dump (ACE_OSTREAM_TYPE &o)
{
- o << "const " << exprtype_to_string (this->pd_et) << " ";
+ o << "const " << this->exprtype_to_string () << " ";
this->local_name ()->dump (o);
@@ -241,6 +236,67 @@ AST_Constant::ifr_added (idl_bool val)
this->ifr_added_ = val;
}
+const char *
+AST_Constant::exprtype_to_string (void)
+{
+ switch (this->pd_et)
+ {
+ case AST_Expression::EV_short:
+ return "CORBA::Short";
+ case AST_Expression::EV_ushort:
+ return "CORBA::UShort";
+ case AST_Expression::EV_long:
+ return "CORBA::Long";
+ case AST_Expression::EV_ulong:
+ return "CORBA::ULong";
+ case AST_Expression::EV_float:
+ return "CORBA::Float";
+ case AST_Expression::EV_double:
+ return "CORBA::Double";
+ case AST_Expression::EV_char:
+ return "CORBA::Char";
+ case AST_Expression::EV_octet:
+ return "CORBA::Octet";
+ case AST_Expression::EV_bool:
+ return "CORBA::Boolean";
+ case AST_Expression::EV_string:
+ return "char *const";
+ case AST_Expression::EV_void:
+ return "void";
+ case AST_Expression::EV_none:
+ return "none";
+ case AST_Expression::EV_longlong:
+ return "CORBA::LongLong";
+ case AST_Expression::EV_ulonglong:
+ return "CORBA::ULongLong";
+ case AST_Expression::EV_wchar:
+ return "CORBA::WChar";
+ case AST_Expression::EV_wstring:
+ return "CORBA::WChar *const";
+ case AST_Expression::EV_longdouble:
+ case AST_Expression::EV_enum:
+ return 0;
+ }
+
+ return 0;
+}
+
+UTL_ScopedName *
+AST_Constant::enum_full_name (void)
+{
+ if (this->pd_et == AST_Expression::EV_enum)
+ {
+ UTL_Scope *s = this->defined_in ();
+ AST_Decl *d = s->lookup_by_name (this->pd_constant_value->n (),
+ 1);
+ return (ScopeAsDecl (d->defined_in ()))->name ();
+ }
+ else
+ {
+ return 0;
+ }
+}
+
// Narrowing methods.
IMPL_NARROW_METHODS1(AST_Constant, AST_Decl)
IMPL_NARROW_FROM_DECL(AST_Constant)