diff -r 8e81d7db54be -r c062ff18d04f absyntax/absyntax.hh --- a/absyntax/absyntax.hh Thu Jul 19 13:42:05 2012 +0100 +++ b/absyntax/absyntax.hh Fri Jul 20 15:50:49 2012 +0100 @@ -116,35 +116,25 @@ * For this reason, we have one entry for each possible type, with some expressions * having more than one entry filled in! */ - typedef enum { cs_undefined, /* not defined --> const_value is not valid! */ + typedef enum { cs_undefined, /* not defined/not yet evaluated --> const_value is not valid! */ + cs_non_const, /* we have deternmined that expression is not a const value --> const_value is not valid! */ cs_const_value, /* const value is valid */ cs_overflow /* result produced overflow or underflow --> const_value is not valid! */ } const_status_t; + typedef struct {const_status_t status; real64_t value; } const_value_real64_t; + typedef struct {const_status_t status; int64_t value; } const_value_int64_t; + typedef struct {const_status_t status; uint64_t value; } const_value_uint64_t; + typedef struct {const_status_t status; bool value; } const_value_bool_t; + typedef struct { - const_status_t status; - real64_t value; - } const_value_real64_t; - const_value_real64_t *const_value_real64; /* when NULL --> UNDEFINED */ + const_value_real64_t _real64; /* status is initialised to UNDEFINED */ + const_value_int64_t _int64; /* status is initialised to UNDEFINED */ + const_value_uint64_t _uint64; /* status is initialised to UNDEFINED */ + const_value_bool_t _bool; /* status is initialised to UNDEFINED */ + } const_value_t; + const_value_t const_value; - typedef struct { - const_status_t status; - int64_t value; - } const_value_int64_t; - const_value_int64_t *const_value_int64; /* when NULL --> UNDEFINED */ - - typedef struct { - const_status_t status; - uint64_t value; - } const_value_uint64_t; - const_value_uint64_t *const_value_uint64; /* when NULL --> UNDEFINED */ - - typedef struct { - const_status_t status; - bool value; - } const_value_bool_t; - const_value_bool_t *const_value_bool; /* when NULL --> UNDEFINED */ - public: /* default constructor */