summaryrefslogtreecommitdiff
path: root/TAO/TAO_IDL/ast/ast_expression.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/TAO_IDL/ast/ast_expression.cpp')
-rw-r--r--TAO/TAO_IDL/ast/ast_expression.cpp3687
1 files changed, 2017 insertions, 1670 deletions
diff --git a/TAO/TAO_IDL/ast/ast_expression.cpp b/TAO/TAO_IDL/ast/ast_expression.cpp
index 913dbefa78f..4819b86837e 100644
--- a/TAO/TAO_IDL/ast/ast_expression.cpp
+++ b/TAO/TAO_IDL/ast/ast_expression.cpp
@@ -62,1275 +62,1492 @@ NOTE:
SunOS, SunSoft, Sun, Solaris, Sun Microsystems or the Sun logo are
trademarks or registered trademarks of Sun Microsystems, Inc.
- */
+*/
-/* * ast_expression.cc - Implementation of class AST_Expression
- *
- * AST_Expression nodes denote IDL expressions used in the IDL input.
- */
+// AST_Expression nodes denote IDL expressions used in the IDL input.
-#include "idl.h"
-#include "idl_extern.h"
+#include "idl.h"
+#include "idl_extern.h"
ACE_RCSID(ast, ast_expression, "$Id$")
// Helper function to fill out the details of where this expression
-// is defined
+// is defined.
void
-AST_Expression::fill_definition_details()
+AST_Expression::fill_definition_details (void)
{
- pd_defined_in = idl_global->scopes()->depth() > 0
- ? idl_global->scopes()->top()
- : 0 ;
- pd_line = idl_global->lineno();
- pd_file_name = idl_global->filename();
+ this->pd_defined_in = idl_global->scopes()->depth() > 0
+ ? idl_global->scopes()->top()
+ : 0 ;
+ this->pd_line = idl_global->lineno ();
+ this->pd_file_name = idl_global->filename ();
}
-/*
- * Constructor(s) and destructor
- */
+// Constructor(s) and destructor.
-/*
- * An AST_Expression denoting a symbolic name
- */
+// An AST_Expression denoting a symbolic name.
AST_Expression::AST_Expression (UTL_ScopedName *nm)
: pd_ec (EC_symbol),
- pd_ev (NULL),
- pd_v1 (NULL),
- pd_v2 (NULL),
+ pd_ev (0),
+ pd_v1 (0),
+ pd_v2 (0),
pd_n (nm)
{
- fill_definition_details ();
+ this->fill_definition_details ();
}
-/*
- * An AST_Expression denoting a type coercion from another AST_Expression
- */
+// An AST_Expression denoting a type coercion from another AST_Expression.
AST_Expression::AST_Expression (AST_Expression *v,
ExprType t)
: pd_ec (EC_none),
- pd_ev (NULL),
- pd_v1 (NULL),
- pd_v2 (NULL),
- pd_n (NULL)
+ pd_ev (0),
+ pd_v1 (0),
+ pd_v2 (0),
+ pd_n (0)
{
- fill_definition_details ();
+ this->fill_definition_details ();
- pd_ev = v->coerce (t);
- if (pd_ev == NULL)
- idl_global->err ()->coercion_error (v, t);
+ this->pd_ev = v->coerce (t);
+
+ if (this->pd_ev == 0)
+ {
+ idl_global->err ()->coercion_error (v,
+ t);
+ }
}
-/*
- * An AST_Expression denoting a binary expression combination from
- * two other AST_Expressions
- */
+// An AST_Expression denoting a binary expression combination from
+// two other AST_Expressions.
AST_Expression::AST_Expression (ExprComb c,
AST_Expression *ev1,
AST_Expression *ev2)
: pd_ec (c),
- pd_ev (NULL),
+ pd_ev (0),
pd_v1 (ev1),
pd_v2 (ev2),
- pd_n (NULL)
+ pd_n (0)
{
- fill_definition_details();
+ this->fill_definition_details ();
}
-/*
- * An AST_Expression denoting a short integer
- */
-AST_Expression::AST_Expression(short sv)
- : pd_ec(EC_none),
- pd_ev(NULL),
- pd_v1(NULL),
- pd_v2(NULL),
- pd_n(NULL)
+// An AST_Expression denoting a short integer.
+AST_Expression::AST_Expression (short sv)
+ : pd_ec (EC_none),
+ pd_ev (0),
+ pd_v1 (0),
+ pd_v2 (0),
+ pd_n (0)
{
- fill_definition_details();
+ this->fill_definition_details ();
- pd_ev = new AST_ExprValue;
- pd_ev->et = EV_short;
- pd_ev->u.sval = sv;
+ ACE_NEW (this->pd_ev,
+ AST_ExprValue);
+
+ this->pd_ev->et = EV_short;
+ this->pd_ev->u.sval = sv;
}
-/*
- * An AST_Expression denoting an unsigned short integer
- */
-AST_Expression::AST_Expression(unsigned short usv)
- : pd_ec(EC_none),
- pd_ev(NULL),
- pd_v1(NULL),
- pd_v2(NULL),
- pd_n(NULL)
+// An AST_Expression denoting an unsigned short integer.
+AST_Expression::AST_Expression (unsigned short usv)
+ : pd_ec (EC_none),
+ pd_ev (0),
+ pd_v1 (0),
+ pd_v2 (0),
+ pd_n (0)
{
- fill_definition_details();
+ this->fill_definition_details ();
+
+ ACE_NEW (this->pd_ev,
+ AST_ExprValue);
- pd_ev = new AST_ExprValue;
- pd_ev->et = EV_ushort;
- pd_ev->u.usval = usv;
+ this->pd_ev->et = EV_ushort;
+ this->pd_ev->u.usval = usv;
}
-/*
- * An AST_Expression denoting a long integer
- */
-AST_Expression::AST_Expression(long lv)
- : pd_ec(EC_none),
- pd_ev(NULL),
- pd_v1(NULL),
- pd_v2(NULL),
- pd_n(NULL)
+// An AST_Expression denoting a long integer.
+AST_Expression::AST_Expression (long lv)
+ : pd_ec (EC_none),
+ pd_ev (0),
+ pd_v1 (0),
+ pd_v2 (0),
+ pd_n (0)
{
- fill_definition_details();
+ this->fill_definition_details ();
+
+ ACE_NEW (this->pd_ev,
+ AST_ExprValue);
- pd_ev = new AST_ExprValue;
- pd_ev->et = EV_long;
- pd_ev->u.lval = lv;
+ this->pd_ev->et = EV_long;
+ this->pd_ev->u.lval = lv;
}
-/*
- * An AST_Expression denoting a long integer being used as a boolean
- */
-AST_Expression::AST_Expression(long lv, ExprType t)
- : pd_ec(EC_none),
- pd_ev(NULL),
- pd_v1(NULL),
- pd_v2(NULL),
- pd_n(NULL)
+// An AST_Expression denoting a long integer being used as a boolean.
+AST_Expression::AST_Expression (long lv,
+ ExprType t)
+ : pd_ec (EC_none),
+ pd_ev (0),
+ pd_v1 (0),
+ pd_v2 (0),
+ pd_n (0)
{
- fill_definition_details();
+ this->fill_definition_details ();
+
+ ACE_NEW (this->pd_ev,
+ AST_ExprValue);
- pd_ev = new AST_ExprValue;
- pd_ev->et = t;
- pd_ev->u.lval = lv;
+ this->pd_ev->et = EV_long;
+ this->pd_ev->et = t;
+ this->pd_ev->u.lval = lv;
}
-/*
- * An AST_Expression denoting an unsigned long integer
- */
-AST_Expression::AST_Expression(unsigned long ulv)
- : pd_ec(EC_none),
- pd_ev(NULL),
- pd_v1(NULL),
- pd_v2(NULL),
- pd_n(NULL)
+// An AST_Expression denoting an unsigned long integer.
+AST_Expression::AST_Expression (unsigned long ulv)
+ : pd_ec (EC_none),
+ pd_ev (0),
+ pd_v1 (0),
+ pd_v2 (0),
+ pd_n (NULL)
{
- fill_definition_details();
+ this->fill_definition_details ();
- pd_ev = new AST_ExprValue;
- pd_ev->et = EV_ulong;
- pd_ev->u.ulval = ulv;
+ ACE_NEW (this->pd_ev,
+ AST_ExprValue);
+
+ this->pd_ev->et = EV_ulong;
+ this->pd_ev->u.ulval = ulv;
}
-/*
- * An AST_Expression denoting a 32-bit floating point number
- */
-AST_Expression::AST_Expression(float fv)
- : pd_ec(EC_none),
- pd_ev(NULL),
- pd_v1(NULL),
- pd_v2(NULL),
- pd_n(NULL)
+// An AST_Expression denoting a 32-bit floating point number.
+AST_Expression::AST_Expression (float fv)
+ : pd_ec (EC_none),
+ pd_ev (0),
+ pd_v1 (0),
+ pd_v2 (0),
+ pd_n (0)
{
- fill_definition_details();
+ this->fill_definition_details ();
- pd_ev = new AST_ExprValue;
- pd_ev->et = EV_float;
- pd_ev->u.fval = fv;
+ ACE_NEW (this->pd_ev,
+ AST_ExprValue);
+
+ this->pd_ev->et = EV_float;
+ this->pd_ev->u.fval = fv;
}
-/*
- * An AST_Expression denoting a 64-bit floating point number
- */
-AST_Expression::AST_Expression(double dv)
- : pd_ec(EC_none),
- pd_ev(NULL),
- pd_v1(NULL),
- pd_v2(NULL),
- pd_n(NULL)
+// An AST_Expression denoting a 64-bit floating point number.
+AST_Expression::AST_Expression (double dv)
+ : pd_ec (EC_none),
+ pd_ev (0),
+ pd_v1 (0),
+ pd_v2 (NULL),
+ pd_n (0)
{
- fill_definition_details();
+ this->fill_definition_details ();
+
+ ACE_NEW (this->pd_ev,
+ AST_ExprValue);
- pd_ev = new AST_ExprValue;
- pd_ev->et = EV_double;
- pd_ev->u.dval = dv;
+ this->pd_ev->et = EV_double;
+ this->pd_ev->u.dval = dv;
}
-/*
- * An AST_Expression denoting a character
- */
-AST_Expression::AST_Expression(char cv)
- : pd_ec(EC_none),
- pd_ev(NULL),
- pd_v1(NULL),
- pd_v2(NULL),
- pd_n(NULL)
+// An AST_Expression denoting a character.
+AST_Expression::AST_Expression (char cv)
+ : pd_ec (EC_none),
+ pd_ev (0),
+ pd_v1 (0),
+ pd_v2 (0),
+ pd_n (0)
{
- fill_definition_details();
+ this->fill_definition_details ();
+
+ ACE_NEW (this->pd_ev,
+ AST_ExprValue);
- pd_ev = new AST_ExprValue;
- pd_ev->et = EV_char;
- pd_ev->u.cval = cv;
+ this->pd_ev->et = EV_char;
+ this->pd_ev->u.cval = cv;
}
-/*
- * An AST_Expression denoting a wide character
- */
-AST_Expression::AST_Expression(ACE_OutputCDR::from_wchar wcv)
- : pd_ec(EC_none),
- pd_ev(NULL),
- pd_v1(NULL),
- pd_v2(NULL),
- pd_n(NULL)
+// An AST_Expression denoting a wide character.
+AST_Expression::AST_Expression (ACE_OutputCDR::from_wchar wcv)
+ : pd_ec (EC_none),
+ pd_ev (0),
+ pd_v1 (0),
+ pd_v2 (0),
+ pd_n (0)
{
- fill_definition_details();
+ this->fill_definition_details ();
+
+ ACE_NEW (this->pd_ev,
+ AST_ExprValue);
- pd_ev = new AST_ExprValue;
- pd_ev->et = EV_wchar;
- pd_ev->u.wcval = wcv.val_;
+ this->pd_ev->et = EV_wchar;
+ this->pd_ev->u.wcval = wcv.val_;
}
-/*
- * An AST_Expression denoting an octet (unsigned char)
- */
-AST_Expression::AST_Expression(unsigned char ov)
- : pd_ec(EC_none),
- pd_ev(NULL),
- pd_v1(NULL),
- pd_v2(NULL),
- pd_n(NULL)
+// An AST_Expression denoting an octet (unsigned char).
+AST_Expression::AST_Expression (unsigned char ov)
+ : pd_ec (EC_none),
+ pd_ev (0),
+ pd_v1 (0),
+ pd_v2 (0),
+ pd_n (NULL)
{
- fill_definition_details();
+ this->fill_definition_details ();
+
+ ACE_NEW (this->pd_ev,
+ AST_ExprValue);
- pd_ev = new AST_ExprValue;
- pd_ev->et = EV_octet;
- pd_ev->u.oval = ov;
+ this->pd_ev->et = EV_octet;
+ this->pd_ev->u.oval = ov;
}
-/*
- * An AST_Expression denoting a string (char * encapsulated as a String)
- */
-AST_Expression::AST_Expression(UTL_String *sv)
- : pd_ec(EC_none),
- pd_ev(NULL),
- pd_v1(NULL),
- pd_v2(NULL),
- pd_n(NULL)
+// An AST_Expression denoting a string (char * encapsulated as a String).
+AST_Expression::AST_Expression (UTL_String *sv)
+ : pd_ec (EC_none),
+ pd_ev (0),
+ pd_v1 (0),
+ pd_v2 (0),
+ pd_n (0)
{
- fill_definition_details();
+ this->fill_definition_details ();
+
+ ACE_NEW (this->pd_ev,
+ AST_ExprValue);
- pd_ev = new AST_ExprValue;
- pd_ev->et = EV_string;
- pd_ev->u.strval = sv;
+ this->pd_ev->et = EV_string;
+ this->pd_ev->u.strval = sv;
}
-/*
- * An AST_Expression denoting a wide string
- */
-AST_Expression::AST_Expression(char *sv)
- : pd_ec(EC_none),
- pd_ev(NULL),
- pd_v1(NULL),
- pd_v2(NULL),
- pd_n(NULL)
+// An AST_Expression denoting a wide string.
+AST_Expression::AST_Expression (char *sv)
+ : pd_ec (EC_none),
+ pd_ev (0),
+ pd_v1 (0),
+ pd_v2 (0),
+ pd_n (0)
{
- fill_definition_details();
+ this->fill_definition_details ();
- pd_ev = new AST_ExprValue;
- pd_ev->et = EV_wstring;
- pd_ev->u.wstrval = sv;
+ ACE_NEW (this->pd_ev,
+ AST_ExprValue);
+
+ this->pd_ev->et = EV_wstring;
+ this->pd_ev->u.wstrval = sv;
}
AST_Expression::~AST_Expression (void)
{
}
-/*
- * Static operations
- */
+// Static operations.
-/*
- * Perform the coercion from the given AST_ExprValue to the requested
- * ExprType. Return an AST_ExprValue if successful, NULL if failed.
- */
+// Perform the coercion from the given AST_ExprValue to the requested
+// ExprType. Return an AST_ExprValue if successful, 0 if failed.
static AST_Expression::AST_ExprValue *
-coerce_value(AST_Expression::AST_ExprValue *ev, AST_Expression::ExprType t)
+coerce_value (AST_Expression::AST_ExprValue *ev,
+ AST_Expression::ExprType t)
{
- if (ev == NULL)
- return NULL;
+ if (ev == 0)
+ {
+ return 0;
+ }
- switch (t) {
- case AST_Expression::EV_short:
- switch (ev->et) {
+ switch (t)
+ {
case AST_Expression::EV_short:
- return ev;
- case AST_Expression::EV_ushort:
- if (ev->u.usval > (unsigned short) ACE_INT16_MAX)
- return NULL;
- ev->u.sval = (short) ev->u.usval;
- ev->et = AST_Expression::EV_short;
- return ev;
- case AST_Expression::EV_long:
- if (ev->u.lval > (long) ACE_INT16_MAX
- || ev->u.lval < (long) ACE_INT16_MIN)
- return NULL;
- ev->u.sval = (short) ev->u.lval;
- ev->et = AST_Expression::EV_short;
- return ev;
- case AST_Expression::EV_ulong:
- if (ev->u.ulval > (unsigned long) ACE_INT16_MAX)
- return NULL;
- ev->u.sval = (short) ev->u.ulval;
- ev->et = AST_Expression::EV_short;
- return ev;
- case AST_Expression::EV_longlong:
+ switch (ev->et)
+ {
+ case AST_Expression::EV_short:
+ return ev;
+ case AST_Expression::EV_ushort:
+ if (ev->u.usval > (unsigned short) ACE_INT16_MAX)
+ {
+ return 0;
+ }
+
+ ev->u.sval = (short) ev->u.usval;
+ ev->et = AST_Expression::EV_short;
+ return ev;
+ case AST_Expression::EV_long:
+ if (ev->u.lval > (long) ACE_INT16_MAX
+ || ev->u.lval < (long) ACE_INT16_MIN)
+ {
+ return 0;
+ }
+
+ ev->u.sval = (short) ev->u.lval;
+ ev->et = AST_Expression::EV_short;
+ return ev;
+ case AST_Expression::EV_ulong:
+ if (ev->u.ulval > (unsigned long) ACE_INT16_MAX)
+ {
+ return 0;
+ }
+
+ ev->u.sval = (short) ev->u.ulval;
+ ev->et = AST_Expression::EV_short;
+ return ev;
+ case AST_Expression::EV_longlong:
#if ! defined (ACE_LACKS_LONGLONG_T)
- if (ev->u.llval > (ACE_CDR::LongLong) ACE_INT16_MAX
- || ev->u.llval < (ACE_CDR::LongLong) ACE_INT16_MIN)
- return NULL;
- ev->u.sval = (short) ev->u.llval;
- ev->et = AST_Expression::EV_short;
- return ev;
+ if (ev->u.llval > (ACE_CDR::LongLong) ACE_INT16_MAX
+ || ev->u.llval < (ACE_CDR::LongLong) ACE_INT16_MIN)
+ {
+ return 0;
+ }
+
+ ev->u.sval = (short) ev->u.llval;
+ ev->et = AST_Expression::EV_short;
+ return ev;
#else /* ! defined (ACE_LACKS_LONGLONG_T) */
- return NULL;
+ return 0;
#endif /* ! defined (ACE_LACKS_LONGLONG_T) */
- case AST_Expression::EV_ulonglong:
+ case AST_Expression::EV_ulonglong:
#if ! defined (ACE_LACKS_LONGLONG_T)
- if (ev->u.ullval > (ACE_CDR::ULongLong) ACE_INT16_MAX)
- return NULL;
- ev->u.sval = (short) ev->u.ullval;
- ev->et = AST_Expression::EV_short;
- return ev;
+ if (ev->u.ullval > (ACE_CDR::ULongLong) ACE_INT16_MAX)
+ {
+ return 0;
+ }
+
+ ev->u.sval = (short) ev->u.ullval;
+ ev->et = AST_Expression::EV_short;
+ return ev;
#else /* ! defined (ACE_LACKS_LONGLONG_T) */
- return NULL;
+ return 0;
#endif /* ! defined (ACE_LACKS_LONGLONG_T) */
- case AST_Expression::EV_bool:
- ev->u.sval = (short) ev->u.bval;
- ev->et = AST_Expression::EV_short;
- return ev;
- case AST_Expression::EV_float:
- if (ev->u.fval > (float) ACE_INT16_MAX
- || ev->u.fval < (float) ACE_INT16_MIN)
- return NULL;
- ev->u.sval = (short) ev->u.fval;
- ev->et = AST_Expression::EV_short;
- return ev;
- case AST_Expression::EV_double:
- if (ev->u.dval > (double) ACE_INT16_MAX
- || ev->u.dval < (double) ACE_INT16_MIN)
- return NULL;
- ev->u.sval = (short) ev->u.dval;
- ev->et = AST_Expression::EV_short;
- return ev;
- case AST_Expression::EV_char:
- ev->u.sval = (short) ev->u.cval;
- ev->et = AST_Expression::EV_short;
- return ev;
- case AST_Expression::EV_wchar:
- if (ev->u.wcval > (ACE_CDR::WChar) ACE_INT16_MAX)
- return NULL;
- ev->u.sval = (short) ev->u.wcval;
- ev->et = AST_Expression::EV_short;
- return ev;
- case AST_Expression::EV_octet:
- ev->u.sval = (short) ev->u.oval;
- ev->et = AST_Expression::EV_short;
- return ev;
- case AST_Expression::EV_longdouble:
- case AST_Expression::EV_string:
- case AST_Expression::EV_wstring:
- case AST_Expression::EV_any:
- case AST_Expression::EV_void:
- case AST_Expression::EV_none:
- return NULL;
- }
- case AST_Expression::EV_ushort:
- switch (ev->et) {
- case AST_Expression::EV_short:
- if (ev->u.sval < 0)
- return NULL;
- ev->u.usval = (unsigned short) ev->u.sval;
- ev->et = AST_Expression::EV_ushort;
- return ev;
+ case AST_Expression::EV_bool:
+ ev->u.sval = (short) ev->u.bval;
+ ev->et = AST_Expression::EV_short;
+ return ev;
+ case AST_Expression::EV_float:
+ if (ev->u.fval > (float) ACE_INT16_MAX
+ || ev->u.fval < (float) ACE_INT16_MIN)
+ {
+ return 0;
+ }
+
+ ev->u.sval = (short) ev->u.fval;
+ ev->et = AST_Expression::EV_short;
+ return ev;
+ case AST_Expression::EV_double:
+ if (ev->u.dval > (double) ACE_INT16_MAX
+ || ev->u.dval < (double) ACE_INT16_MIN)
+ {
+ return 0;
+ }
+
+ ev->u.sval = (short) ev->u.dval;
+ ev->et = AST_Expression::EV_short;
+ return ev;
+ case AST_Expression::EV_char:
+ ev->u.sval = (short) ev->u.cval;
+ ev->et = AST_Expression::EV_short;
+ return ev;
+ case AST_Expression::EV_wchar:
+ if (ev->u.wcval > (ACE_CDR::WChar) ACE_INT16_MAX)
+ {
+ return 0;
+ }
+
+ ev->u.sval = (short) ev->u.wcval;
+ ev->et = AST_Expression::EV_short;
+ return ev;
+ case AST_Expression::EV_octet:
+ ev->u.sval = (short) ev->u.oval;
+ ev->et = AST_Expression::EV_short;
+ return ev;
+ case AST_Expression::EV_longdouble:
+ case AST_Expression::EV_string:
+ case AST_Expression::EV_wstring:
+ case AST_Expression::EV_any:
+ case AST_Expression::EV_void:
+ case AST_Expression::EV_none:
+ return 0;
+ }
case AST_Expression::EV_ushort:
- return ev;
- case AST_Expression::EV_long:
- if (ev->u.lval > (long) ACE_UINT16_MAX
- || ev->u.lval < 0)
- return NULL;
- ev->u.usval = (unsigned short) ev->u.lval;
- ev->et = AST_Expression::EV_ushort;
- return ev;
- case AST_Expression::EV_ulong:
- if (ev->u.ulval > (unsigned long) ACE_UINT16_MAX)
- return NULL;
- ev->u.usval = (unsigned short) ev->u.ulval;
- ev->et = AST_Expression::EV_ushort;
- return ev;
- case AST_Expression::EV_longlong:
+ switch (ev->et)
+ {
+ case AST_Expression::EV_short:
+ if (ev->u.sval < 0)
+ {
+ return 0;
+ }
+
+ ev->u.usval = (unsigned short) ev->u.sval;
+ ev->et = AST_Expression::EV_ushort;
+ return ev;
+ case AST_Expression::EV_ushort:
+ return ev;
+ case AST_Expression::EV_long:
+ if (ev->u.lval > (long) ACE_UINT16_MAX
+ || ev->u.lval < 0)
+ {
+ return 0;
+ }
+
+ ev->u.usval = (unsigned short) ev->u.lval;
+ ev->et = AST_Expression::EV_ushort;
+ return ev;
+ case AST_Expression::EV_ulong:
+ if (ev->u.ulval > (unsigned long) ACE_UINT16_MAX)
+ {
+ return 0;
+ }
+
+ ev->u.usval = (unsigned short) ev->u.ulval;
+ ev->et = AST_Expression::EV_ushort;
+ return ev;
+ case AST_Expression::EV_longlong:
#if ! defined (ACE_LACKS_LONGLONG_T)
- if (ev->u.llval > (ACE_CDR::LongLong) ACE_UINT16_MAX
- || ev->u.llval < 0)
- return NULL;
- ev->u.usval = (unsigned short) ev->u.llval;
- ev->et = AST_Expression::EV_ushort;
- return ev;
+ if (ev->u.llval > (ACE_CDR::LongLong) ACE_UINT16_MAX
+ || ev->u.llval < 0)
+ {
+ return 0;
+ }
+
+ ev->u.usval = (unsigned short) ev->u.llval;
+ ev->et = AST_Expression::EV_ushort;
+ return ev;
#else /* ! defined (ACE_LACKS_LONGLONG_T) */
- return NULL;
+ return 0;
#endif /* ! defined (ACE_LACKS_LONGLONG_T) */
- case AST_Expression::EV_ulonglong:
+ case AST_Expression::EV_ulonglong:
#if ! defined (ACE_LACKS_LONGLONG_T)
- if (ev->u.ullval > (ACE_CDR::ULongLong) ACE_UINT16_MAX)
- return NULL;
- ev->u.usval = (unsigned short) ev->u.ullval;
- ev->et = AST_Expression::EV_ushort;
- return ev;
+ if (ev->u.ullval > (ACE_CDR::ULongLong) ACE_UINT16_MAX)
+ {
+ return 0;
+ }
+
+ ev->u.usval = (unsigned short) ev->u.ullval;
+ ev->et = AST_Expression::EV_ushort;
+ return ev;
#else /* ! defined (ACE_LACKS_LONGLONG_T) */
- return NULL;
+ return 0;
#endif /* ! defined (ACE_LACKS_LONGLONG_T) */
- case AST_Expression::EV_bool:
- ev->u.usval = (unsigned short) ev->u.bval;
- ev->et = AST_Expression::EV_ushort;
- return ev;
- case AST_Expression::EV_float:
- if (ev->u.fval < 0.0
- || ev->u.fval > (float) ACE_UINT16_MAX)
- return NULL;
- ev->u.usval = (unsigned short) ev->u.fval;
- ev->et = AST_Expression::EV_ushort;
- return ev;
- case AST_Expression::EV_double:
- if (ev->u.dval < 0.0
- || ev->u.dval > (double) ACE_UINT16_MAX)
- return NULL;
- ev->u.usval = (unsigned short) ev->u.dval;
- ev->et = AST_Expression::EV_ushort;
- return ev;
- case AST_Expression::EV_char:
- if ((signed char) ev->u.cval < 0)
- return NULL;
- ev->u.usval = (unsigned short) ev->u.cval;
- ev->et = AST_Expression::EV_ushort;
- return ev;
- case AST_Expression::EV_wchar:
- ev->u.usval = (unsigned short) ev->u.wcval;
- ev->et = AST_Expression::EV_ushort;
- return ev;
- case AST_Expression::EV_octet:
- ev->u.usval = (unsigned short) ev->u.oval;
- ev->et = AST_Expression::EV_ushort;
- return ev;
- case AST_Expression::EV_longdouble:
- case AST_Expression::EV_wstring:
- case AST_Expression::EV_string:
- case AST_Expression::EV_any:
- case AST_Expression::EV_void:
- case AST_Expression::EV_none:
- return NULL;
- }
- case AST_Expression::EV_long:
- switch (ev->et) {
- case AST_Expression::EV_short:
- ev->u.lval = (long) ev->u.sval;
- ev->et = AST_Expression::EV_long;
- return ev;
- case AST_Expression::EV_ushort:
- ev->u.lval = (long) ev->u.usval;
- ev->et = AST_Expression::EV_long;
- return ev;
+ case AST_Expression::EV_bool:
+ ev->u.usval = (unsigned short) ev->u.bval;
+ ev->et = AST_Expression::EV_ushort;
+ return ev;
+ case AST_Expression::EV_float:
+ if (ev->u.fval < 0.0
+ || ev->u.fval > (float) ACE_UINT16_MAX)
+ {
+ return 0;
+ }
+
+ ev->u.usval = (unsigned short) ev->u.fval;
+ ev->et = AST_Expression::EV_ushort;
+ return ev;
+ case AST_Expression::EV_double:
+ if (ev->u.dval < 0.0
+ || ev->u.dval > (double) ACE_UINT16_MAX)
+ {
+ return 0;
+ }
+
+ ev->u.usval = (unsigned short) ev->u.dval;
+ ev->et = AST_Expression::EV_ushort;
+ return ev;
+ case AST_Expression::EV_char:
+ if ((signed char) ev->u.cval < 0)
+ {
+ return 0;
+ }
+
+ ev->u.usval = (unsigned short) ev->u.cval;
+ ev->et = AST_Expression::EV_ushort;
+ return ev;
+ case AST_Expression::EV_wchar:
+ ev->u.usval = (unsigned short) ev->u.wcval;
+ ev->et = AST_Expression::EV_ushort;
+ return ev;
+ case AST_Expression::EV_octet:
+ ev->u.usval = (unsigned short) ev->u.oval;
+ ev->et = AST_Expression::EV_ushort;
+ return ev;
+ case AST_Expression::EV_longdouble:
+ case AST_Expression::EV_wstring:
+ case AST_Expression::EV_string:
+ case AST_Expression::EV_any:
+ case AST_Expression::EV_void:
+ case AST_Expression::EV_none:
+ return 0;
+ }
case AST_Expression::EV_long:
- return ev;
- case AST_Expression::EV_ulong:
- if (ev->u.ulval > (unsigned long) ACE_INT32_MAX)
- return NULL;
- ev->u.lval = (long) ev->u.ulval;
- ev->et = AST_Expression::EV_long;
- return ev;
- case AST_Expression::EV_longlong:
+ switch (ev->et)
+ {
+ case AST_Expression::EV_short:
+ ev->u.lval = (long) ev->u.sval;
+ ev->et = AST_Expression::EV_long;
+ return ev;
+ case AST_Expression::EV_ushort:
+ ev->u.lval = (long) ev->u.usval;
+ ev->et = AST_Expression::EV_long;
+ return ev;
+ case AST_Expression::EV_long:
+ return ev;
+ case AST_Expression::EV_ulong:
+ if (ev->u.ulval > (unsigned long) ACE_INT32_MAX)
+ {
+ return 0;
+ }
+
+ ev->u.lval = (long) ev->u.ulval;
+ ev->et = AST_Expression::EV_long;
+ return ev;
+ case AST_Expression::EV_longlong:
#if ! defined (ACE_LACKS_LONGLONG_T)
- if (ev->u.llval > (ACE_CDR::LongLong) ACE_INT32_MAX
- || ev->u.llval < (ACE_CDR::LongLong) ACE_INT32_MIN)
- return NULL;
- ev->u.lval = (long) ev->u.llval;
- ev->et = AST_Expression::EV_long;
- return ev;
+ if (ev->u.llval > (ACE_CDR::LongLong) ACE_INT32_MAX
+ || ev->u.llval < (ACE_CDR::LongLong) ACE_INT32_MIN)
+ {
+ return 0;
+ }
+ ev->u.lval = (long) ev->u.llval;
+ ev->et = AST_Expression::EV_long;
+ return ev;
#else /* ! defined (ACE_LACKS_LONGLONG_T) */
- return NULL;
+ return 0;
#endif /* ! defined (ACE_LACKS_LONGLONG_T) */
- case AST_Expression::EV_ulonglong:
+ case AST_Expression::EV_ulonglong:
#if ! defined (ACE_LACKS_LONGLONG_T)
- if (ev->u.ullval > (ACE_CDR::ULongLong) ACE_INT32_MAX)
- return NULL;
- ev->u.lval = (long) ev->u.ullval;
- ev->et = AST_Expression::EV_long;
- return ev;
+ if (ev->u.ullval > (ACE_CDR::ULongLong) ACE_INT32_MAX)
+ {
+ return 0;
+ }
+
+ ev->u.lval = (long) ev->u.ullval;
+ ev->et = AST_Expression::EV_long;
+ return ev;
#else /* ! defined (ACE_LACKS_LONGLONG_T) */
- return NULL;
+ return 0;
#endif /* ! defined (ACE_LACKS_LONGLONG_T) */
- case AST_Expression::EV_bool:
- ev->u.lval = (long) ev->u.bval;
- ev->et = AST_Expression::EV_long;
- return ev;
- case AST_Expression::EV_float:
- if (ev->u.fval > (float) LONG_MAX
- || ev->u.fval < (float) ACE_INT32_MIN)
- return NULL;
- ev->u.lval = (long) ev->u.fval;
- ev->et = AST_Expression::EV_long;
- return ev;
- case AST_Expression::EV_double:
- if (ev->u.dval > (double) LONG_MAX
- || ev->u.dval < (double) ACE_INT32_MIN)
- return NULL;
- ev->u.lval = (long) ev->u.dval;
- ev->et = AST_Expression::EV_long;
- return ev;
- case AST_Expression::EV_char:
- ev->u.lval = (long) ev->u.cval;
- ev->et = AST_Expression::EV_long;
- return ev;
- case AST_Expression::EV_wchar:
- ev->u.lval = (long) ev->u.wcval;
- ev->et = AST_Expression::EV_long;
- return ev;
- case AST_Expression::EV_octet:
- ev->u.lval = (long) ev->u.oval;
- ev->et = AST_Expression::EV_long;
- return ev;
- case AST_Expression::EV_longdouble:
- case AST_Expression::EV_wstring:
- case AST_Expression::EV_string:
- case AST_Expression::EV_any:
- case AST_Expression::EV_void:
- case AST_Expression::EV_none:
- return NULL;
- }
- case AST_Expression::EV_ulong:
- switch (ev->et) {
- case AST_Expression::EV_short:
- if (ev->u.sval < 0)
- return NULL;
- ev->u.ulval = (unsigned long) ev->u.sval;
- ev->et = AST_Expression::EV_ulong;
- return ev;
- case AST_Expression::EV_ushort:
- ev->u.ulval = (unsigned long) ev->u.usval;
- ev->et = AST_Expression::EV_ulong;
- return ev;
- case AST_Expression::EV_long:
- if (ev->u.lval < 0)
- return NULL;
- ev->u.ulval = (unsigned long) ev->u.lval;
- ev->et = AST_Expression::EV_ulong;
- return ev;
+ case AST_Expression::EV_bool:
+ ev->u.lval = (long) ev->u.bval;
+ ev->et = AST_Expression::EV_long;
+ return ev;
+ case AST_Expression::EV_float:
+ if (ev->u.fval > (float) LONG_MAX
+ || ev->u.fval < (float) ACE_INT32_MIN)
+ {
+ return 0;
+ }
+
+ ev->u.lval = (long) ev->u.fval;
+ ev->et = AST_Expression::EV_long;
+ return ev;
+ case AST_Expression::EV_double:
+ if (ev->u.dval > (double) LONG_MAX
+ || ev->u.dval < (double) ACE_INT32_MIN)
+ {
+ return 0;
+ }
+
+ ev->u.lval = (long) ev->u.dval;
+ ev->et = AST_Expression::EV_long;
+ return ev;
+ case AST_Expression::EV_char:
+ ev->u.lval = (long) ev->u.cval;
+ ev->et = AST_Expression::EV_long;
+ return ev;
+ case AST_Expression::EV_wchar:
+ ev->u.lval = (long) ev->u.wcval;
+ ev->et = AST_Expression::EV_long;
+ return ev;
+ case AST_Expression::EV_octet:
+ ev->u.lval = (long) ev->u.oval;
+ ev->et = AST_Expression::EV_long;
+ return ev;
+ case AST_Expression::EV_longdouble:
+ case AST_Expression::EV_wstring:
+ case AST_Expression::EV_string:
+ case AST_Expression::EV_any:
+ case AST_Expression::EV_void:
+ case AST_Expression::EV_none:
+ return 0;
+ }
case AST_Expression::EV_ulong:
- return ev;
- case AST_Expression::EV_longlong:
+ switch (ev->et)
+ {
+ case AST_Expression::EV_short:
+ if (ev->u.sval < 0)
+ {
+ return 0;
+ }
+
+ ev->u.ulval = (unsigned long) ev->u.sval;
+ ev->et = AST_Expression::EV_ulong;
+ return ev;
+ case AST_Expression::EV_ushort:
+ ev->u.ulval = (unsigned long) ev->u.usval;
+ ev->et = AST_Expression::EV_ulong;
+ return ev;
+ case AST_Expression::EV_long:
+ if (ev->u.lval < 0)
+ {
+ return 0;
+ }
+
+ ev->u.ulval = (unsigned long) ev->u.lval;
+ ev->et = AST_Expression::EV_ulong;
+ return ev;
+ case AST_Expression::EV_ulong:
+ return ev;
+ case AST_Expression::EV_longlong:
#if ! defined (ACE_LACKS_LONGLONG_T)
- if (ev->u.llval > (ACE_CDR::LongLong) ACE_UINT32_MAX
- || ev->u.llval < 0)
- return NULL;
- ev->u.ulval = (unsigned long) ev->u.llval;
- ev->et = AST_Expression::EV_ulong;
- return ev;
+ if (ev->u.llval > (ACE_CDR::LongLong) ACE_UINT32_MAX
+ || ev->u.llval < 0)
+ {
+ return 0;
+ }
+
+ ev->u.ulval = (unsigned long) ev->u.llval;
+ ev->et = AST_Expression::EV_ulong;
+ return ev;
#else /* ! defined (ACE_LACKS_LONGLONG_T) */
- return NULL;
+ return NULL;
#endif /* ! defined (ACE_LACKS_LONGLONG_T) */
- case AST_Expression::EV_ulonglong:
+ case AST_Expression::EV_ulonglong:
#if ! defined (ACE_LACKS_LONGLONG_T)
- if (ev->u.ullval > (ACE_CDR::ULongLong) ACE_UINT32_MAX)
- return NULL;
- ev->u.ulval = (unsigned long) ev->u.ullval;
- ev->et = AST_Expression::EV_ulong;
- return ev;
+ if (ev->u.ullval > (ACE_CDR::ULongLong) ACE_UINT32_MAX)
+ {
+ return 0;
+ }
+ ev->u.ulval = (unsigned long) ev->u.ullval;
+ ev->et = AST_Expression::EV_ulong;
+ return ev;
#else /* ! defined (ACE_LACKS_LONGLONG_T) */
- return NULL;
+ return 0;
#endif /* ! defined (ACE_LACKS_LONGLONG_T) */
- case AST_Expression::EV_bool:
- ev->u.ulval = (unsigned long) ev->u.bval;
- ev->et = AST_Expression::EV_ulong;
- return ev;
- case AST_Expression::EV_float:
- if (ev->u.fval < 0.0
- || ev->u.fval > (float) ACE_UINT32_MAX)
- return NULL;
- ev->u.ulval = (unsigned long) ev->u.fval;
- ev->et = AST_Expression::EV_ulong;
- return ev;
- case AST_Expression::EV_double:
- if (ev->u.dval < 0.0
- || ev->u.dval > (double) ACE_UINT32_MAX)
- return NULL;
- ev->u.ulval = (unsigned long) ev->u.dval;
- ev->et = AST_Expression::EV_ulong;
- return ev;
- case AST_Expression::EV_char:
- if ((signed char) ev->u.cval < 0)
- return NULL;
- ev->u.ulval = (unsigned long) ev->u.cval;
- ev->et = AST_Expression::EV_ulong;
- return ev;
- case AST_Expression::EV_wchar:
- ev->u.ulval = (unsigned long) ev->u.wcval;
- ev->et = AST_Expression::EV_ulong;
- return ev;
- case AST_Expression::EV_octet:
- ev->u.ulval = (unsigned long) ev->u.oval;
- ev->et = AST_Expression::EV_ulong;
- return ev;
- case AST_Expression::EV_longdouble:
- case AST_Expression::EV_wstring:
- case AST_Expression::EV_string:
- case AST_Expression::EV_any:
- case AST_Expression::EV_void:
- case AST_Expression::EV_none:
- return NULL;
- }
- case AST_Expression::EV_longlong:
-#if ! defined (ACE_LACKS_LONGLONG_T)
- switch (ev->et) {
- case AST_Expression::EV_short:
- ev->u.llval = (ACE_CDR::LongLong) ev->u.sval;
- ev->et = AST_Expression::EV_longlong;
- return ev;
- case AST_Expression::EV_ushort:
- ev->u.llval = (ACE_CDR::LongLong) ev->u.usval;
- ev->et = AST_Expression::EV_longlong;
- return ev;
- case AST_Expression::EV_long:
- ev->u.llval = (ACE_CDR::LongLong) ev->u.lval;
- ev->et = AST_Expression::EV_longlong;
- return ev;
- case AST_Expression::EV_ulong:
- ev->u.llval = (ACE_CDR::LongLong) ev->u.ulval;
- ev->et = AST_Expression::EV_longlong;
- return ev;
+ case AST_Expression::EV_bool:
+ ev->u.ulval = (unsigned long) ev->u.bval;
+ ev->et = AST_Expression::EV_ulong;
+ return ev;
+ case AST_Expression::EV_float:
+ if (ev->u.fval < 0.0
+ || ev->u.fval > (float) ACE_UINT32_MAX)
+ {
+ return 0;
+ }
+
+ ev->u.ulval = (unsigned long) ev->u.fval;
+ ev->et = AST_Expression::EV_ulong;
+ return ev;
+ case AST_Expression::EV_double:
+ if (ev->u.dval < 0.0
+ || ev->u.dval > (double) ACE_UINT32_MAX)
+ {
+ return 0;
+ }
+
+ ev->u.ulval = (unsigned long) ev->u.dval;
+ ev->et = AST_Expression::EV_ulong;
+ return ev;
+ case AST_Expression::EV_char:
+ if ((signed char) ev->u.cval < 0)
+ {
+ return 0;
+ }
+
+ ev->u.ulval = (unsigned long) ev->u.cval;
+ ev->et = AST_Expression::EV_ulong;
+ return ev;
+ case AST_Expression::EV_wchar:
+ ev->u.ulval = (unsigned long) ev->u.wcval;
+ ev->et = AST_Expression::EV_ulong;
+ return ev;
+ case AST_Expression::EV_octet:
+ ev->u.ulval = (unsigned long) ev->u.oval;
+ ev->et = AST_Expression::EV_ulong;
+ return ev;
+ case AST_Expression::EV_longdouble:
+ case AST_Expression::EV_wstring:
+ case AST_Expression::EV_string:
+ case AST_Expression::EV_any:
+ case AST_Expression::EV_void:
+ case AST_Expression::EV_none:
+ return 0;
+ }
case AST_Expression::EV_longlong:
- return ev;
- case AST_Expression::EV_ulonglong:
- if (ev->u.ullval > ACE_INT64_MAX)
- return NULL;
- ev->u.llval = (ACE_CDR::LongLong) ev->u.ullval;
- ev->et = AST_Expression::EV_longlong;
- return ev;
- case AST_Expression::EV_bool:
- ev->u.llval = (ACE_CDR::LongLong) ev->u.bval;
- ev->et = AST_Expression::EV_longlong;
- return ev;
- case AST_Expression::EV_float:
- if (ev->u.fval > (float) ACE_INT64_MAX
- || ev->u.fval < (float) ACE_INT64_MIN)
- return NULL;
- ev->u.llval = (ACE_CDR::LongLong) ev->u.fval;
- ev->et = AST_Expression::EV_longlong;
- return ev;
- case AST_Expression::EV_double:
- if (ev->u.dval > (double) ACE_INT64_MAX
- || ev->u.dval < (double) ACE_INT64_MIN)
- return NULL;
- ev->u.llval = (ACE_CDR::LongLong) ev->u.dval;
- ev->et = AST_Expression::EV_longlong;
- return ev;
- case AST_Expression::EV_char:
- ev->u.llval = (ACE_CDR::LongLong) ev->u.cval;
- ev->et = AST_Expression::EV_longlong;
- return ev;
- case AST_Expression::EV_wchar:
- ev->u.llval = (ACE_CDR::LongLong) ev->u.wcval;
- ev->et = AST_Expression::EV_longlong;
- return ev;
- case AST_Expression::EV_octet:
- ev->u.llval = (ACE_CDR::LongLong) ev->u.oval;
- ev->et = AST_Expression::EV_longlong;
- return ev;
- case AST_Expression::EV_longdouble:
- case AST_Expression::EV_wstring:
- case AST_Expression::EV_string:
- case AST_Expression::EV_any:
- case AST_Expression::EV_void:
- case AST_Expression::EV_none:
- return NULL;
- }
+#if ! defined (ACE_LACKS_LONGLONG_T)
+ switch (ev->et)
+ {
+ case AST_Expression::EV_short:
+ ev->u.llval = (ACE_CDR::LongLong) ev->u.sval;
+ ev->et = AST_Expression::EV_longlong;
+ return ev;
+ case AST_Expression::EV_ushort:
+ ev->u.llval = (ACE_CDR::LongLong) ev->u.usval;
+ ev->et = AST_Expression::EV_longlong;
+ return ev;
+ case AST_Expression::EV_long:
+ ev->u.llval = (ACE_CDR::LongLong) ev->u.lval;
+ ev->et = AST_Expression::EV_longlong;
+ return ev;
+ case AST_Expression::EV_ulong:
+ ev->u.llval = (ACE_CDR::LongLong) ev->u.ulval;
+ ev->et = AST_Expression::EV_longlong;
+ return ev;
+ case AST_Expression::EV_longlong:
+ return ev;
+ case AST_Expression::EV_ulonglong:
+ if (ev->u.ullval > ACE_INT64_MAX)
+ {
+ return 0;
+ }
+
+ ev->u.llval = (ACE_CDR::LongLong) ev->u.ullval;
+ ev->et = AST_Expression::EV_longlong;
+ return ev;
+ case AST_Expression::EV_bool:
+ ev->u.llval = (ACE_CDR::LongLong) ev->u.bval;
+ ev->et = AST_Expression::EV_longlong;
+ return ev;
+ case AST_Expression::EV_float:
+ if (ev->u.fval > (float) ACE_INT64_MAX
+ || ev->u.fval < (float) ACE_INT64_MIN)
+ {
+ return 0;
+ }
+
+ ev->u.llval = (ACE_CDR::LongLong) ev->u.fval;
+ ev->et = AST_Expression::EV_longlong;
+ return ev;
+ case AST_Expression::EV_double:
+ if (ev->u.dval > (double) ACE_INT64_MAX
+ || ev->u.dval < (double) ACE_INT64_MIN)
+ {
+ return 0;
+ }
+
+ ev->u.llval = (ACE_CDR::LongLong) ev->u.dval;
+ ev->et = AST_Expression::EV_longlong;
+ return ev;
+ case AST_Expression::EV_char:
+ ev->u.llval = (ACE_CDR::LongLong) ev->u.cval;
+ ev->et = AST_Expression::EV_longlong;
+ return ev;
+ case AST_Expression::EV_wchar:
+ ev->u.llval = (ACE_CDR::LongLong) ev->u.wcval;
+ ev->et = AST_Expression::EV_longlong;
+ return ev;
+ case AST_Expression::EV_octet:
+ ev->u.llval = (ACE_CDR::LongLong) ev->u.oval;
+ ev->et = AST_Expression::EV_longlong;
+ return ev;
+ case AST_Expression::EV_longdouble:
+ case AST_Expression::EV_wstring:
+ case AST_Expression::EV_string:
+ case AST_Expression::EV_any:
+ case AST_Expression::EV_void:
+ case AST_Expression::EV_none:
+ return 0;
+ }
#else /* ! defined (ACE_LACKS_LONGLONG_T) */
- return NULL;
+ return 0;
#endif /* ! defined (ACE_LACKS_LONGLONG_T) */
- case AST_Expression::EV_ulonglong:
-#if ! defined (ACE_LACKS_LONGLONG_T)
- switch (ev->et) {
- case AST_Expression::EV_short:
- if (ev->u.sval < 0)
- return NULL;
- ev->u.ullval = (ACE_CDR::ULongLong) ev->u.sval;
- ev->et = AST_Expression::EV_ulonglong;
- return ev;
- case AST_Expression::EV_ushort:
- ev->u.ullval = (ACE_CDR::ULongLong) ev->u.usval;
- ev->et = AST_Expression::EV_ulonglong;
- return ev;
- case AST_Expression::EV_long:
- if (ev->u.lval < 0)
- return NULL;
- ev->u.ullval = (ACE_CDR::ULongLong) ev->u.lval;
- ev->et = AST_Expression::EV_ulonglong;
- return ev;
- case AST_Expression::EV_ulong:
- ev->u.ullval = (ACE_CDR::ULongLong) ev->u.ulval;
- ev->et = AST_Expression::EV_ulonglong;
- return ev;
- case AST_Expression::EV_longlong:
- if (ev->u.llval < 0)
- return NULL;
- ev->u.ullval = (ACE_CDR::LongLong) ev->u.llval;
- ev->et = AST_Expression::EV_ulonglong;
- return ev;
case AST_Expression::EV_ulonglong:
- return ev;
- case AST_Expression::EV_bool:
- ev->u.ullval = (ACE_CDR::ULongLong) ev->u.bval;
- ev->et = AST_Expression::EV_ulonglong;
- return ev;
- case AST_Expression::EV_float:
- if (ev->u.fval < 0.0 || ev->u.fval > (float) ACE_UINT64_MAX)
- return NULL;
- ev->u.ullval = (ACE_CDR::ULongLong) ev->u.fval;
- ev->et = AST_Expression::EV_ulonglong;
- return ev;
- case AST_Expression::EV_double:
- if (ev->u.dval < 0.0 || ev->u.dval > (double) ACE_UINT64_MAX)
- return NULL;
- ev->u.ullval = (ACE_CDR::ULongLong) ev->u.dval;
- ev->et = AST_Expression::EV_ulonglong;
- return ev;
- case AST_Expression::EV_char:
- if ((signed char) ev->u.cval < 0)
- return NULL;
- ev->u.ullval = (ACE_CDR::ULongLong) ev->u.cval;
- ev->et = AST_Expression::EV_ulonglong;
- return ev;
- case AST_Expression::EV_wchar:
- ev->u.ullval = (ACE_CDR::ULongLong) ev->u.wcval;
- ev->et = AST_Expression::EV_ulonglong;
- return ev;
- case AST_Expression::EV_octet:
- ev->u.ullval = (ACE_CDR::ULongLong) ev->u.oval;
- ev->et = AST_Expression::EV_ulonglong;
- return ev;
- case AST_Expression::EV_longdouble:
- case AST_Expression::EV_wstring:
- case AST_Expression::EV_string:
- case AST_Expression::EV_any:
- case AST_Expression::EV_void:
- case AST_Expression::EV_none:
- return NULL;
- }
+#if ! defined (ACE_LACKS_LONGLONG_T)
+ switch (ev->et)
+ {
+ case AST_Expression::EV_short:
+ if (ev->u.sval < 0)
+ {
+ return 0;
+ }
+
+ ev->u.ullval = (ACE_CDR::ULongLong) ev->u.sval;
+ ev->et = AST_Expression::EV_ulonglong;
+ return ev;
+ case AST_Expression::EV_ushort:
+ ev->u.ullval = (ACE_CDR::ULongLong) ev->u.usval;
+ ev->et = AST_Expression::EV_ulonglong;
+ return ev;
+ case AST_Expression::EV_long:
+ if (ev->u.lval < 0)
+ {
+ return 0;
+ }
+
+ ev->u.ullval = (ACE_CDR::ULongLong) ev->u.lval;
+ ev->et = AST_Expression::EV_ulonglong;
+ return ev;
+ case AST_Expression::EV_ulong:
+ ev->u.ullval = (ACE_CDR::ULongLong) ev->u.ulval;
+ ev->et = AST_Expression::EV_ulonglong;
+ return ev;
+ case AST_Expression::EV_longlong:
+ if (ev->u.llval < 0)
+ {
+ return 0;
+ }
+
+ ev->u.ullval = (ACE_CDR::LongLong) ev->u.llval;
+ ev->et = AST_Expression::EV_ulonglong;
+ return ev;
+ case AST_Expression::EV_ulonglong:
+ return ev;
+ case AST_Expression::EV_bool:
+ ev->u.ullval = (ACE_CDR::ULongLong) ev->u.bval;
+ ev->et = AST_Expression::EV_ulonglong;
+ return ev;
+ case AST_Expression::EV_float:
+ if (ev->u.fval < 0.0
+ || ev->u.fval > (float) ACE_UINT64_MAX)
+ {
+ return 0;
+ }
+
+ ev->u.ullval = (ACE_CDR::ULongLong) ev->u.fval;
+ ev->et = AST_Expression::EV_ulonglong;
+ return ev;
+ case AST_Expression::EV_double:
+ if (ev->u.dval < 0.0
+ || ev->u.dval > (double) ACE_UINT64_MAX)
+ {
+ return 0;
+ }
+
+ ev->u.ullval = (ACE_CDR::ULongLong) ev->u.dval;
+ ev->et = AST_Expression::EV_ulonglong;
+ return ev;
+ case AST_Expression::EV_char:
+ if ((signed char) ev->u.cval < 0)
+ {
+ return 0;
+ }
+
+ ev->u.ullval = (ACE_CDR::ULongLong) ev->u.cval;
+ ev->et = AST_Expression::EV_ulonglong;
+ return ev;
+ case AST_Expression::EV_wchar:
+ ev->u.ullval = (ACE_CDR::ULongLong) ev->u.wcval;
+ ev->et = AST_Expression::EV_ulonglong;
+ return ev;
+ case AST_Expression::EV_octet:
+ ev->u.ullval = (ACE_CDR::ULongLong) ev->u.oval;
+ ev->et = AST_Expression::EV_ulonglong;
+ return ev;
+ case AST_Expression::EV_longdouble:
+ case AST_Expression::EV_wstring:
+ case AST_Expression::EV_string:
+ case AST_Expression::EV_any:
+ case AST_Expression::EV_void:
+ case AST_Expression::EV_none:
+ return 0;
+ }
#else /* ! defined (ACE_LACKS_LONGLONG_T) */
- return NULL;
+ return 0;
#endif /* ! defined (ACE_LACKS_LONGLONG_T) */
- case AST_Expression::EV_bool:
- switch (ev->et) {
- case AST_Expression::EV_short:
- ev->u.bval = (ev->u.sval == 0) ? I_FALSE : I_TRUE;
- ev->et = AST_Expression::EV_bool;
- return ev;
- case AST_Expression::EV_ushort:
- ev->u.bval = (ev->u.usval == 0) ? I_FALSE : I_TRUE;
- ev->et = AST_Expression::EV_bool;
- return ev;
- case AST_Expression::EV_long:
- ev->u.bval = (ev->u.lval == 0) ? I_FALSE : I_TRUE;
- ev->et = AST_Expression::EV_bool;
- return ev;
- case AST_Expression::EV_ulong:
- ev->u.bval = (ev->u.ulval == 0) ? I_FALSE : I_TRUE;
- ev->et = AST_Expression::EV_bool;
- return ev;
- case AST_Expression::EV_longlong:
+ case AST_Expression::EV_bool:
+ switch (ev->et)
+ {
+ case AST_Expression::EV_short:
+ ev->u.bval = (ev->u.sval == 0) ? I_FALSE : I_TRUE;
+ ev->et = AST_Expression::EV_bool;
+ return ev;
+ case AST_Expression::EV_ushort:
+ ev->u.bval = (ev->u.usval == 0) ? I_FALSE : I_TRUE;
+ ev->et = AST_Expression::EV_bool;
+ return ev;
+ case AST_Expression::EV_long:
+ ev->u.bval = (ev->u.lval == 0) ? I_FALSE : I_TRUE;
+ ev->et = AST_Expression::EV_bool;
+ return ev;
+ case AST_Expression::EV_ulong:
+ ev->u.bval = (ev->u.ulval == 0) ? I_FALSE : I_TRUE;
+ ev->et = AST_Expression::EV_bool;
+ return ev;
+ case AST_Expression::EV_longlong:
#if ! defined (ACE_LACKS_LONGLONG_T)
- ev->u.bval = (ev->u.llval == 0) ? I_FALSE : I_TRUE;
- ev->et = AST_Expression::EV_bool;
- return ev;
+ ev->u.bval = (ev->u.llval == 0) ? I_FALSE : I_TRUE;
+ ev->et = AST_Expression::EV_bool;
+ return ev;
#else /* ! defined (ACE_LACKS_LONGLONG_T) */
- return NULL;
+ return 0;
#endif /* ! defined (ACE_LACKS_LONGLONG_T) */
- case AST_Expression::EV_ulonglong:
+ case AST_Expression::EV_ulonglong:
#if ! defined (ACE_LACKS_LONGLONG_T)
- ev->u.bval = (ev->u.ullval == 0) ? I_FALSE : I_TRUE;
- ev->et = AST_Expression::EV_bool;
- return ev;
+ ev->u.bval = (ev->u.ullval == 0) ? I_FALSE : I_TRUE;
+ ev->et = AST_Expression::EV_bool;
+ return ev;
#else /* ! defined (ACE_LACKS_LONGLONG_T) */
- return NULL;
+ return 0;
#endif /* ! defined (ACE_LACKS_LONGLONG_T) */
- case AST_Expression::EV_bool:
- return ev;
+ case AST_Expression::EV_bool:
+ return ev;
+ case AST_Expression::EV_float:
+ ev->u.bval = (ev->u.fval == 0.0) ? I_FALSE : I_TRUE;
+ ev->et = AST_Expression::EV_bool;
+ return ev;
+ case AST_Expression::EV_double:
+ ev->u.bval = (ev->u.dval == 0.0) ? I_FALSE : I_TRUE;
+ ev->et = AST_Expression::EV_bool;
+ return ev;
+ case AST_Expression::EV_char:
+ ev->u.bval = (ev->u.cval == 0) ? I_FALSE : I_TRUE;
+ ev->et = AST_Expression::EV_bool;
+ return ev;
+ case AST_Expression::EV_wchar:
+ ev->u.bval = (ev->u.wcval == 0) ? I_FALSE : I_TRUE;
+ ev->et = AST_Expression::EV_bool;
+ return ev;
+ case AST_Expression::EV_octet:
+ ev->u.bval = (ev->u.oval == 0) ? I_FALSE : I_TRUE;
+ ev->et = AST_Expression::EV_bool;
+ return ev;
+ case AST_Expression::EV_longdouble:
+ case AST_Expression::EV_wstring:
+ case AST_Expression::EV_string:
+ case AST_Expression::EV_any:
+ case AST_Expression::EV_void:
+ case AST_Expression::EV_none:
+ return 0;
+ }
case AST_Expression::EV_float:
- ev->u.bval = (ev->u.fval == 0.0) ? I_FALSE : I_TRUE;
- ev->et = AST_Expression::EV_bool;
- return ev;
- case AST_Expression::EV_double:
- ev->u.bval = (ev->u.dval == 0.0) ? I_FALSE : I_TRUE;
- ev->et = AST_Expression::EV_bool;
- return ev;
- case AST_Expression::EV_char:
- ev->u.bval = (ev->u.cval == 0) ? I_FALSE : I_TRUE;
- ev->et = AST_Expression::EV_bool;
- return ev;
- case AST_Expression::EV_wchar:
- ev->u.bval = (ev->u.wcval == 0) ? I_FALSE : I_TRUE;
- ev->et = AST_Expression::EV_bool;
- return ev;
- case AST_Expression::EV_octet:
- ev->u.bval = (ev->u.oval == 0) ? I_FALSE : I_TRUE;
- ev->et = AST_Expression::EV_bool;
- return ev;
- case AST_Expression::EV_longdouble:
- case AST_Expression::EV_wstring:
- case AST_Expression::EV_string:
- case AST_Expression::EV_any:
- case AST_Expression::EV_void:
- case AST_Expression::EV_none:
- return NULL;
- }
- case AST_Expression::EV_float:
- switch (ev->et) {
- case AST_Expression::EV_short:
- ev->u.fval = (float) ev->u.sval;
- ev->et = AST_Expression::EV_float;
- return ev;
- case AST_Expression::EV_ushort:
- ev->u.fval = (float) ev->u.usval;
- ev->et = AST_Expression::EV_float;
- return ev;
- case AST_Expression::EV_long:
- ev->u.fval = (float) ev->u.lval;
- ev->et = AST_Expression::EV_float;
- return ev;
- case AST_Expression::EV_ulong:
- ev->u.fval = (float) ev->u.ulval;
- ev->et = AST_Expression::EV_float;
- return ev;
- case AST_Expression::EV_longlong:
+ switch (ev->et)
+ {
+ case AST_Expression::EV_short:
+ ev->u.fval = (float) ev->u.sval;
+ ev->et = AST_Expression::EV_float;
+ return ev;
+ case AST_Expression::EV_ushort:
+ ev->u.fval = (float) ev->u.usval;
+ ev->et = AST_Expression::EV_float;
+ return ev;
+ case AST_Expression::EV_long:
+ ev->u.fval = (float) ev->u.lval;
+ ev->et = AST_Expression::EV_float;
+ return ev;
+ case AST_Expression::EV_ulong:
+ ev->u.fval = (float) ev->u.ulval;
+ ev->et = AST_Expression::EV_float;
+ return ev;
+ case AST_Expression::EV_longlong:
#if ! defined (ACE_LACKS_LONGLONG_T)
- if (ev->u.llval > FLT_MAX
- || ev->u.llval < -(ACE_FLT_MAX))
- return NULL;
- ev->u.fval = (float) ev->u.llval;
- ev->et = AST_Expression::EV_float;
- return ev;
+ if (ev->u.llval > FLT_MAX
+ || ev->u.llval < -(ACE_FLT_MAX))
+ {
+ return 0;
+ }
+ ev->u.fval = (float) ev->u.llval;
+ ev->et = AST_Expression::EV_float;
+ return ev;
#else /* ! defined (ACE_LACKS_LONGLONG_T) */
- return NULL;
+ return 0;
#endif /* ! defined (ACE_LACKS_LONGLONG_T) */
- case AST_Expression::EV_ulonglong:
+ case AST_Expression::EV_ulonglong:
#if ! defined (ACE_LACKS_LONGLONG_T)
- // Some compilers don't implement unsigned 64-bit to float conversions,
- // so we are stuck with the signed 64-bit max value.
- if (ev->u.ullval > ACE_UINT64_MAX
- || (ACE_CDR::LongLong) ev->u.ullval > ACE_FLT_MAX)
- return NULL;
- ev->u.fval = (float) ((ACE_CDR::LongLong) ev->u.ullval);
- ev->et = AST_Expression::EV_float;
- return ev;
+ // Some compilers don't implement unsigned 64-bit to float conversions,
+ // so we are stuck with the signed 64-bit max value.
+ if (ev->u.ullval > ACE_UINT64_MAX
+ || (ACE_CDR::LongLong) ev->u.ullval > ACE_FLT_MAX)
+ {
+ return 0;
+ }
+
+ ev->u.fval = (float) ((ACE_CDR::LongLong) ev->u.ullval);
+ ev->et = AST_Expression::EV_float;
+ return ev;
#else /* ! defined (ACE_LACKS_LONGLONG_T) */
- return NULL;
+ return 0;
#endif /* ! defined (ACE_LACKS_LONGLONG_T) */
- case AST_Expression::EV_bool:
- ev->u.fval = (float) ((ev->u.bval == I_TRUE) ? 1.0 : 0.0);
- ev->et = AST_Expression::EV_float;
- return ev;
- case AST_Expression::EV_float:
- return ev;
+ case AST_Expression::EV_bool:
+ ev->u.fval = (float) ((ev->u.bval == I_TRUE) ? 1.0 : 0.0);
+ ev->et = AST_Expression::EV_float;
+ return ev;
+ case AST_Expression::EV_float:
+ return ev;
+ case AST_Expression::EV_double:
+ if (ev->u.dval > ACE_FLT_MAX
+ || ev->u.dval < -(ACE_FLT_MAX))
+ {
+ return 0;
+ }
+
+ ev->u.fval = (float) ev->u.dval;
+ ev->et = AST_Expression::EV_float;
+ return ev;
+ case AST_Expression::EV_char:
+ ev->u.fval = (float) ev->u.cval;
+ ev->et = AST_Expression::EV_float;
+ return ev;
+ case AST_Expression::EV_wchar:
+ ev->u.fval = (float) ev->u.wcval;
+ ev->et = AST_Expression::EV_float;
+ return ev;
+ case AST_Expression::EV_octet:
+ ev->u.fval = (float) ev->u.oval;
+ ev->et = AST_Expression::EV_float;
+ return ev;
+ case AST_Expression::EV_longdouble:
+ case AST_Expression::EV_wstring:
+ case AST_Expression::EV_string:
+ case AST_Expression::EV_any:
+ case AST_Expression::EV_void:
+ case AST_Expression::EV_none:
+ return 0;
+ }
case AST_Expression::EV_double:
- if (ev->u.dval > ACE_FLT_MAX
- || ev->u.dval < -(ACE_FLT_MAX))
- return NULL;
- ev->u.fval = (float) ev->u.dval;
- ev->et = AST_Expression::EV_float;
- return ev;
- case AST_Expression::EV_char:
- ev->u.fval = (float) ev->u.cval;
- ev->et = AST_Expression::EV_float;
- return ev;
- case AST_Expression::EV_wchar:
- ev->u.fval = (float) ev->u.wcval;
- ev->et = AST_Expression::EV_float;
- return ev;
- case AST_Expression::EV_octet:
- ev->u.fval = (float) ev->u.oval;
- ev->et = AST_Expression::EV_float;
- return ev;
- case AST_Expression::EV_longdouble:
- case AST_Expression::EV_wstring:
- case AST_Expression::EV_string:
- case AST_Expression::EV_any:
- case AST_Expression::EV_void:
- case AST_Expression::EV_none:
- return NULL;
- }
- case AST_Expression::EV_double:
- switch (ev->et) {
- case AST_Expression::EV_short:
- ev->u.dval = (double) ev->u.sval;
- ev->et = AST_Expression::EV_double;
- return ev;
- case AST_Expression::EV_ushort:
- ev->u.dval = (double) ev->u.usval;
- ev->et = AST_Expression::EV_double;
- return ev;
- case AST_Expression::EV_long:
- ev->u.dval = (double) ev->u.lval;
- ev->et = AST_Expression::EV_double;
- return ev;
- case AST_Expression::EV_ulong:
- ev->u.dval = (double) ev->u.ulval;
- ev->et = AST_Expression::EV_double;
- return ev;
- case AST_Expression::EV_longlong:
+ switch (ev->et)
+ {
+ case AST_Expression::EV_short:
+ ev->u.dval = (double) ev->u.sval;
+ ev->et = AST_Expression::EV_double;
+ return ev;
+ case AST_Expression::EV_ushort:
+ ev->u.dval = (double) ev->u.usval;
+ ev->et = AST_Expression::EV_double;
+ return ev;
+ case AST_Expression::EV_long:
+ ev->u.dval = (double) ev->u.lval;
+ ev->et = AST_Expression::EV_double;
+ return ev;
+ case AST_Expression::EV_ulong:
+ ev->u.dval = (double) ev->u.ulval;
+ ev->et = AST_Expression::EV_double;
+ return ev;
+ case AST_Expression::EV_longlong:
#if ! defined (ACE_LACKS_LONGLONG_T)
- ev->u.dval = (double) ev->u.llval;
- ev->et = AST_Expression::EV_double;
- return ev;
+ ev->u.dval = (double) ev->u.llval;
+ ev->et = AST_Expression::EV_double;
+ return ev;
#else /* ! defined (ACE_LACKS_LONGLONG_T) */
- return NULL;
+ return 0;
#endif /* ! defined (ACE_LACKS_LONGLONG_T) */
- case AST_Expression::EV_ulonglong:
+ case AST_Expression::EV_ulonglong:
#if ! defined (ACE_LACKS_LONGLONG_T)
- // Some compilers don't implement unsigned 64-bit to double
- // conversions, so we are stuck with the signed 64-bit max value.
- if (ev->u.ullval > ACE_INT64_MAX)
- return NULL;
- ev->u.dval = (double) ((ACE_CDR::LongLong) ev->u.ullval);
- ev->et = AST_Expression::EV_double;
- return ev;
+ // Some compilers don't implement unsigned 64-bit to double
+ // conversions, so we are stuck with the signed 64-bit max value.
+ if (ev->u.ullval > ACE_INT64_MAX)
+ {
+ return 0;
+ }
+
+ ev->u.dval = (double) ((ACE_CDR::LongLong) ev->u.ullval);
+ ev->et = AST_Expression::EV_double;
+ return ev;
#else /* ! defined (ACE_LACKS_LONGLONG_T) */
- return NULL;
+ return NULL;
#endif /* ! defined (ACE_LACKS_LONGLONG_T) */
- case AST_Expression::EV_bool:
- ev->u.dval = (ev->u.bval == I_TRUE) ? 1.0 : 0.0;
- ev->et = AST_Expression::EV_double;
- return ev;
- case AST_Expression::EV_float:
- ev->u.dval = (double) ev->u.fval;
- ev->et = AST_Expression::EV_double;
- return ev;
- case AST_Expression::EV_double:
- return ev;
+ case AST_Expression::EV_bool:
+ ev->u.dval = (ev->u.bval == I_TRUE) ? 1.0 : 0.0;
+ ev->et = AST_Expression::EV_double;
+ return ev;
+ case AST_Expression::EV_float:
+ ev->u.dval = (double) ev->u.fval;
+ ev->et = AST_Expression::EV_double;
+ return ev;
+ case AST_Expression::EV_double:
+ return ev;
+ case AST_Expression::EV_char:
+ ev->u.dval = (double) ev->u.cval;
+ ev->et = AST_Expression::EV_double;
+ return ev;
+ case AST_Expression::EV_wchar:
+ ev->u.dval = (double) ev->u.wcval;
+ ev->et = AST_Expression::EV_double;
+ return ev;
+ case AST_Expression::EV_octet:
+ ev->u.dval = (double) ev->u.oval;
+ ev->et = AST_Expression::EV_double;
+ return ev;
+ case AST_Expression::EV_longdouble:
+ case AST_Expression::EV_wstring:
+ case AST_Expression::EV_string:
+ case AST_Expression::EV_any:
+ case AST_Expression::EV_void:
+ case AST_Expression::EV_none:
+ return 0;
+ }
case AST_Expression::EV_char:
- ev->u.dval = (double) ev->u.cval;
- ev->et = AST_Expression::EV_double;
- return ev;
- case AST_Expression::EV_wchar:
- ev->u.dval = (double) ev->u.wcval;
- ev->et = AST_Expression::EV_double;
- return ev;
- case AST_Expression::EV_octet:
- ev->u.dval = (double) ev->u.oval;
- ev->et = AST_Expression::EV_double;
- return ev;
- case AST_Expression::EV_longdouble:
- case AST_Expression::EV_wstring:
- case AST_Expression::EV_string:
- case AST_Expression::EV_any:
- case AST_Expression::EV_void:
- case AST_Expression::EV_none:
- return NULL;
- }
- case AST_Expression::EV_char:
- switch (ev->et) {
- case AST_Expression::EV_short:
- if (ev->u.sval > (short) ACE_CHAR_MAX
- || ev->u.sval < (short) ACE_CHAR_MIN)
- return NULL;
- ev->u.cval = (char) ev->u.sval;
- ev->et = AST_Expression::EV_char;
- return ev;
- case AST_Expression::EV_ushort:
- if (ev->u.usval > (unsigned short) ACE_CHAR_MAX)
- return NULL;
- ev->u.cval = (char) ev->u.usval;
- ev->et = AST_Expression::EV_char;
- return ev;
- case AST_Expression::EV_long:
- if (ev->u.lval > (long) ACE_CHAR_MAX
- || ev->u.lval < (long) ACE_CHAR_MIN)
- return NULL;
- ev->u.cval = (char) ev->u.lval;
- ev->et = AST_Expression::EV_char;
- return ev;
- case AST_Expression::EV_ulong:
- if (ev->u.ulval > (unsigned long) ACE_CHAR_MAX)
- return NULL;
- ev->u.cval = (char) ev->u.ulval;
- ev->et = AST_Expression::EV_char;
- return ev;
- case AST_Expression::EV_longlong:
+ switch (ev->et)
+ {
+ case AST_Expression::EV_short:
+ if (ev->u.sval > (short) ACE_CHAR_MAX
+ || ev->u.sval < (short) ACE_CHAR_MIN)
+ {
+ return 0;
+ }
+
+ ev->u.cval = (char) ev->u.sval;
+ ev->et = AST_Expression::EV_char;
+ return ev;
+ case AST_Expression::EV_ushort:
+ if (ev->u.usval > (unsigned short) ACE_CHAR_MAX)
+ {
+ return 0;
+ }
+
+ ev->u.cval = (char) ev->u.usval;
+ ev->et = AST_Expression::EV_char;
+ return ev;
+ case AST_Expression::EV_long:
+ if (ev->u.lval > (long) ACE_CHAR_MAX
+ || ev->u.lval < (long) ACE_CHAR_MIN)
+ {
+ return 0;
+ }
+
+ ev->u.cval = (char) ev->u.lval;
+ ev->et = AST_Expression::EV_char;
+ return ev;
+ case AST_Expression::EV_ulong:
+ if (ev->u.ulval > (unsigned long) ACE_CHAR_MAX)
+ {
+ return 0;
+ }
+
+ ev->u.cval = (char) ev->u.ulval;
+ ev->et = AST_Expression::EV_char;
+ return ev;
+ case AST_Expression::EV_longlong:
#if ! defined (ACE_LACKS_LONGLONG_T)
- if (ev->u.llval > (ACE_CDR::LongLong) ACE_CHAR_MAX
- || ev->u.llval < (ACE_CDR::LongLong) ACE_CHAR_MIN)
- return NULL;
- ev->u.cval = (char) ev->u.llval;
- ev->et = AST_Expression::EV_char;
- return ev;
+ if (ev->u.llval > (ACE_CDR::LongLong) ACE_CHAR_MAX
+ || ev->u.llval < (ACE_CDR::LongLong) ACE_CHAR_MIN)
+ {
+ return 0;
+ }
+
+ ev->u.cval = (char) ev->u.llval;
+ ev->et = AST_Expression::EV_char;
+ return ev;
#else /* ! defined (ACE_LACKS_LONGLONG_T) */
- return NULL;
+ return 0;
#endif /* ! defined (ACE_LACKS_LONGLONG_T) */
- case AST_Expression::EV_ulonglong:
+ case AST_Expression::EV_ulonglong:
#if ! defined (ACE_LACKS_LONGLONG_T)
- if (ev->u.ullval > (ACE_CDR::ULongLong) ACE_CHAR_MAX)
- return NULL;
- ev->u.cval = (char) ev->u.ullval;
- ev->et = AST_Expression::EV_char;
- return ev;
+ if (ev->u.ullval > (ACE_CDR::ULongLong) ACE_CHAR_MAX)
+ {
+ return 0;
+ }
+
+ ev->u.cval = (char) ev->u.ullval;
+ ev->et = AST_Expression::EV_char;
+ return ev;
#else /* ! defined (ACE_LACKS_LONGLONG_T) */
- return NULL;
+ return 0;
#endif /* ! defined (ACE_LACKS_LONGLONG_T) */
- case AST_Expression::EV_bool:
- ev->u.cval = (char) ev->u.bval;
- ev->et = AST_Expression::EV_char;
- return ev;
- case AST_Expression::EV_float:
- if (ev->u.fval > (float) ACE_CHAR_MAX
- || ev->u.fval < (float) ACE_CHAR_MIN)
- return NULL;
- ev->u.cval = (char) ev->u.fval;
- ev->et = AST_Expression::EV_char;
- return ev;
- case AST_Expression::EV_double:
- if (ev->u.dval > (double) ACE_CHAR_MAX
- || ev->u.dval < (double) ACE_CHAR_MIN)
- return NULL;
- ev->u.cval = (char) ev->u.dval;
- ev->et = AST_Expression::EV_char;
- return ev;
- case AST_Expression::EV_char:
- return ev;
+ case AST_Expression::EV_bool:
+ ev->u.cval = (char) ev->u.bval;
+ ev->et = AST_Expression::EV_char;
+ return ev;
+ case AST_Expression::EV_float:
+ if (ev->u.fval > (float) ACE_CHAR_MAX
+ || ev->u.fval < (float) ACE_CHAR_MIN)
+ {
+ return 0;
+ }
+
+ ev->u.cval = (char) ev->u.fval;
+ ev->et = AST_Expression::EV_char;
+ return ev;
+ case AST_Expression::EV_double:
+ if (ev->u.dval > (double) ACE_CHAR_MAX
+ || ev->u.dval < (double) ACE_CHAR_MIN)
+ {
+ return 0;
+ }
+
+ ev->u.cval = (char) ev->u.dval;
+ ev->et = AST_Expression::EV_char;
+ return ev;
+ case AST_Expression::EV_char:
+ return ev;
+ case AST_Expression::EV_wchar:
+ if (ev->u.wcval > (ACE_CDR::WChar) ACE_CHAR_MAX)
+ {
+ return 0;
+ }
+
+ ev->u.cval = (char) ev->u.wcval;
+ ev->et = AST_Expression::EV_char;
+ return ev;
+ case AST_Expression::EV_octet:
+ if (ev->u.oval > (unsigned char) ACE_CHAR_MAX)
+ {
+ return 0;
+ }
+
+ ev->u.cval = (char) ev->u.oval;
+ ev->et = AST_Expression::EV_char;
+ return ev;
+ case AST_Expression::EV_longdouble:
+ case AST_Expression::EV_wstring:
+ case AST_Expression::EV_string:
+ case AST_Expression::EV_any:
+ case AST_Expression::EV_void:
+ case AST_Expression::EV_none:
+ return 0;
+ }
case AST_Expression::EV_wchar:
- if (ev->u.wcval > (ACE_CDR::WChar) ACE_CHAR_MAX)
- return NULL;
- ev->u.cval = (char) ev->u.wcval;
- ev->et = AST_Expression::EV_char;
- return ev;
- case AST_Expression::EV_octet:
- if (ev->u.oval > (unsigned char) ACE_CHAR_MAX)
- return NULL;
- ev->u.cval = (char) ev->u.oval;
- ev->et = AST_Expression::EV_char;
- return ev;
- case AST_Expression::EV_longdouble:
- case AST_Expression::EV_wstring:
- case AST_Expression::EV_string:
- case AST_Expression::EV_any:
- case AST_Expression::EV_void:
- case AST_Expression::EV_none:
- return NULL;
- }
- case AST_Expression::EV_wchar:
- switch (ev->et) {
- case AST_Expression::EV_short:
- if (ev->u.sval < 0)
- return NULL;
- ev->u.wcval = (ACE_CDR::WChar) ev->u.sval;
- ev->et = AST_Expression::EV_wchar;
- return ev;
- case AST_Expression::EV_ushort:
- ev->u.wcval = (ACE_CDR::WChar) ev->u.usval;
- ev->et = AST_Expression::EV_char;
- return ev;
- case AST_Expression::EV_long:
- if (ev->u.lval < 0
- || ev->u.lval > ACE_WCHAR_MAX)
- return NULL;
- ev->u.wcval = (ACE_CDR::WChar) ev->u.lval;
- ev->et = AST_Expression::EV_wchar;
- return ev;
- case AST_Expression::EV_ulong:
- if (ev->u.ulval > ACE_WCHAR_MAX)
- return NULL;
- ev->u.wcval = (ACE_CDR::WChar) ev->u.ulval;
- ev->et = AST_Expression::EV_wchar;
- return ev;
- case AST_Expression::EV_longlong:
+ switch (ev->et)
+ {
+ case AST_Expression::EV_short:
+ if (ev->u.sval < 0)
+ {
+ return 0;
+ }
+
+ ev->u.wcval = (ACE_CDR::WChar) ev->u.sval;
+ ev->et = AST_Expression::EV_wchar;
+ return ev;
+ case AST_Expression::EV_ushort:
+ ev->u.wcval = (ACE_CDR::WChar) ev->u.usval;
+ ev->et = AST_Expression::EV_char;
+ return ev;
+ case AST_Expression::EV_long:
+ if (ev->u.lval < 0
+ || ev->u.lval > ACE_WCHAR_MAX)
+ {
+ return 0;
+ }
+
+ ev->u.wcval = (ACE_CDR::WChar) ev->u.lval;
+ ev->et = AST_Expression::EV_wchar;
+ return ev;
+ case AST_Expression::EV_ulong:
+ if (ev->u.ulval > ACE_WCHAR_MAX)
+ {
+ return 0;
+ }
+
+ ev->u.wcval = (ACE_CDR::WChar) ev->u.ulval;
+ ev->et = AST_Expression::EV_wchar;
+ return ev;
+ case AST_Expression::EV_longlong:
#if ! defined (ACE_LACKS_LONGLONG_T)
- if (ev->u.llval > (ACE_CDR::LongLong) ACE_WCHAR_MAX
- || ev->u.llval < 0)
- return NULL;
- ev->u.wcval = (ACE_CDR::WChar) ev->u.llval;
- ev->et = AST_Expression::EV_wchar;
- return ev;
+ if (ev->u.llval > (ACE_CDR::LongLong) ACE_WCHAR_MAX
+ || ev->u.llval < 0)
+ {
+ return 0;
+ }
+
+ ev->u.wcval = (ACE_CDR::WChar) ev->u.llval;
+ ev->et = AST_Expression::EV_wchar;
+ return ev;
#else /* ! defined (ACE_LACKS_LONGLONG_T) */
- return NULL;
+ return 0;
#endif /* ! defined (ACE_LACKS_LONGLONG_T) */
- case AST_Expression::EV_ulonglong:
+ case AST_Expression::EV_ulonglong:
#if ! defined (ACE_LACKS_LONGLONG_T)
- if (ev->u.ullval > (ACE_CDR::ULongLong) ACE_WCHAR_MAX)
- return NULL;
- ev->u.wcval = (ACE_CDR::WChar) ev->u.ullval;
- ev->et = AST_Expression::EV_wchar;
- return ev;
+ if (ev->u.ullval > (ACE_CDR::ULongLong) ACE_WCHAR_MAX)
+ {
+ return 0;
+ }
+
+ ev->u.wcval = (ACE_CDR::WChar) ev->u.ullval;
+ ev->et = AST_Expression::EV_wchar;
+ return ev;
#else /* ! defined (ACE_LACKS_LONGLONG_T) */
- return NULL;
+ return 0;
#endif /* ! defined (ACE_LACKS_LONGLONG_T) */
- case AST_Expression::EV_bool:
- ev->u.wcval = (ACE_CDR::WChar) ev->u.bval;
- ev->et = AST_Expression::EV_wchar;
- return ev;
- case AST_Expression::EV_float:
- if (ev->u.fval > (float) ACE_WCHAR_MAX
- || ev->u.fval < 0)
- return NULL;
- ev->u.wcval = (ACE_CDR::WChar) ev->u.fval;
- ev->et = AST_Expression::EV_wchar;
- return ev;
- case AST_Expression::EV_double:
- if (ev->u.dval > (double) ACE_WCHAR_MAX
- || ev->u.dval < 0)
- return NULL;
- ev->u.wcval = (ACE_CDR::WChar) ev->u.dval;
- ev->et = AST_Expression::EV_wchar;
- return ev;
- case AST_Expression::EV_char:
- if ((signed char) ev->u.cval < 0)
- return NULL;
- ev->u.wcval = (ACE_CDR::WChar) ev->u.cval;
- ev->et = AST_Expression::EV_wchar;
- return ev;
- case AST_Expression::EV_wchar:
- return ev;
+ case AST_Expression::EV_bool:
+ ev->u.wcval = (ACE_CDR::WChar) ev->u.bval;
+ ev->et = AST_Expression::EV_wchar;
+ return ev;
+ case AST_Expression::EV_float:
+ if (ev->u.fval > (float) ACE_WCHAR_MAX
+ || ev->u.fval < 0)
+ {
+ return 0;
+ }
+
+ ev->u.wcval = (ACE_CDR::WChar) ev->u.fval;
+ ev->et = AST_Expression::EV_wchar;
+ return ev;
+ case AST_Expression::EV_double:
+ if (ev->u.dval > (double) ACE_WCHAR_MAX
+ || ev->u.dval < 0)
+ {
+ return 0;
+ }
+
+ ev->u.wcval = (ACE_CDR::WChar) ev->u.dval;
+ ev->et = AST_Expression::EV_wchar;
+ return ev;
+ case AST_Expression::EV_char:
+ if ((signed char) ev->u.cval < 0)
+ {
+ return 0;
+ }
+
+ ev->u.wcval = (ACE_CDR::WChar) ev->u.cval;
+ ev->et = AST_Expression::EV_wchar;
+ return ev;
+ case AST_Expression::EV_wchar:
+ return ev;
+ case AST_Expression::EV_octet:
+ ev->u.wcval = (ACE_CDR::WChar) ev->u.oval;
+ ev->et = AST_Expression::EV_wchar;
+ return ev;
+ case AST_Expression::EV_longdouble:
+ case AST_Expression::EV_wstring:
+ case AST_Expression::EV_string:
+ case AST_Expression::EV_any:
+ case AST_Expression::EV_void:
+ case AST_Expression::EV_none:
+ return 0;
+ }
case AST_Expression::EV_octet:
- ev->u.wcval = (ACE_CDR::WChar) ev->u.oval;
- ev->et = AST_Expression::EV_wchar;
- return ev;
- case AST_Expression::EV_longdouble:
- case AST_Expression::EV_wstring:
- case AST_Expression::EV_string:
- case AST_Expression::EV_any:
- case AST_Expression::EV_void:
- case AST_Expression::EV_none:
- return NULL;
- }
- case AST_Expression::EV_octet:
- switch (ev->et) {
- case AST_Expression::EV_short:
- if (ev->u.sval < 0 || ev->u.sval > (short) ACE_OCTET_MAX)
- return NULL;
- ev->u.oval = (unsigned char) ev->u.sval;
- ev->et = AST_Expression::EV_octet;
- return ev;
- case AST_Expression::EV_ushort:
- if (ev->u.usval > (unsigned short) ACE_OCTET_MAX)
- return NULL;
- ev->u.oval = (unsigned char) ev->u.usval;
- ev->et = AST_Expression::EV_octet;
- return ev;
- case AST_Expression::EV_long:
- if (ev->u.lval < 0
- || ev->u.lval > (long) ACE_OCTET_MAX)
- return NULL;
- ev->u.oval = (unsigned char) ev->u.lval;
- ev->et = AST_Expression::EV_octet;
- return ev;
- case AST_Expression::EV_ulong:
- if (ev->u.ulval > (unsigned long) ACE_OCTET_MAX)
- return NULL;
- ev->u.oval = (unsigned char) ev->u.ulval;
- ev->et = AST_Expression::EV_octet;
- return ev;
- case AST_Expression::EV_longlong:
+ switch (ev->et)
+ {
+ case AST_Expression::EV_short:
+ if (ev->u.sval < 0
+ || ev->u.sval > (short) ACE_OCTET_MAX)
+ {
+ return 0;
+ }
+
+ ev->u.oval = (unsigned char) ev->u.sval;
+ ev->et = AST_Expression::EV_octet;
+ return ev;
+ case AST_Expression::EV_ushort:
+ if (ev->u.usval > (unsigned short) ACE_OCTET_MAX)
+ {
+ return 0;
+ }
+
+ ev->u.oval = (unsigned char) ev->u.usval;
+ ev->et = AST_Expression::EV_octet;
+ return ev;
+ case AST_Expression::EV_long:
+ if (ev->u.lval < 0
+ || ev->u.lval > (long) ACE_OCTET_MAX)
+ {
+ return 0;
+ }
+
+ ev->u.oval = (unsigned char) ev->u.lval;
+ ev->et = AST_Expression::EV_octet;
+ return ev;
+ case AST_Expression::EV_ulong:
+ if (ev->u.ulval > (unsigned long) ACE_OCTET_MAX)
+ {
+ return 0;
+ }
+
+ ev->u.oval = (unsigned char) ev->u.ulval;
+ ev->et = AST_Expression::EV_octet;
+ return ev;
+ case AST_Expression::EV_longlong:
#if ! defined (ACE_LACKS_LONGLONG_T)
- if (ev->u.llval < 0
- || ev->u.llval > (ACE_CDR::LongLong) ACE_OCTET_MAX)
- return NULL;
- ev->u.oval = (unsigned char) ev->u.llval;
- ev->et = AST_Expression::EV_octet;
- return ev;
+ if (ev->u.llval < 0
+ || ev->u.llval > (ACE_CDR::LongLong) ACE_OCTET_MAX)
+ {
+ return 0;
+ }
+
+ ev->u.oval = (unsigned char) ev->u.llval;
+ ev->et = AST_Expression::EV_octet;
+ return ev;
#else /* ! defined (ACE_LACKS_LONGLONG_T) */
- return NULL;
+ return 0;
#endif /* ! defined (ACE_LACKS_LONGLONG_T) */
- case AST_Expression::EV_ulonglong:
+ case AST_Expression::EV_ulonglong:
#if ! defined (ACE_LACKS_LONGLONG_T)
- if (ev->u.ullval > (ACE_CDR::ULongLong) ACE_OCTET_MAX)
- return NULL;
- ev->u.oval = (unsigned char) ev->u.ullval;
- ev->et = AST_Expression::EV_octet;
- return ev;
+ if (ev->u.ullval > (ACE_CDR::ULongLong) ACE_OCTET_MAX)
+ {
+ return 0;
+ }
+
+ ev->u.oval = (unsigned char) ev->u.ullval;
+ ev->et = AST_Expression::EV_octet;
+ return ev;
#else /* ! defined (ACE_LACKS_LONGLONG_T) */
- return NULL;
+ return 0;
#endif /* ! defined (ACE_LACKS_LONGLONG_T) */
- case AST_Expression::EV_bool:
- ev->u.oval = (unsigned char) ((ev->u.bval == I_FALSE) ? 1 : 0);
- ev->et = AST_Expression::EV_octet;
- return ev;
- case AST_Expression::EV_float:
- if (ev->u.fval < 0.0
- || ev->u.fval > (float) ACE_OCTET_MAX)
- return NULL;
- ev->u.oval = (unsigned char) ev->u.fval;
- ev->et = AST_Expression::EV_octet;
- return ev;
- case AST_Expression::EV_double:
- if (ev->u.dval < 0.0
- || ev->u.dval > (double) ACE_OCTET_MAX)
- return NULL;
- ev->u.oval = (unsigned char) ev->u.dval;
- ev->et = AST_Expression::EV_octet;
- return ev;
- case AST_Expression::EV_char:
- if ((signed char) ev->u.cval < 0)
- return NULL;
- ev->u.oval = (unsigned char) ev->u.cval;
- ev->et = AST_Expression::EV_octet;
- return ev;
- case AST_Expression::EV_wchar:
- if (ev->u.wcval > (ACE_CDR::WChar) ACE_OCTET_MAX)
- return NULL;
- ev->u.oval = (unsigned char) ev->u.wcval;
- ev->et = AST_Expression::EV_octet;
- return ev;
- case AST_Expression::EV_octet:
- return ev;
- case AST_Expression::EV_longdouble:
- case AST_Expression::EV_wstring:
- case AST_Expression::EV_string:
+ case AST_Expression::EV_bool:
+ ev->u.oval = (unsigned char) ((ev->u.bval == I_FALSE) ? 1 : 0);
+ ev->et = AST_Expression::EV_octet;
+ return ev;
+ case AST_Expression::EV_float:
+ if (ev->u.fval < 0.0
+ || ev->u.fval > (float) ACE_OCTET_MAX)
+ {
+ return 0;
+ }
+
+ ev->u.oval = (unsigned char) ev->u.fval;
+ ev->et = AST_Expression::EV_octet;
+ return ev;
+ case AST_Expression::EV_double:
+ if (ev->u.dval < 0.0
+ || ev->u.dval > (double) ACE_OCTET_MAX)
+ {
+ return 0;
+ }
+
+ ev->u.oval = (unsigned char) ev->u.dval;
+ ev->et = AST_Expression::EV_octet;
+ return ev;
+ case AST_Expression::EV_char:
+ if ((signed char) ev->u.cval < 0)
+ {
+ return 0;
+ }
+
+ ev->u.oval = (unsigned char) ev->u.cval;
+ ev->et = AST_Expression::EV_octet;
+ return ev;
+ case AST_Expression::EV_wchar:
+ if (ev->u.wcval > (ACE_CDR::WChar) ACE_OCTET_MAX)
+ {
+ return 0;
+ }
+
+ ev->u.oval = (unsigned char) ev->u.wcval;
+ ev->et = AST_Expression::EV_octet;
+ return ev;
+ case AST_Expression::EV_octet:
+ return ev;
+ case AST_Expression::EV_longdouble:
+ case AST_Expression::EV_wstring:
+ case AST_Expression::EV_string:
+ case AST_Expression::EV_any:
+ case AST_Expression::EV_void:
+ case AST_Expression::EV_none:
+ return 0;
+ }
case AST_Expression::EV_any:
+ switch (ev->et)
+ {
+ case AST_Expression::EV_any:
+ return ev;
+ default:
+ return 0;
+ }
case AST_Expression::EV_void:
+ switch (ev->et)
+ {
+ case AST_Expression::EV_void:
+ return ev;
+ default:
+ return 0;
+ }
case AST_Expression::EV_none:
- return NULL;
- }
- case AST_Expression::EV_any:
- switch (ev->et) {
- case AST_Expression::EV_any:
- return ev;
- default:
- return NULL;
- }
- case AST_Expression::EV_void:
- switch (ev->et) {
- case AST_Expression::EV_void:
- return ev;
- default:
- return NULL;
- }
- case AST_Expression::EV_none:
- return NULL;
- case AST_Expression::EV_string:
- switch (ev->et) {
+ return 0;
case AST_Expression::EV_string:
- return ev;
- default:
- return NULL;
+ switch (ev->et)
+ {
+ case AST_Expression::EV_string:
+ return ev;
+ default:
+ return 0;
+ }
+ case AST_Expression::EV_longdouble:
+ case AST_Expression::EV_wstring:
+ return 0;
}
- case AST_Expression::EV_longdouble:
- case AST_Expression::EV_wstring:
- return NULL;
- }
- return NULL;
+
+ return 0;
}
-/*
- * Evaluate the expression wrt the evaluation kind requested. Supported
- * evaluation kinds are
- * - EK_const: The expression must evaluate to a constant
- * - EK_positive_int: The expression must further evaluate to a
- * positive integer
- */
+// Evaluate the expression wrt the evaluation kind requested. Supported
+// evaluation kinds are
+// - EK_const: The expression must evaluate to a constant
+// - EK_positive_int: The expression must further evaluate to a
+// positive integer
+
// @@(JP) This just maps one enum to another. It's a temporary fix,
// but AST_Expression::EvalKind should go eventually.
static AST_Expression::AST_ExprValue *
@@ -1359,890 +1576,1020 @@ eval_kind(AST_Expression::AST_ExprValue *ev, AST_Expression::EvalKind ek)
case AST_Expression::EK_octet:
return coerce_value (ev, AST_Expression::EV_octet);
default:
- return NULL;
+ return 0;
}
}
-/*
- * Private operations
- */
+// Private operations.
-/*
- * Apply binary operators to an AST_Expression after evaluating
- * its sub-expressions.
- * Operations supported:
- *
- * '+', '-', '*', '/'
- */
+// Apply binary operators to an AST_Expression after evaluating
+// its sub-expressions.
+// Operations supported: '+', '-', '*', '/'
AST_Expression::AST_ExprValue *
-AST_Expression::eval_bin_op(AST_Expression::EvalKind ek)
+AST_Expression::eval_bin_op (AST_Expression::EvalKind ek)
{
- AST_ExprValue *retval = NULL;
-
- if (pd_v1 == NULL || pd_v2 == NULL)
- return NULL;
- pd_v1->set_ev(pd_v1->eval_internal(ek));
- if (pd_v1->ev() == NULL)
- return NULL;
- pd_v1->set_ev(pd_v1->coerce(EV_double));
- if (pd_v1->ev() == NULL)
- return NULL;
- pd_v2->set_ev(pd_v2->eval_internal(ek));
- if (pd_v2->ev() == NULL)
- return NULL;
- pd_v2->set_ev(pd_v2->coerce(EV_double));
- if (pd_v2->ev() == NULL)
- return NULL;
-
- retval = new AST_ExprValue;
+ AST_ExprValue *retval = 0;
+
+ if (this->pd_v1 == 0 || this->pd_v2 == 0)
+ {
+ return 0;
+ }
+
+ this->pd_v1->set_ev (this->pd_v1->eval_internal (ek));
+
+ if (this->pd_v1->ev () == 0)
+ {
+ return 0;
+ }
+
+ this->pd_v1->set_ev (this->pd_v1->coerce (EV_double));
+
+ if (this->pd_v1->ev () == 0)
+ {
+ return 0;
+ }
+
+ this->pd_v2->set_ev (this->pd_v2->eval_internal (ek));
+
+ if (this->pd_v2->ev () == 0)
+ {
+ return 0;
+ }
+
+ this->pd_v2->set_ev (this->pd_v2->coerce(EV_double));
+
+ if (pd_v2->ev () == 0)
+ {
+ return 0;
+ }
+
+ ACE_NEW_RETURN (retval,
+ AST_ExprValue,
+ 0);
+
retval->et = EV_double;
- switch (pd_ec) {
- case EC_mod:
- if (pd_v2->ev()->u.lval == 0)
- return NULL;
- retval->u.lval = pd_v1->ev()->u.lval % pd_v2->ev()->u.lval;
- break;
- case EC_add:
- retval->u.dval = pd_v1->ev()->u.dval + pd_v2->ev()->u.dval;
- break;
- case EC_minus:
- retval->u.dval = pd_v1->ev()->u.dval - pd_v2->ev()->u.dval;
- break;
- case EC_mul:
- retval->u.dval = pd_v1->ev()->u.dval * pd_v2->ev()->u.dval;
- break;
- case EC_div:
- if (pd_v2->ev()->u.dval == 0.0)
- return NULL;
- retval->u.dval = pd_v1->ev()->u.dval / pd_v2->ev()->u.dval;
- break;
- default:
- return NULL;
- }
+ switch (this->pd_ec)
+ {
+ case EC_mod:
+ if (this->pd_v2->ev ()->u.lval == 0)
+ {
+ return 0;
+ }
+
+ retval->u.lval =
+ this->pd_v1->ev ()->u.lval % this->pd_v2->ev ()->u.lval;
+ break;
+ case EC_add:
+ retval->u.dval =
+ this->pd_v1->ev ()->u.dval + this->pd_v2->ev ()->u.dval;
+ break;
+ case EC_minus:
+ retval->u.dval =
+ this->pd_v1->ev ()->u.dval - this->pd_v2->ev ()->u.dval;
+ break;
+ case EC_mul:
+ retval->u.dval =
+ this->pd_v1->ev ()->u.dval * this->pd_v2->ev ()->u.dval;
+ break;
+ case EC_div:
+ if (this->pd_v2->ev ()->u.dval == 0.0)
+ {
+ return 0;
+ }
+
+ retval->u.dval =
+ this->pd_v1->ev ()->u.dval / this->pd_v2->ev ()->u.dval;
+ break;
+ default:
+ return 0;
+ }
+
return retval;
}
-/*
- * Apply bitwise operations to an AST_Expression after evaluating
- * its sub-expressions.
- * Operations supported:
- *
- * '%', '|', '&', '^', '<<', '>>'
- */
+// Apply bitwise operations to an AST_Expression after evaluating
+// its sub-expressions.
+// Operations supported: '%', '|', '&', '^', '<<', '>>'
AST_Expression::AST_ExprValue *
-AST_Expression::eval_bit_op(AST_Expression::EvalKind ek)
+AST_Expression::eval_bit_op (AST_Expression::EvalKind ek)
{
- AST_Expression::AST_ExprValue *retval=NULL;
+ AST_Expression::AST_ExprValue *retval = 0;
- if (pd_v1 == NULL || pd_v2 == NULL)
- return NULL;
+ if (this->pd_v1 == 0 || this->pd_v2 == 0)
+ {
+ return 0;
+ }
- pd_v1->set_ev (pd_v1->eval_internal (ek));
- pd_v2->set_ev (pd_v2->eval_internal (ek));
- if (pd_v1->ev () == NULL || pd_v2->ev () == NULL )
- return NULL;
+ this->pd_v1->set_ev (this->pd_v1->eval_internal (ek));
+ this->pd_v2->set_ev (this->pd_v2->eval_internal (ek));
- retval = new AST_ExprValue;
+ if (this->pd_v1->ev () == 0 || this->pd_v2->ev () == 0 )
+ {
+ return 0;
+ }
+
+ ACE_NEW_RETURN (retval,
+ AST_ExprValue,
+ 0);
// @@(JP) The rest will have to be expanded to handle 64-bit ints.
if (ek == EK_ulong)
{
- pd_v1->set_ev (pd_v1->coerce (EV_ulong));
- pd_v2->set_ev (pd_v2->coerce (EV_ulong));
+ this->pd_v1->set_ev (this->pd_v1->coerce (EV_ulong));
+ this->pd_v2->set_ev (this->pd_v2->coerce (EV_ulong));
retval->et = EV_ulong;
}
else
{
- pd_v1->set_ev (pd_v1->coerce (EV_long));
- pd_v2->set_ev (pd_v2->coerce (EV_long));
+ this->pd_v1->set_ev (this->pd_v1->coerce (EV_long));
+ this->pd_v2->set_ev (this->pd_v2->coerce (EV_long));
retval->et = EV_long;
}
- if (pd_v1->ev () == NULL || pd_v2->ev () == NULL)
- return NULL;
+ if (this->pd_v1->ev () == 0 || this->pd_v2->ev () == 0)
+ {
+ return 0;
+ }
if (ek == EK_ulong)
{
- switch (pd_ec)
+ switch (this->pd_ec)
{
case EC_or:
- retval->u.ulval = pd_v1->ev ()->u.ulval | pd_v2->ev ()->u.ulval;
+ retval->u.ulval =
+ this->pd_v1->ev ()->u.ulval | this->pd_v2->ev ()->u.ulval;
break;
case EC_xor:
- retval->u.ulval = pd_v1->ev ()->u.ulval ^ pd_v2->ev ()->u.ulval;
+ retval->u.ulval =
+ this->pd_v1->ev ()->u.ulval ^ this->pd_v2->ev ()->u.ulval;
break;
case EC_and:
- retval->u.ulval = pd_v1->ev ()->u.ulval & pd_v2->ev ()->u.ulval;
+ retval->u.ulval =
+ this->pd_v1->ev ()->u.ulval & this->pd_v2->ev ()->u.ulval;
break;
case EC_left:
- retval->u.ulval = pd_v1->ev ()->u.ulval << pd_v2->ev ()->u.ulval;
+ retval->u.ulval =
+ this->pd_v1->ev ()->u.ulval << this->pd_v2->ev ()->u.ulval;
break;
case EC_right:
- retval->u.ulval = pd_v1->ev ()->u.ulval >> pd_v2->ev ()->u.ulval;
+ retval->u.ulval =
+ this->pd_v1->ev ()->u.ulval >> this->pd_v2->ev ()->u.ulval;
break;
default:
- return NULL;
+ return 0;
}
}
else
{
- switch (pd_ec)
+ switch (this->pd_ec)
{
case EC_or:
- retval->u.lval = pd_v1->ev ()->u.lval | pd_v2->ev ()->u.lval;
+ retval->u.lval =
+ this->pd_v1->ev ()->u.lval | this->pd_v2->ev ()->u.lval;
break;
case EC_xor:
- retval->u.lval = pd_v1->ev ()->u.lval ^ pd_v2->ev ()->u.lval;
+ retval->u.lval =
+ this->pd_v1->ev ()->u.lval ^ this->pd_v2->ev ()->u.lval;
break;
case EC_and:
- retval->u.lval = pd_v1->ev ()->u.lval & pd_v2->ev ()->u.lval;
+ retval->u.lval =
+ this->pd_v1->ev ()->u.lval & this->pd_v2->ev ()->u.lval;
break;
case EC_left:
- retval->u.lval = pd_v1->ev ()->u.lval << pd_v2->ev ()->u.lval;
+ retval->u.lval =
+ this->pd_v1->ev ()->u.lval << this->pd_v2->ev ()->u.lval;
break;
case EC_right:
- retval->u.lval = pd_v1->ev ()->u.lval >> pd_v2->ev ()->u.lval;
+ retval->u.lval =
+ this->pd_v1->ev ()->u.lval >> this->pd_v2->ev ()->u.lval;
break;
default:
- return NULL;
+ return 0;
}
}
return retval;
}
-/*
- * Apply unary operators to an AST_Expression after evaluating its
- * sub-expression.
- * Operations supported:
- *
- * '-', '+', '~'
- */
+// Apply unary operators to an AST_Expression after evaluating its
+// sub-expression.
+// Operations supported: '-', '+', '~'
AST_Expression::AST_ExprValue *
-AST_Expression::eval_un_op(AST_Expression::EvalKind ek)
+AST_Expression::eval_un_op (AST_Expression::EvalKind ek)
{
- AST_ExprValue *retval = NULL;
+ AST_ExprValue *retval = 0;
+
+ if (this->pd_ev != 0)
+ {
+ return this->pd_ev;
+ }
- if (pd_ev != NULL)
- return pd_ev;
+ if (this->pd_v1 == 0)
+ {
+ return 0;
+ }
- if (pd_v1 == NULL)
- return NULL;
+ this->pd_v1->set_ev (this->pd_v1->eval_internal (ek));
- pd_v1->set_ev(pd_v1->eval_internal(ek));
- if (pd_v1->ev() == NULL)
- return NULL;
+ if (this->pd_v1->ev () == 0)
+ {
+ return 0;
+ }
+
+ ACE_NEW_RETURN (retval,
+ AST_ExprValue,
+ 0);
- retval = new AST_ExprValue;
retval->et = EV_double;
- switch (pd_ec)
- {
+ switch (this->pd_ec)
+ {
case EC_u_plus:
- pd_v1->set_ev(pd_v1->coerce(EV_double));
- if (pd_v1->ev() == NULL)
- return NULL;
- retval->u.dval = pd_v1->ev()->u.dval;
+ this->pd_v1->set_ev (this->pd_v1->coerce (EV_double));
+
+ if (this->pd_v1->ev () == 0)
+ {
+ return 0;
+ }
+
+ retval->u.dval = this->pd_v1->ev ()->u.dval;
break;
case EC_u_minus:
- pd_v1->set_ev(pd_v1->coerce(EV_double));
- if (pd_v1->ev() == NULL)
- return NULL;
- retval->u.dval = -(pd_v1->ev()->u.dval);
+ this->pd_v1->set_ev (this->pd_v1->coerce (EV_double));
+
+ if (this->pd_v1->ev () == 0)
+ {
+ return 0;
+ }
+
+ retval->u.dval = -(this->pd_v1->ev ()->u.dval);
break;
case EC_bit_neg:
- if (pd_v1->ev() == NULL)
- return NULL;
+ if (this->pd_v1->ev () == 0)
+ {
+ return 0;
+ }
- switch (pd_v1->ev ()->et)
+ switch (this->pd_v1->ev ()->et)
{
case EV_short:
retval->et = EV_short;
- retval->u.sval = ~pd_v1->ev ()->u.sval;
+ retval->u.sval = ~this->pd_v1->ev ()->u.sval;
break;
case EV_ushort:
retval->et = EV_ushort;
- retval->u.usval = ~pd_v1->ev ()->u.usval;
+ retval->u.usval = ~this->pd_v1->ev ()->u.usval;
break;
case EV_long:
retval->et = EV_long;
- retval->u.lval = ~pd_v1->ev ()->u.lval;
+ retval->u.lval = ~this->pd_v1->ev ()->u.lval;
break;
case EV_ulong:
retval->et = EV_ulong;
- retval->u.ulval = ~pd_v1->ev ()->u.ulval;
+ retval->u.ulval = ~this->pd_v1->ev ()->u.ulval;
break;
#if ! defined (ACE_LACKS_LONGLONG_T)
case EV_longlong:
retval->et = EV_longlong;
- retval->u.llval = ~pd_v1->ev ()->u.llval;
+ retval->u.llval = ~this->pd_v1->ev ()->u.llval;
break;
case EV_ulonglong:
retval->et = EV_ulonglong;
- retval->u.ullval = ~pd_v1->ev ()->u.ullval;
+ retval->u.ullval = ~this->pd_v1->ev ()->u.ullval;
break;
#endif /* ! defined (ACE_LACKS_LONGLONG_T) */
case EV_octet:
retval->et = EV_octet;
- retval->u.oval = ~pd_v1->ev ()->u.oval;
+ retval->u.oval = ~this->pd_v1->ev ()->u.oval;
break;
default:
- return NULL;
+ return 0;
}
break;
default:
- return NULL;
+ return 0;
}
return retval;
}
-/*
- * Evaluate a symbolic AST_Expression by looking up the named
- * symbol.
- */
+// Evaluate a symbolic AST_Expression by looking up the named
+// symbol.
AST_Expression::AST_ExprValue *
-AST_Expression::eval_symbol(AST_Expression::EvalKind ek)
+AST_Expression::eval_symbol (AST_Expression::EvalKind ek)
{
- UTL_Scope *s = 0;
- AST_Decl *d = 0;
- AST_Constant *c = 0;
-
- /*
- * Is there a symbol stored?
- */
- if (pd_n == NULL) {
- idl_global->err()->eval_error(this);
- return NULL;
- }
- /*
- * Get current scope for lookup
- */
- if (idl_global->scopes()->depth() > 0)
- s = idl_global->scopes()->top_non_null();
- if (s == NULL) {
- idl_global->err()->lookup_error(pd_n);
- return NULL;
- }
- /*
- * Do lookup
- */
- d = s->lookup_by_name(pd_n, I_TRUE);
- if (d == NULL) {
- idl_global->err()->lookup_error(pd_n);
- return NULL;
- }
- /*
- * Is it a constant?
- */
- if (d->node_type() != AST_Decl::NT_const &&
- d->node_type() != AST_Decl::NT_enum_val) {
- idl_global->err()->constant_expected(pd_n, d);
- return NULL;
- }
- /*
- * OK, now evaluate the constant we just got, to produce its value
- */
- c = AST_Constant::narrow_from_decl(d);
- if (c == NULL) return NULL;
- return c->constant_value()->eval_internal(ek);
+ UTL_Scope *s = 0;
+ AST_Decl *d = 0;
+ AST_Constant *c = 0;
+
+ // Is there a symbol stored?
+ if (this->pd_n == 0)
+ {
+ idl_global->err ()->eval_error (this);
+ return 0;
+ }
+
+ // Get current scope for lookup.
+ if (idl_global->scopes ()->depth() > 0)
+ {
+ s = idl_global->scopes ()->top_non_null ();
+ }
+
+ if (s == 0)
+ {
+ idl_global->err ()->lookup_error (this->pd_n);
+ return 0;
+ }
+
+ // Do lookup.
+ d = s->lookup_by_name (this->pd_n,
+ I_TRUE);
+
+ if (d == 0)
+ {
+ idl_global->err ()->lookup_error (this->pd_n);
+ return 0;
+ }
+
+ // Is it a constant?
+ if (d->node_type () != AST_Decl::NT_const
+ && d->node_type () != AST_Decl::NT_enum_val)
+ {
+ idl_global->err ()->constant_expected (this->pd_n,
+ d);
+ return 0;
+ }
+
+ // OK, now evaluate the constant we just got, to produce its value.
+ c = AST_Constant::narrow_from_decl (d);
+
+ if (c == 0)
+ {
+ return 0;
+ }
+
+ return c->constant_value ()->eval_internal (ek);
}
-/*
- * Coerce "this" to the ExprType required. Returns a copy of the
- * original ExprValue with the coercion applied, if successful, or
- * NULL if failed.
- */
+// Coerce "this" to the ExprType required. Returns a copy of the
+// original ExprValue with the coercion applied, if successful, or
+// 0 if failed.
AST_Expression::AST_ExprValue *
-AST_Expression::coerce(AST_Expression::ExprType t)
+AST_Expression::coerce (AST_Expression::ExprType t)
{
- /*
- * Is it already of the right type?
- */
- if (pd_ev != NULL && pd_ev->et == t)
- return pd_ev;
- /*
- * OK, must coerce
- *
- * First, evaluate it, then try to coerce result type
- * If already evaluated, return the result
- */
+ // Is it already of the right type?
+ if (this->pd_ev != 0 && this->pd_ev->et == t)
+ {
+ return this->pd_ev;
+ }
+
+ // OK, must coerce.
+ // First, evaluate it, then try to coerce result type.
+ // If already evaluated, return the result.
switch (t)
{
case EV_short:
- pd_ev = eval_internal (EK_short);
+ this->pd_ev = this->eval_internal (EK_short);
break;
case EV_ushort:
- pd_ev = eval_internal (EK_ushort);
+ this->pd_ev = this->eval_internal (EK_ushort);
break;
case EV_long:
- pd_ev = eval_internal (EK_long);
+ this->pd_ev = this->eval_internal (EK_long);
break;
case EV_ulong:
- pd_ev = eval_internal (EK_ulong);
+ this->pd_ev = this->eval_internal (EK_ulong);
break;
#if ! defined (ACE_LACKS_LONGLONG_T)
case EV_longlong:
- pd_ev = eval_internal (EK_longlong);
+ this->pd_ev = this->eval_internal (EK_longlong);
break;
case EV_ulonglong:
- pd_ev = eval_internal (EK_ulonglong);
+ this->pd_ev = this->eval_internal (EK_ulonglong);
break;
#endif /* ! defined (ACE_LACKS_LONGLONG_T) */
case EV_octet:
- pd_ev = eval_internal (EK_octet);
+ this->pd_ev = this->eval_internal (EK_octet);
break;
default:
- pd_ev = eval_internal (EK_const);
+ this->pd_ev = this->eval_internal (EK_const);
break;
}
- if (pd_ev == NULL)
- return NULL;
+ if (pd_ev == 0)
+ {
+ return 0;
+ }
- /*
- * Create a copy to contain coercion result
- */
+ // Create a copy to contain coercion result.
AST_ExprValue *copy = 0;
ACE_NEW_RETURN (copy,
AST_ExprValue,
0);
- copy->et = pd_ev->et;
+ copy->et = this->pd_ev->et;
- switch (pd_ev->et)
+ switch (this->pd_ev->et)
{
case EV_longdouble:
case EV_wstring:
case EV_void:
case EV_none:
case EV_any:
- return NULL;
+ return 0;
case EV_short:
- copy->u.sval = pd_ev->u.sval;
+ copy->u.sval = this->pd_ev->u.sval;
break;
case EV_ushort:
- copy->u.usval = pd_ev->u.usval;
+ copy->u.usval = this->pd_ev->u.usval;
break;
case EV_long:
- copy->u.lval = pd_ev->u.lval;
+ copy->u.lval = this->pd_ev->u.lval;
break;
case EV_ulong:
- copy->u.ulval = pd_ev->u.ulval;
+ copy->u.ulval = this->pd_ev->u.ulval;
break;
case EV_longlong:
#if ! defined (ACE_LACKS_LONGLONG_T)
- copy->u.llval = pd_ev->u.llval;
+ copy->u.llval = this->pd_ev->u.llval;
break;
#else /* ! defined (ACE_LACKS_LONGLONG_T) */
- return NULL;
+ return 0;
#endif /* ! defined (ACE_LACKS_LONGLONG_T) */
case EV_ulonglong:
#if ! defined (ACE_LACKS_LONGLONG_T)
- copy->u.ullval = pd_ev->u.ullval;
+ copy->u.ullval = this->pd_ev->u.ullval;
break;
#else /* ! defined (ACE_LACKS_LONGLONG_T) */
- return NULL;
+ return 0;
#endif /* ! defined (ACE_LACKS_LONGLONG_T) */
case EV_bool:
- copy->u.bval = pd_ev->u.bval;
+ copy->u.bval = this->pd_ev->u.bval;
break;
case EV_float:
- copy->u.fval = pd_ev->u.fval;
+ copy->u.fval = this->pd_ev->u.fval;
break;
case EV_double:
- copy->u.dval = pd_ev->u.dval;
+ copy->u.dval = this->pd_ev->u.dval;
break;
case EV_char:
- copy->u.cval = pd_ev->u.cval;
+ copy->u.cval = this->pd_ev->u.cval;
break;
case EV_wchar:
- copy->u.wcval = pd_ev->u.wcval;
+ copy->u.wcval = this->pd_ev->u.wcval;
break;
case EV_octet:
- copy->u.oval = pd_ev->u.oval;
+ copy->u.oval = this->pd_ev->u.oval;
break;
case EV_string:
- copy->u.strval = pd_ev->u.strval;
+ copy->u.strval = this->pd_ev->u.strval;
break;
}
- return coerce_value(copy, t);
+ return coerce_value (copy,
+ t);
}
-/*
- * Eval used internally
- */
+// Eval used internally.
AST_Expression::AST_ExprValue *
-AST_Expression::eval_internal(AST_Expression::EvalKind ek)
+AST_Expression::eval_internal (AST_Expression::EvalKind ek)
{
- /*
- * Already evaluated?
- */
- if (this->pd_ev != NULL)
- return eval_kind(this->pd_ev, ek);
- /*
- * OK, must evaluate operator
- */
- switch (this->pd_ec) {
- case EC_add:
- case EC_minus:
- case EC_mul:
- case EC_div:
- case EC_mod:
- this->pd_ev = eval_bin_op(ek);
- return eval_kind(this->pd_ev, ek);
- case EC_or:
- case EC_xor:
- case EC_and:
- case EC_left:
- case EC_right:
- this->pd_ev = eval_bit_op(ek);
- return eval_kind(this->pd_ev, ek);
- case EC_u_plus:
- case EC_u_minus:
- case EC_bit_neg:
- this->pd_ev = eval_un_op(ek);
- return eval_kind(this->pd_ev, ek);
- case EC_symbol:
- this->pd_ev = eval_symbol(ek);
- return eval_kind(this->pd_ev, ek);
- case EC_none:
- return NULL;
- }
- return NULL;
+ // Already evaluated?
+ if (this->pd_ev != 0)
+ {
+ return eval_kind (this->pd_ev,
+ ek);
+ }
+
+ // OK, must evaluate operator.
+ switch (this->pd_ec)
+ {
+ case EC_add:
+ case EC_minus:
+ case EC_mul:
+ case EC_div:
+ case EC_mod:
+ this->pd_ev = this->eval_bin_op (ek);
+ return eval_kind (this->pd_ev,
+ ek);
+ case EC_or:
+ case EC_xor:
+ case EC_and:
+ case EC_left:
+ case EC_right:
+ this->pd_ev = this->eval_bit_op (ek);
+ return eval_kind (this->pd_ev,
+ ek);
+ case EC_u_plus:
+ case EC_u_minus:
+ case EC_bit_neg:
+ this->pd_ev = this->eval_un_op (ek);
+ return eval_kind (this->pd_ev,
+ ek);
+ case EC_symbol:
+ this->pd_ev = this->eval_symbol (ek);
+ return eval_kind (this->pd_ev,
+ ek);
+ case EC_none:
+ return 0;
+ }
+
+ return 0;
}
-/*
- * Public operations
- */
+// Public operations.
-/*
- * Evaluate an AST_Expression, producing an AST_ExprValue or NULL
- */
+// Evaluate an AST_Expression, producing an AST_ExprValue or 0.
AST_Expression::AST_ExprValue *
-AST_Expression::eval(AST_Expression::EvalKind ek)
+AST_Expression::eval (AST_Expression::EvalKind ek)
{
- AST_Expression::AST_ExprValue *v = NULL;
-
- /*
- * Call internal evaluator which does not coerce value to
- * EvalKind-expected format
- */
- v = eval_internal(ek);
- /*
- * Then coerce according to EvalKind-expected format
- */
- return eval_kind(v, ek);
+ // Call internal evaluator which does not coerce value to
+ // EvalKind-expected format
+ AST_Expression::AST_ExprValue *v = this->eval_internal (ek);
+
+ // Then coerce according to EvalKind-expected format.
+ return eval_kind (v,
+ ek);
}
-/*
- * Evaluate "this", assigning the value to the pd_ev field.
- */
+// Evaluate "this", assigning the value to the pd_ev field.
void
-AST_Expression::evaluate(EvalKind ek)
+AST_Expression::evaluate (EvalKind ek)
{
- pd_ev = eval_internal(ek);
- pd_ev = eval_kind(pd_ev, ek);
+ this->pd_ev = this->eval_internal (ek);
+ this->pd_ev = eval_kind (pd_ev,
+ ek);
}
-/*
- * Expression equality comparison operator
- */
+// Expression equality comparison operator.
long
-AST_Expression::operator==(AST_Expression *vc)
+AST_Expression::operator== (AST_Expression *vc)
{
- if (pd_ec != vc->ec())
- return I_FALSE;
- evaluate(EK_const);
- vc->evaluate(EK_const);
- if (pd_ev == NULL || vc->ev() == NULL)
- return I_FALSE;
- if (pd_ev->et != vc->ev()->et)
- return I_FALSE;
- switch (pd_ev->et) {
- case EV_short:
- return (pd_ev->u.sval == vc->ev()->u.sval) ? I_TRUE : I_FALSE;
- case EV_ushort:
- return (pd_ev->u.usval == vc->ev()->u.usval) ? I_TRUE : I_FALSE;
- case EV_long:
- return (pd_ev->u.lval == vc->ev()->u.lval) ? I_TRUE : I_FALSE;
- case EV_ulong:
- return (pd_ev->u.ulval == vc->ev()->u.ulval) ? I_TRUE : I_FALSE;
- case EV_float:
- return (pd_ev->u.fval == vc->ev()->u.fval) ? I_TRUE : I_FALSE;
- case EV_double:
- return (pd_ev->u.dval == vc->ev()->u.dval) ? I_TRUE : I_FALSE;
- case EV_char:
- return (pd_ev->u.cval == vc->ev()->u.cval) ? I_TRUE : I_FALSE;
- case EV_wchar:
- return (pd_ev->u.wcval == vc->ev()->u.wcval) ? I_TRUE : I_FALSE;
- case EV_octet:
- return (pd_ev->u.oval == vc->ev()->u.oval) ? I_TRUE : I_FALSE;
- case EV_bool:
- return (pd_ev->u.lval == vc->ev()->u.lval) ? I_TRUE : I_FALSE;
- case EV_string:
- if (pd_ev->u.strval == NULL)
- {
- if (vc->ev()->u.strval == NULL)
- return I_TRUE;
- else
- return I_FALSE;
- }
- else if (vc->ev()->u.strval == NULL)
+ if (this->pd_ec != vc->ec ())
+ {
+ return I_FALSE;
+ }
+
+ this->evaluate (EK_const);
+ vc->evaluate (EK_const);
+
+ if (pd_ev == 0 || vc->ev() == 0)
+ {
return I_FALSE;
- else
- return (pd_ev->u.strval == vc->ev()->u.strval) ? I_TRUE : I_FALSE;
- case EV_longlong:
+ }
+
+ if (this->pd_ev->et != vc->ev ()->et)
+ {
+ return I_FALSE;
+ }
+
+ switch (pd_ev->et)
+ {
+ case EV_short:
+ return this->pd_ev->u.sval == vc->ev ()->u.sval ? I_TRUE : I_FALSE;
+ case EV_ushort:
+ return this->pd_ev->u.usval == vc->ev ()->u.usval ? I_TRUE : I_FALSE;
+ case EV_long:
+ return this->pd_ev->u.lval == vc->ev ()->u.lval ? I_TRUE : I_FALSE;
+ case EV_ulong:
+ return this->pd_ev->u.ulval == vc->ev()->u.ulval ? I_TRUE : I_FALSE;
+ case EV_float:
+ return this->pd_ev->u.fval == vc->ev ()->u.fval ? I_TRUE : I_FALSE;
+ case EV_double:
+ return this->pd_ev->u.dval == vc->ev ()->u.dval ? I_TRUE : I_FALSE;
+ case EV_char:
+ return this->pd_ev->u.cval == vc->ev ()->u.cval ? I_TRUE : I_FALSE;
+ case EV_wchar:
+ return this->pd_ev->u.wcval == vc->ev ()->u.wcval ? I_TRUE : I_FALSE;
+ case EV_octet:
+ return this->pd_ev->u.oval == vc->ev ()->u.oval ? I_TRUE : I_FALSE;
+ case EV_bool:
+ return this->pd_ev->u.lval == vc->ev ()->u.lval ? I_TRUE : I_FALSE;
+ case EV_string:
+ if (this->pd_ev->u.strval == 0)
+ {
+ if (vc->ev ()->u.strval == 0)
+ {
+ return I_TRUE;
+ }
+ else
+ {
+ return I_FALSE;
+ }
+ }
+ else if (vc->ev ()->u.strval == 0)
+ {
+ return I_FALSE;
+ }
+ else
+ {
+ return this->pd_ev->u.strval == vc->ev ()->u.strval
+ ? I_TRUE
+ : I_FALSE;
+ }
+
+ case EV_longlong:
#if ! defined (ACE_LACKS_LONGLONG_T)
- return (pd_ev->u.llval == vc->ev()->u.llval) ? I_TRUE : I_FALSE;
+ return pd_ev->u.llval == vc->ev ()->u.llval ? I_TRUE : I_FALSE;
#else /* ! defined (ACE_LACKS_LONGLONG_T) */
- return I_FALSE;
+ return I_FALSE;
#endif /* ! defined (ACE_LACKS_LONGLONG_T) */
- case EV_ulonglong:
+ case EV_ulonglong:
#if ! defined (ACE_LACKS_LONGLONG_T)
- return (pd_ev->u.ullval == vc->ev()->u.ullval) ? I_TRUE : I_FALSE;
+ return pd_ev->u.ullval == vc->ev()->u.ullval ? I_TRUE : I_FALSE;
#else /* ! defined (ACE_LACKS_LONGLONG_T) */
- return I_FALSE;
+ return I_FALSE;
#endif /* ! defined (ACE_LACKS_LONGLONG_T) */
- case EV_longdouble:
- case EV_wstring:
- case EV_any:
- case EV_void:
- case EV_none:
- return I_FALSE;
- }
+ case EV_longdouble:
+ case EV_wstring:
+ case EV_any:
+ case EV_void:
+ case EV_none:
+ return I_FALSE;
+ }
+
return I_FALSE;
}
long
-AST_Expression::compare(AST_Expression *vc)
+AST_Expression::compare (AST_Expression *vc)
{
- if (pd_ec != vc->ec())
- return I_FALSE;
- evaluate(EK_const);
- vc->evaluate(EK_const);
- if (pd_ev == NULL || vc->ev() == NULL)
- return I_FALSE;
- if (pd_ev->et != vc->ev()->et)
- return I_FALSE;
- switch (pd_ev->et) {
- case EV_short:
- return (pd_ev->u.sval == vc->ev()->u.sval) ? I_TRUE : I_FALSE;
- case EV_ushort:
- return (pd_ev->u.usval == vc->ev()->u.usval) ? I_TRUE : I_FALSE;
- case EV_long:
- return (pd_ev->u.lval == vc->ev()->u.lval) ? I_TRUE : I_FALSE;
- case EV_ulong:
- return (pd_ev->u.ulval == vc->ev()->u.ulval) ? I_TRUE : I_FALSE;
- case EV_float:
- return (pd_ev->u.fval == vc->ev()->u.fval) ? I_TRUE : I_FALSE;
- case EV_double:
- return (pd_ev->u.dval == vc->ev()->u.dval) ? I_TRUE : I_FALSE;
- case EV_char:
- return (pd_ev->u.cval == vc->ev()->u.cval) ? I_TRUE : I_FALSE;
- case EV_wchar:
- return (pd_ev->u.wcval == vc->ev()->u.wcval) ? I_TRUE : I_FALSE;
- case EV_octet:
- return (pd_ev->u.oval == vc->ev()->u.oval) ? I_TRUE : I_FALSE;
- case EV_bool:
- return (pd_ev->u.lval == vc->ev()->u.lval) ? I_TRUE : I_FALSE;
- case EV_string:
- if (pd_ev->u.strval == NULL) {
- if (vc->ev()->u.strval == NULL)
- return I_TRUE;
- else
- return I_FALSE;
- } else if (vc->ev()->u.strval == NULL)
+ if (this->pd_ec != vc->ec ())
+ {
+ return I_FALSE;
+ }
+
+ this->evaluate (EK_const);
+ vc->evaluate (EK_const);
+
+ if (this->pd_ev == 0 || vc->ev () == 0)
+ {
+ return I_FALSE;
+ }
+
+ if (this->pd_ev->et != vc->ev ()->et)
+ {
return I_FALSE;
- else
- return (pd_ev->u.strval == vc->ev()->u.strval) ? I_TRUE : I_FALSE;
- case EV_longlong:
+ }
+
+ switch (this->pd_ev->et)
+ {
+ case EV_short:
+ return this->pd_ev->u.sval == vc->ev ()->u.sval ? I_TRUE : I_FALSE;
+ case EV_ushort:
+ return this->pd_ev->u.usval == vc->ev ()->u.usval ? I_TRUE : I_FALSE;
+ case EV_long:
+ return this->pd_ev->u.lval == vc->ev ()->u.lval ? I_TRUE : I_FALSE;
+ case EV_ulong:
+ return this->pd_ev->u.ulval == vc->ev ()->u.ulval ? I_TRUE : I_FALSE;
+ case EV_float:
+ return this->pd_ev->u.fval == vc->ev ()->u.fval ? I_TRUE : I_FALSE;
+ case EV_double:
+ return this->pd_ev->u.dval == vc->ev ()->u.dval ? I_TRUE : I_FALSE;
+ case EV_char:
+ return this->pd_ev->u.cval == vc->ev ()->u.cval ? I_TRUE : I_FALSE;
+ case EV_wchar:
+ return this->pd_ev->u.wcval == vc->ev ()->u.wcval ? I_TRUE : I_FALSE;
+ case EV_octet:
+ return this->pd_ev->u.oval == vc->ev ()->u.oval ? I_TRUE : I_FALSE;
+ case EV_bool:
+ return this->pd_ev->u.lval == vc->ev ()->u.lval ? I_TRUE : I_FALSE;
+ case EV_string:
+ if (this->pd_ev->u.strval == 0)
+ {
+ if (vc->ev ()->u.strval == 0)
+ {
+ return I_TRUE;
+ }
+ else
+ {
+ return I_FALSE;
+ }
+ }
+ else if (vc->ev ()->u.strval == 0)
+ {
+ return I_FALSE;
+ }
+ else
+ {
+ return this->pd_ev->u.strval == vc->ev ()->u.strval ? I_TRUE : I_FALSE;
+ }
+
+ case EV_longlong:
#if ! defined (ACE_LACKS_LONGLONG_T)
- return (pd_ev->u.llval == vc->ev()->u.llval) ? I_TRUE : I_FALSE;
+ return this->pd_ev->u.llval == vc->ev ()->u.llval ? I_TRUE : I_FALSE;
#else /* ! defined (ACE_LACKS_LONGLONG_T) */
- return I_FALSE;
+ return I_FALSE;
#endif /* ! defined (ACE_LACKS_LONGLONG_T) */
- case EV_ulonglong:
+ case EV_ulonglong:
#if ! defined (ACE_LACKS_LONGLONG_T)
- return (pd_ev->u.ullval == vc->ev()->u.ullval) ? I_TRUE : I_FALSE;
+ return this->pd_ev->u.ullval == vc->ev ()->u.ullval ? I_TRUE : I_FALSE;
#else /* ! defined (ACE_LACKS_LONGLONG_T) */
- return I_FALSE;
+ return I_FALSE;
#endif /* ! defined (ACE_LACKS_LONGLONG_T) */
- case EV_longdouble:
- case EV_wstring:
- case EV_any:
- case EV_void:
- case EV_none:
- return I_FALSE;
- }
+ case EV_longdouble:
+ case EV_wstring:
+ case EV_any:
+ case EV_void:
+ case EV_none:
+ return I_FALSE;
+ }
+
return I_FALSE;
}
-/*
- * Redefinition of inherited virtual operations
- */
-
-/*
- * Helper functions for expression dumpers
- */
+// Helper functions for expression dumpers.
-/*
- * Dump this binary AST_Expression node to the ostream o
- */
+// Dump this binary AST_Expression node to the ostream o.
static void
-dump_binary_expr(ostream &o, const char *s, AST_Expression *n1, AST_Expression *n2)
+dump_binary_expr (ostream &o,
+ const char *s,
+ AST_Expression *n1,
+ AST_Expression *n2)
{
- if (n1 != NULL) n1->dump(o);
+ if (n1 != 0)
+ {
+ n1->dump (o);
+ }
+
o << " " << s << " ";
- if (n2 != NULL) n2->dump(o);
+
+ if (n2 != 0)
+ {
+ n2->dump (o);
+ }
}
-/*
- * Dump this unary AST_Expression node to the ostream o
- */
+// Dump this unary AST_Expression node to the ostream o.
static void
-dump_unary_expr(ostream &o, const char *s, AST_Expression *e)
+dump_unary_expr (ostream &o,
+ const char *s,
+ AST_Expression *e)
{
o << s;
- e->dump(o);
+ e->dump (o);
}
-/*
- * Dump the supplied AST_ExprValue to the ostream o
- */
+// Dump the supplied AST_ExprValue to the ostream o.
static void
-dump_expr_val(ostream &o, AST_Expression::AST_ExprValue *ev)
+dump_expr_val (ostream &o,
+ AST_Expression::AST_ExprValue *ev)
{
- switch (ev->et) {
- case AST_Expression::EV_short:
- o << ev->u.sval;
- break;
- case AST_Expression::EV_ushort:
- o << ev->u.usval;
- break;
- case AST_Expression::EV_long:
- o << ev->u.lval;
- break;
- case AST_Expression::EV_ulong:
- o << ev->u.ulval;
- break;
- case AST_Expression::EV_float:
- o << ev->u.fval;
- break;
- case AST_Expression::EV_double:
- o << ev->u.dval;
- break;
- case AST_Expression::EV_char:
- o << ev->u.cval;
- break;
- case AST_Expression::EV_wchar:
- o << ev->u.wcval;
- break;
- case AST_Expression::EV_octet:
- o << ev->u.oval;
- break;
- case AST_Expression::EV_bool:
- o << (ev->u.bval == I_TRUE ? "TRUE" : "FALSE");
- break;
- case AST_Expression::EV_string:
- if (ev->u.strval != NULL)
- ev->u.strval->dump(o);
- case AST_Expression::EV_longlong:
+ switch (ev->et)
+ {
+ case AST_Expression::EV_short:
+ o << ev->u.sval;
+ break;
+ case AST_Expression::EV_ushort:
+ o << ev->u.usval;
+ break;
+ case AST_Expression::EV_long:
+ o << ev->u.lval;
+ break;
+ case AST_Expression::EV_ulong:
+ o << ev->u.ulval;
+ break;
+ case AST_Expression::EV_float:
+ o << ev->u.fval;
+ break;
+ case AST_Expression::EV_double:
+ o << ev->u.dval;
+ break;
+ case AST_Expression::EV_char:
+ o << ev->u.cval;
+ break;
+ case AST_Expression::EV_wchar:
+ o << ev->u.wcval;
+ break;
+ case AST_Expression::EV_octet:
+ o << ev->u.oval;
+ break;
+ case AST_Expression::EV_bool:
+ o << (ev->u.bval == I_TRUE ? "TRUE" : "FALSE");
+ break;
+ case AST_Expression::EV_string:
+ if (ev->u.strval != NULL)
+ ev->u.strval->dump(o);
+ case AST_Expression::EV_longlong:
#if ! defined (ACE_LACKS_LONGLONG_T)
-// o << ev->u.llval;
+// o << ev->u.llval;
#endif /* ! defined (ACE_LACKS_LONGLONG_T) */
break;
case AST_Expression::EV_ulonglong:
#if ! defined (ACE_LACKS_LONGLONG_T)
-// o << ev->u.ullval;
+// o << ev->u.ullval;
#endif /* ! defined (ACE_LACKS_LONGLONG_T) */
- break;
- case AST_Expression::EV_longdouble:
- case AST_Expression::EV_wstring:
- case AST_Expression::EV_any:
- case AST_Expression::EV_none:
- case AST_Expression::EV_void:
- break;
- }
+ break;
+ case AST_Expression::EV_longdouble:
+ case AST_Expression::EV_wstring:
+ case AST_Expression::EV_any:
+ case AST_Expression::EV_none:
+ case AST_Expression::EV_void:
+ break;
+ }
}
-/*
- * Dump an AST_Expression node to the ostream o
- */
+// Dump an AST_Expression node to the ostream o.
void
-AST_Expression::dump(ostream &o)
+AST_Expression::dump (ostream &o)
{
- /*
- * See if it was a constant or was evaluated already
- */
- if (pd_ev != NULL) {
- dump_expr_val(o, pd_ev);
- return;
- }
- /*
- * OK, must print out an expression
- */
- switch (pd_ec) {
- /*
- * Binary expressions:
- */
- case EC_add:
- dump_binary_expr(o, "+", pd_v1, pd_v2);
- break;
- case EC_minus:
- dump_binary_expr(o, "-", pd_v1, pd_v2);
- break;
- case EC_mul:
- dump_binary_expr(o, "*", pd_v1, pd_v2);
- break;
- case EC_div:
- dump_binary_expr(o, "/", pd_v1, pd_v2);
- break;
- case EC_mod:
- dump_binary_expr(o, "%", pd_v1, pd_v2);
- break;
- case EC_or:
- dump_binary_expr(o, "|", pd_v1, pd_v2);
- break;
- case EC_xor:
- dump_binary_expr(o, "^", pd_v1, pd_v2);
- break;
- case EC_and:
- dump_binary_expr(o, "&", pd_v1, pd_v2);
- break;
- case EC_left:
- dump_binary_expr(o, "<<", pd_v1, pd_v2);
- break;
- case EC_right:
- dump_binary_expr(o, ">>", pd_v1, pd_v2);
- break;
- /*
- * Unary expressions:
- */
- case EC_u_plus:
- dump_unary_expr(o, "+", pd_v1);
- break;
- case EC_u_minus:
- dump_unary_expr(o, "-", pd_v1);
- break;
- case EC_bit_neg:
- dump_unary_expr(o, "~", pd_v1);
- break;
- /*
- * Unevaluated symbol
- */
- case EC_symbol:
- pd_n->dump(o);
- break;
- case EC_none:
- break;
- default:
- o << ACE_TEXT ("unsupported dump mode for expression with ec == ")
- << (int) pd_ec ;
- break;
- }
+ // See if it was a constant or was evaluated already.
+ if (this->pd_ev != 0)
+ {
+ dump_expr_val (o,
+ this->pd_ev);
+ return;
+ }
+
+ // OK, must print out an expression.
+ switch (this->pd_ec)
+ {
+ // Binary expressions:
+ case EC_add:
+ dump_binary_expr (o,
+ "+",
+ this->pd_v1,
+ this->pd_v2);
+ break;
+ case EC_minus:
+ dump_binary_expr (o,
+ "-",
+ this->pd_v1,
+ this->pd_v2);
+ break;
+ case EC_mul:
+ dump_binary_expr (o,
+ "*",
+ this->pd_v1,
+ this->pd_v2);
+ break;
+ case EC_div:
+ dump_binary_expr (o,
+ "/",
+ this->pd_v1,
+ this->pd_v2);
+ break;
+ case EC_mod:
+ dump_binary_expr (o,
+ "%",
+ this->pd_v1,
+ this->pd_v2);
+ break;
+ case EC_or:
+ dump_binary_expr (o,
+ "|",
+ this->pd_v1,
+ this->pd_v2);
+ break;
+ case EC_xor:
+ dump_binary_expr (o,
+ "^",
+ this->pd_v1,
+ this->pd_v2);
+ break;
+ case EC_and:
+ dump_binary_expr (o,
+ "&",
+ this->pd_v1,
+ this->pd_v2);
+ break;
+ case EC_left:
+ dump_binary_expr (o,
+ "<<",
+ this->pd_v1,
+ this->pd_v2);
+ break;
+ case EC_right:
+ dump_binary_expr (o,
+ ">>",
+ this->pd_v1,
+ this->pd_v2);
+ break;
+ // Unary expressions.
+ case EC_u_plus:
+ dump_unary_expr (o,
+ "+",
+ this->pd_v1);
+ break;
+ case EC_u_minus:
+ dump_unary_expr (o,
+ "-",
+ this->pd_v1);
+ break;
+ case EC_bit_neg:
+ dump_unary_expr (o,
+ "~",
+ this->pd_v1);
+ break;
+ // Unevaluated symbol.
+ case EC_symbol:
+ this->pd_n->dump (o);
+ break;
+ case EC_none:
+ break;
+ default:
+ o << ACE_TEXT ("unsupported dump mode for expression with ec == ")
+ << (int) this->pd_ec ;
+ break;
+ }
}
-/*
- * Data accessors
- */
+// Data accessors.
UTL_Scope *
-AST_Expression::defined_in()
+AST_Expression::defined_in (void)
{
- return pd_defined_in;
+ return this->pd_defined_in;
}
void
-AST_Expression::set_defined_in(UTL_Scope *d)
+AST_Expression::set_defined_in (UTL_Scope *d)
{
- pd_defined_in = d;
+ this->pd_defined_in = d;
}
long
-AST_Expression::line()
+AST_Expression::line (void)
{
- return pd_line;
+ return this->pd_line;
}
void
-AST_Expression::set_line(long l)
+AST_Expression::set_line (long l)
{
- pd_line = l;
+ this->pd_line = l;
}
UTL_String *
-AST_Expression::file_name()
+AST_Expression::file_name (void)
{
- return pd_file_name;
+ return this->pd_file_name;
}
void
-AST_Expression::set_file_name(UTL_String *f)
+AST_Expression::set_file_name (UTL_String *f)
{
- pd_file_name = f;
+ this->pd_file_name = f;
}
AST_Expression::ExprComb
-AST_Expression::ec()
+AST_Expression::ec (void)
{
- return pd_ec;
+ return this->pd_ec;
}
void
-AST_Expression::set_ec(AST_Expression::ExprComb new_ec)
+AST_Expression::set_ec (AST_Expression::ExprComb new_ec)
{
- pd_ec = new_ec;
+ this->pd_ec = new_ec;
}
AST_Expression::AST_ExprValue *
-AST_Expression::ev()
+AST_Expression::ev (void)
{
- return pd_ev;
+ return this->pd_ev;
}
void
-AST_Expression::set_ev(AST_Expression::AST_ExprValue *new_ev)
+AST_Expression::set_ev (AST_Expression::AST_ExprValue *new_ev)
{
- pd_ev = new_ev;
+ this->pd_ev = new_ev;
}
AST_Expression *
-AST_Expression::v1()
+AST_Expression::v1 (void)
{
- return pd_v1;
+ return this->pd_v1;
}
void
-AST_Expression::set_v1(AST_Expression *e)
+AST_Expression::set_v1 (AST_Expression *e)
{
-
- pd_v1 = e;
+ this->pd_v1 = e;
}
AST_Expression *
-AST_Expression::v2()
+AST_Expression::v2 (void)
{
- return pd_v2;
+ return this->pd_v2;
}
void
-AST_Expression::set_v2(AST_Expression *e)
+AST_Expression::set_v2 (AST_Expression *e)
{
- pd_v2 = e;
+ this->pd_v2 = e;
}
UTL_ScopedName *
-AST_Expression::n()
+AST_Expression::n (void)
{
- return pd_n;
+ return this->pd_n;
}
void
-AST_Expression::set_n(UTL_ScopedName *new_n)
+AST_Expression::set_n (UTL_ScopedName *new_n)
{
- pd_n = new_n;
+ this->pd_n = new_n;
}