24 #ifndef PPL_Concrete_Expression_defs_hh
25 #define PPL_Concrete_Expression_defs_hh 1
106 bool bounded_integer:1;
107 unsigned int bounded_integer_type_width:23;
108 unsigned int bounded_integer_type_representation:2;
109 unsigned int bounded_integer_type_overflow:2;
110 unsigned int floating_point_format:4;
121 template <
typename Target>
131 template <
template <
typename T>
class Derived>
138 template <
template <
typename T>
class Derived>
139 Derived<Target>*
as();
145 template <
template <
typename T>
class Derived>
146 const Derived<Target>*
as()
const;
151 template <
typename Target>
165 template <
typename Target>
176 template <
typename Target>
183 template <
typename Target>
188 template <
typename Target>
193 template <
typename Target>
201 #endif // !defined(PPL_Concrete_Expression_defs_hh)
const Concrete_Expression< Target > * right_hand_side() const
Returns the right-hand side of *this.
int Concrete_Expression_BOP
Encodes a binary operator of concrete expressions.
const Concrete_Expression< Target > * argument() const
Returns the casted expression.
bool is_bounded_integer() const
Returns true if and only if *this is a bounded integer type.
Base class for binary operator applied to two concrete expressions.
bool is() const
Tests if *this has the same kind as Derived.
Bounded_Integer_Type_Overflow bounded_integer_type_overflow() const
Returns the overflow behavior of the bounded integer type encoded by *this.
Concrete_Expression_BOP binary_operator() const
Returns a constant identifying the operator of *this.
Concrete_Expression_Type(Implementation implementation)
Constructor from implementation.
Base class for cast operator concrete expressions.
The type of a concrete expression.
Implementation impl
The encoding of *this.
const Concrete_Expression< Target > * argument() const
Returns the argument *this.
Base class for integer constant concrete expressions.
const Concrete_Expression< Target > * left_hand_side() const
Returns the left-hand side of *this.
Bounded_Integer_Type_Width bounded_integer_type_width() const
Returns the width in bits of the bounded integer type encoded by *this.
Base class for floating-point constant concrete expression.
Bounded_Integer_Type_Overflow
Bounded_Integer_Type_Representation bounded_integer_type_representation() const
Returns the representation of the bounded integer type encoded by *this.
Base class for all concrete expressions.
Concrete_Expression_Type type() const
Returns the type of \* this.
Bounded_Integer_Type_Width
static Concrete_Expression_Type bounded_integer(Bounded_Integer_Type_Width width, Bounded_Integer_Type_Representation representation, Bounded_Integer_Type_Overflow overflow)
Returns the bounded integer type corresponding to width, representation and overflow.
Concrete_Expression_Kind kind() const
Returns the kind of \* this.
bool is_floating_point() const
Returns true if and only if *this is a floating point type.
int Concrete_Expression_Kind
Encodes the kind of concrete expression.
The base class of all concrete expressions.
static Concrete_Expression_Type floating_point(Floating_Point_Format format)
Returns the floating point type corresponding to format.
The entire library is confined to this namespace.
Derived< Target > * as()
Returns a pointer to *this converted to type Derived*.
A 32-bit word encoding the type.
Base class for references to some approximable.
bool OK() const
Checks if all the invariants are satisfied.
Floating_Point_Format floating_point_format() const
Returns the format of the floating point type encoded by *this.
Concrete_Expression_UOP unary_operator() const
Returns a constant identifying the operator of *this.
Base class for unary operator applied to one concrete expression.
Bounded_Integer_Type_Representation
int Concrete_Expression_UOP
Encodes a unary operator of concrete expressions.