typedef enum tbool_t {
tbool_false=0,
tbool_true=1,
tbool_top=2, /* don't know */
} tbool_t;
static inline tbool_t tbool_of_bool(bool a);
static inline tbool_t tbool_or(tbool_t a, tbool_t b);
static inline tbool_t tbool_and(tbool_t a, tbool_t b);
Booleans with a third unknown value.
typedef struct ap_membuf_t {
void* ptr;
size_t size;
} ap_membuf_t;
For serialization.
APRON managers (opaque type).
For identifying functions in exceptions, and when reading/setting options attached to them.
typedef enum ap_funid_t {
AP_FUNID_UNKNOWN,
AP_FUNID_COPY,
AP_FUNID_FREE,
AP_FUNID_ASIZE, /* For avoiding name conflict with AP_FUNID_SIZE */
AP_FUNID_MINIMIZE,
AP_FUNID_CANONICALIZE,
AP_FUNID_HASH,
AP_FUNID_APPROXIMATE,
AP_FUNID_FPRINT,
AP_FUNID_FPRINTDIFF,
AP_FUNID_FDUMP,
AP_FUNID_SERIALIZE_RAW,
AP_FUNID_DESERIALIZE_RAW,
AP_FUNID_BOTTOM,
AP_FUNID_TOP,
AP_FUNID_OF_BOX,
AP_FUNID_DIMENSION,
AP_FUNID_IS_BOTTOM,
AP_FUNID_IS_TOP,
AP_FUNID_IS_LEQ,
AP_FUNID_IS_EQ,
AP_FUNID_IS_DIMENSION_UNCONSTRAINED,
AP_FUNID_SAT_INTERVAL,
AP_FUNID_SAT_LINCONS,
AP_FUNID_SAT_TCONS,
AP_FUNID_BOUND_DIMENSION,
AP_FUNID_BOUND_LINEXPR,
AP_FUNID_BOUND_TEXPR,
AP_FUNID_TO_BOX,
AP_FUNID_TO_LINCONS_ARRAY,
AP_FUNID_TO_TCONS_ARRAY,
AP_FUNID_TO_GENERATOR_ARRAY,
AP_FUNID_MEET,
AP_FUNID_MEET_ARRAY,
AP_FUNID_MEET_LINCONS_ARRAY,
AP_FUNID_MEET_TCONS_ARRAY,
AP_FUNID_JOIN,
AP_FUNID_JOIN_ARRAY,
AP_FUNID_ADD_RAY_ARRAY,
AP_FUNID_ASSIGN_LINEXPR_ARRAY,
AP_FUNID_SUBSTITUTE_LINEXPR_ARRAY,
AP_FUNID_ASSIGN_TEXPR_ARRAY,
AP_FUNID_SUBSTITUTE_TEXPR_ARRAY,
AP_FUNID_ADD_DIMENSIONS,
AP_FUNID_REMOVE_DIMENSIONS,
AP_FUNID_PERMUTE_DIMENSIONS,
AP_FUNID_FORGET_ARRAY,
AP_FUNID_EXPAND,
AP_FUNID_FOLD,
AP_FUNID_WIDENING,
AP_FUNID_CLOSURE,
AP_FUNID_SIZE,
AP_FUNID_CHANGE_ENVIRONMENT,
AP_FUNID_RENAME_ARRAY,
AP_FUNID_SIZE2
} ap_funid_t;
extern const char* ap_name_of_funid[AP_FUNID_SIZE2];
/* give the name of a function identifier */
Exceptions and exception logs (chained in a list, the first one being the last one).
typedef enum ap_exc_t {
AP_EXC_NONE, /* no exception detected */
AP_EXC_TIMEOUT, /* timeout detected */
AP_EXC_OUT_OF_SPACE, /* out of space detected */
AP_EXC_OVERFLOW, /* magnitude overflow detected */
AP_EXC_INVALID_ARGUMENT, /* invalid arguments */
AP_EXC_NOT_IMPLEMENTED, /* not implemented */
AP_EXC_SIZE
} ap_exc_t;
extern const char* ap_name_of_exception[AP_EXC_SIZE];
typedef struct ap_exclog_t {
ap_exc_t exn;
ap_funid_t funid;
char* msg; /* dynamically allocated */
struct ap_exclog_t* tail;
} ap_exclog_t;
Options attached to functions.
typedef struct ap_funopt_t {
int algorithm;
/* Algorithm selection:
- 0 is default algorithm;
- MAX_INT is most accurate available;
- MIN_INT is most efficient available;
- otherwise, no accuracy or speed meaning
*/
size_t timeout; /* unit !? */
/* Above the given computation time, the function may abort with the
exception flag flag_time_out on.
*/
size_t max_object_size; /* in abstract object size unit. */
/* If during the computation, the size of some object reach this limit, the
function may abort with the exception flag flag_out_of_space on.
*/
bool flag_exact_wanted;
/* return information about exactitude if possible
*/
bool flag_best_wanted;
/* return information about best correct approximation if possible
*/
} ap_funopt_t;