diff options
Diffstat (limited to 'TAO/TAO_IDL/ast/ast_constant.cpp')
-rw-r--r-- | TAO/TAO_IDL/ast/ast_constant.cpp | 104 |
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) |