APRONXX 0.9.15
/home/mine/apron/apronxx/apxx_manager.hh
Go to the documentation of this file.
1/* -*- C++ -*-
2 * apxx_manager.hh
3 *
4 * APRON Library / C++ class wrappers
5 *
6 * Copyright (C) Antoine Mine' 2007
7 *
8 */
9/* This file is part of the APRON Library, released under LGPL license
10 with an exception allowing the redistribution of statically linked
11 executables.
12
13 Please read the COPYING file packaged in the distribution.
14*/
15
16#ifndef __APXX_MANAGER_HH
17#define __APXX_MANAGER_HH
18
19#include <string>
20
21#include "ap_manager.h"
22#include "ap_abstract0.h"
23#include "ap_abstract1.h"
25#include "apxx_tcons0.hh"
26#include "apxx_generator0.hh"
27
28#include "box.h"
29#include "pk.h"
30#include "oct.h"
31
32namespace apron {
33
34
35/* =============== */
36/* tbool */
37/* =============== */
38
41
42 * or \c tbool_top (don't know).
43 */
44struct tbool {
45
46public:
48 tbool_t x;
49
51 tbool(bool a);
54 tbool(tbool_t a);
55
56
57 operator tbool_t();
58
60 operator bool();
61
63 friend tbool operator|| (tbool a, tbool b);
64
66 friend tbool operator&& (tbool a, tbool b);
67
69 friend tbool operator! (tbool a);
70
72 friend std::ostream& operator<<(std::ostream& os, tbool x);
73
74
75};
76
77
78/* =============== */
79/* exceptions */
80/* =============== */
81
82
83//! Exception raised when a timeout occurs.
84class timeout : public std::logic_error {
85public:
88 timeout(const std::string& x) : logic_error(x) {}
89};
90
91
93class not_implemented : public std::logic_error {
94public:
97 not_implemented(const std::string& x) : logic_error(x) {}
98};
99
100
101class abstract0;
102class abstract1;
103
104
105/* =============== */
106/* manager */
107/* =============== */
108
137class manager : public use_malloc {
139protected:
140
141 ap_manager_t* m;
142
143 //! Internal use only (by subclasses). Initialise from a ap_manager_t* and take ownership (no copy).
144 manager(ap_manager_t* m);
145
146 friend class abstract0;
147 friend class abstract1;
148
149public:
150
151 //! Internal use only. Translates APRON exceptions to C++ ones.
152 static void raise(ap_manager_t* m, const char* msg, ap_abstract0_t* a = NULL);
153
155 static void raise(ap_manager_t* m, const char* msg, ap_abstract1_t a);
158 void raise(const char* msg, ap_abstract0_t* a = NULL);
159
160
161 void raise(const char* msg, ap_abstract1_t a);
162
164 bool exception_raised();
165
169
173
174 */
175 manager(const manager& x);
176
178
182
183
184 virtual ~manager();
185
187
188
190
195
196 */
197 manager& operator= (const manager& x);
198
200
204
205
206 std::string get_library() const;
209 std::string get_version() const;
210
211
213 * \throw std::out_of_range if funid is no between \c AP_FUNID_COPY and \c AP_FUNID_CLOSURE (inclusive).
214 */
215 ap_funopt_t& get_funopt(ap_funid_t funid);
216
217 /*! \brief Returns a (modifiable) reference to the user's preferred scalar type.
218 *
219 * \return the scalar type can be either \c AP_SCALAR_DOUBLE, \c AP_SCALAR_MPQ, or \c AP_SCALAR_MPFR.
220 */
221 ap_scalar_discr_t& get_scalar_discr();
222
223 //! Returns the 'is exact' flag associated to the last computed abstract function.
224 bool get_flag_exact();
225
227 bool get_flag_best();
228
230
231
234
246 static void fpu_init();
247
249
250
253
255 friend std::ostream& operator<< (std::ostream& os, const manager& s);
256
258
259
260 /* C-level compatibility */
261 /* ===================== */
262
265
267 ap_manager_t* get_ap_manager_t();
268 const ap_manager_t* get_ap_manager_t() const;
269
271
272};
273
274#include "apxx_manager_inline.hh"
275
276}
277
278#endif /* __APXX_MANAGER_HH */
ap_funopt_t & get_funopt(ap_funid_t funid)
Returns a (modifiable) reference to the options associated to some abstract function.
Definition apxx_manager.hh:184
bool exception_raised()
Internal use only. Whether APRON has raised an exception.
Definition apxx_manager.hh:83
bool get_flag_exact()
Returns the 'is exact' flag associated to the last computed abstract function.
Definition apxx_manager.hh:196
friend class abstract0
Definition apxx_manager.hh:146
ap_manager_t * get_ap_manager_t()
Returns a pointer to the internal APRON object stored in *this.
Definition apxx_manager.hh:207
static void fpu_init()
Sets the FPU rounding-mode towards +oo.
Definition apxx_manager.hh:217
ap_scalar_discr_t & get_scalar_discr()
Returns a (modifiable) reference to the user's preferred scalar type.
Definition apxx_manager.hh:191
bool get_flag_best()
Returns the 'is best' flag associated to the last computed abstract function.
Definition apxx_manager.hh:201
std::string get_version() const
Returns the version name of the library the manager comes from.
Definition apxx_manager.hh:179
std::string get_library() const
Returns the name of the library the manager comes from.
Definition apxx_manager.hh:174
friend class abstract1
Definition apxx_manager.hh:147
virtual ~manager()
Decrements the reference counter and, when reaching 0, frees the manager.
Definition apxx_manager.hh:161
ap_manager_t * m
Pointer managed by APRON.
Definition apxx_manager.hh:141
manager(ap_manager_t *m)
Internal use only (by subclasses). Initialise from a ap_manager_t* and take ownership (no copy).
Definition apxx_manager.hh:75
friend std::ostream & operator<<(std::ostream &os, const manager &s)
Prints the library name and version.
Definition apxx_manager.hh:223
static void raise(ap_manager_t *m, const char *msg, ap_abstract0_t *a=NULL)
Internal use only. Translates APRON exceptions to C++ ones.
Definition apxx_manager.hh:89
manager & operator=(const manager &x)
Assignment (actually performs some reference counter management).
Definition apxx_manager.hh:166
not_implemented(const std::string &x)
Definition apxx_manager.hh:97
timeout(const std::string &x)
Definition apxx_manager.hh:88
Definition apxx_abstract0.hh:27
tbool_t x
Either tbool_false, tbool_true, or tbool_top.
Definition apxx_manager.hh:48
friend tbool operator!(tbool a)
3-valued logical not.
Definition apxx_manager.hh:52
friend tbool operator&&(tbool a, tbool b)
3-valued logical and.
Definition apxx_manager.hh:47
friend std::ostream & operator<<(std::ostream &os, tbool x)
Printing.
Definition apxx_manager.hh:57
tbool(bool a)
Converts true to tbool_true and false to tbool_false.
Definition apxx_manager.hh:24
friend tbool operator||(tbool a, tbool b)
3-valued logical or.
Definition apxx_manager.hh:42
Inherited by most wrappers to map new and delete to malloc and free.
Definition apxx_scalar.hh:69