APRONXX 0.9.12
/builddir/build/BUILD/apron-0.9.13/apronxx/apxx_tcons1.hh
Go to the documentation of this file.
1/* -*- C++ -*-
2 * apxx_tcons1.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_TCONS1_HH
17#define __APXX_TCONS1_HH
18
19#include "ap_tcons1.h"
20#include "apxx_tcons0.hh"
21#include "apxx_texpr1.hh"
22
23
24namespace apron {
25
26
27/* ================================= */
28/* tcons1 */
29/* ================================= */
30
31
39class tcons1 : public use_malloc {
40
41protected:
42
43 ap_tcons1_t l;
44
46 tcons1(ap_tcons1_t l);
47
48 friend class abstract0;
49 friend class tcons1_array;
50
51public:
52
53
54 /* constructors */
55 /* ============ */
56
59
66 tcons1(const environment& env, ap_constyp_t constyp=AP_CONS_SUPEQ);
67
73 tcons1(ap_constyp_t constyp, const texpr1::builder& t);
74
79 tcons1(ap_constyp_t constyp, const texpr1::builder& t, const scalar& modulo);
80
82 tcons1(const tcons1& x);
83
84
89 tcons1(const tcons1& x, const environment& e);
90
92 tcons1(const environment& e, unsat x);
93
98 tcons1(const lincons1& x);
99
100
102
103 /* destructor */
104 /* ========== */
105
108
110 ~tcons1();
111
113
114 /* 'Intelligent' constructors */
115 /* ========================== */
116
119
122
125
128
131
134
137
139
140 /* assignment */
141 /* ========== */
142
145
147 tcons1& operator= (const tcons1& x);
148
151
156 tcons1& operator= (const lincons1& x);
157
163 void set_modulo(const scalar& c);
164
170 void set_texpr(const texpr1::builder& c);
171
173
174
175 /* dimension operations */
176 /* ==================== */
177
180
185 void extend_environment(const environment& e);
186
188
189
190 /* access */
191 /* ====== */
192
195
196 /* get */
197
200
202 const tcons0& get_tcons0() const;
203
206
211 ap_constyp_t& get_constyp();
212
217 const ap_constyp_t& get_constyp() const;
218
220 bool has_modulo() const;
221
223 bool has_texpr() const;
224
230
235 const scalar& get_modulo() const;
236
242
248
250
251
252 /* print */
253 /* ===== */
254
257
263 friend std::ostream& operator<< (std::ostream& os, const tcons1& s);
264
266 void print(FILE* stream=stdout) const;
267
269
270 /* tests */
271 /* ===== */
272
275
280 bool is_interval_cst() const;
281
286 bool is_interval_linear() const;
287
292 bool is_interval_polynomial() const;
293
298 bool is_interval_polyfrac() const;
299
304 bool is_scalar() const;
305
307
308
309 /* C-level compatibility */
310 /* ===================== */
311
314
316 const ap_tcons1_t* get_ap_tcons1_t() const;
317
319 ap_tcons1_t* get_ap_tcons1_t();
320
322
323};
324
325
326
327/* ================================= */
328/* tcons1_array */
329/* ================================= */
330
331
337class tcons1_array : public use_malloc {
338
339protected:
340
341 ap_tcons1_array_t a;
342
344 tcons1_array(ap_tcons1_array_t& a);
345
346 friend class abstract0;
347 friend class abstract1;
348
349public:
350
351 /* constructors */
352 /* ============ */
353
356
360 tcons1_array(const environment& e, const tcons0_array& x);
361
366 tcons1_array(const environment& e, size_t size);
367
369 tcons1_array(const tcons1_array& x);
370
375 tcons1_array(const tcons1_array& x, const environment& e);
376
377
383 tcons1_array(size_t size, const tcons1 x[]);
384
390 tcons1_array(const std::vector<tcons1>& x);
391
393
394
395 /* destructor */
396 /* ========== */
397
400
403
405
406
407 /* assignment */
408 /* ========== */
409
412
415
421 tcons1_array& operator= (const tcons1 x[]);
422
427 tcons1_array& operator= (const std::vector<tcons1>& x);
428
430
431
432 /* dimension operations */
433 /* ==================== */
434
437
439 void resize(size_t size);
440
445 void extend_environment(const environment& e);
446
448
449
450 /* access */
451 /* ====== */
452
455
457 size_t size() const;
458
461
463 const tcons0_array& get_tcons0_array() const;
464
467
472 tcons1 get(size_t i) const;
473
479 void set(size_t i, const tcons1& x);
480
482
483
484 /* conversion */
485 /* ========== */
486
489
491 operator std::vector<tcons1>() const;
492
494
495
496 /* print */
497 /* ===== */
498
501
507 friend std::ostream& operator<< (std::ostream& os, const tcons1_array& s);
508
510 void print(FILE* stream=stdout) const;
511
513
514
515 /* C-level compatibility */
516 /* ===================== */
517
520
522 const ap_tcons1_array_t* get_ap_tcons1_array_t() const;
523
525 ap_tcons1_array_t* get_ap_tcons1_array_t();
526
528
529};
530
531#include "apxx_tcons1_inline.hh"
532
533}
534
535#endif /* __APXX_TCONS1_HH */
Level 0 abstract value (ap_abstract0_t* wrapper).
Definition: apxx_abstract0.hh:78
Level 1 abstract value (ap_abstract1_t wrapper).
Definition: apxx_abstract1.hh:42
Level 1 environment (ap_environment_t wrapper).
Definition: apxx_environment.hh:51
Level 1 linear constraint (ap_lincons1_t wrapper).
Definition: apxx_lincons1.hh:40
Scalar (ap_scalar_t wrapper).
Definition: apxx_scalar.hh:89
Array of arbitrary constraints (ap_tcons0_array_t wrapper).
Definition: apxx_tcons0.hh:350
Level 0 arbitrary constraint (ap_tcons0_t wrapper).
Definition: apxx_tcons0.hh:47
Array of arbitrary constraints (ap_tcons1_array_t wrapper).
Definition: apxx_tcons1.hh:337
tcons1_array(ap_tcons1_array_t &a)
Internal use only. Performs a shallow copy and takes ownership of the contents.
Definition: apxx_tcons1_inline.hh:330
ap_tcons1_array_t a
Structure managed by APRON.
Definition: apxx_tcons1.hh:341
tcons1_array(size_t size, const tcons1 x[])
Creates a tcons1_array from an array (of size >0) of constraints of the given size (copied).
environment get_environment() const
Returns the environment shared by all constraints (with incremented reference count).
Definition: apxx_tcons1_inline.hh:461
tcons1_array & operator=(const tcons1_array &x)
(Deep) copy.
Definition: apxx_tcons1_inline.hh:395
size_t size() const
Returns the size of the array.
Definition: apxx_tcons1_inline.hh:456
friend std::ostream & operator<<(std::ostream &os, const tcons1_array &s)
Printing.
void set(size_t i, const tcons1 &x)
Changes the constraint at index i.
Definition: apxx_tcons1_inline.hh:484
const tcons0_array & get_tcons0_array() const
Returns a reference to the underlying tcons0_array.
Definition: apxx_tcons1_inline.hh:466
~tcons1_array()
Frees the space used by the array and all its constraints.
Definition: apxx_tcons1_inline.hh:386
void resize(size_t size)
Resizes the array.
Definition: apxx_tcons1_inline.hh:439
const ap_tcons1_array_t * get_ap_tcons1_array_t() const
Returns a pointer to the internal APRON object stored in *this.
Definition: apxx_tcons1_inline.hh:530
tcons1 get(size_t i) const
Returns a copy of the constraint at index i.
Definition: apxx_tcons1_inline.hh:476
void extend_environment(const environment &e)
Extends the environment of all expressions in array.
Definition: apxx_tcons1_inline.hh:444
void print(FILE *stream=stdout) const
Prints to a C stream.
Definition: apxx_tcons1_inline.hh:521
Level 1 arbitrary constraint (ap_tcons1_t wrapper).
Definition: apxx_tcons1.hh:39
friend tcons1 operator!=(const texpr1::builder &a, const texpr1::builder &b)
Makes a constraint a-b != 0.
bool has_modulo() const
Returns whether the constraint has a valid extra scalar (used in modulo constraints).
Definition: apxx_tcons1_inline.hh:217
bool has_texpr() const
Whether the constraint contains a valid expression tree.
Definition: apxx_tcons1_inline.hh:222
friend tcons1 operator>(const texpr1::builder &a, const texpr1::builder &b)
Makes a constraint a-b > 0.
texpr1::iterator get_texpr()
Returns an iterator to the root of the underlying expression tree.
Definition: apxx_tcons1_inline.hh:239
bool is_interval_cst() const
Whether the expression is constant (i.e., has no dimension leaves).
Definition: apxx_tcons1_inline.hh:278
friend tcons1 operator>=(const texpr1::builder &a, const texpr1::builder &b)
Makes a constraint a-b >= 0.
friend std::ostream & operator<<(std::ostream &os, const tcons1 &s)
Printing.
ap_constyp_t & get_constyp()
Returns a (modifiable) reference to the constraint type.
Definition: apxx_tcons1_inline.hh:207
void set_texpr(const texpr1::builder &c)
Sets the underlying expression tree to c (copied).
Definition: apxx_tcons1_inline.hh:165
~tcons1()
Frees the constraint, including the embedded expression tree and optional modulo scalar.
Definition: apxx_tcons1_inline.hh:82
bool is_interval_polynomial() const
Whether the expression is polynomial and there is no rounding.
Definition: apxx_tcons1_inline.hh:288
ap_tcons1_t l
Structure managed by APRON.
Definition: apxx_tcons1.hh:43
bool is_interval_linear() const
Whether the expression is linear and there is no rounding.
Definition: apxx_tcons1_inline.hh:283
void set_modulo(const scalar &c)
Sets the extra scalar modulo to c (copied).
Definition: apxx_tcons1_inline.hh:160
tcons1(ap_tcons1_t l)
Internal use only. Performs a shallow copy and takes ownership of the contents.
Definition: apxx_tcons1_inline.hh:28
tcons1 & operator=(const tcons1 &x)
(Deep) copy.
Definition: apxx_tcons1_inline.hh:137
void extend_environment(const environment &e)
Extends the environment of the expression.
Definition: apxx_tcons1_inline.hh:179
friend tcons1 operator<(const texpr1::builder &a, const texpr1::builder &b)
Makes a constraint b-a > 0.
friend tcons1 operator<=(const texpr1::builder &a, const texpr1::builder &b)
Makes a constraint b-a >= 0.
environment get_environment() const
Returns the environment of the expression (with incremented reference count).
Definition: apxx_tcons1_inline.hh:192
scalar & get_modulo()
Returns a (modifiable) reference to the extra scalar.
Definition: apxx_tcons1_inline.hh:227
bool is_interval_polyfrac() const
Whether the expression is a polynomial fraction and there is no rounding.
Definition: apxx_tcons1_inline.hh:293
friend tcons1 operator==(const texpr1::builder &a, const texpr1::builder &b)
Makes a constraint a-b == 0.
bool is_scalar() const
Whether all occurring constants are scalar.
Definition: apxx_tcons1_inline.hh:298
void print(FILE *stream=stdout) const
Prints to a C stream.
Definition: apxx_tcons1_inline.hh:269
const ap_tcons1_t * get_ap_tcons1_t() const
Returns a pointer to the internal APRON object stored in *this.
Definition: apxx_tcons1_inline.hh:307
const tcons0 & get_tcons0() const
Returns a reference to the underlying tcons0.
Definition: apxx_tcons1_inline.hh:197
Temporary expression nodes used when constructing a texpr1.
Definition: apxx_texpr1.hh:561
Iterators to traverse a constant expression tree.
Definition: apxx_texpr1.hh:183
Iterators to traverse and mutate an expression tree.
Definition: apxx_texpr1.hh:386
Definition: apxx_abstract0.hh:27
Unsatisfiable constraint, to simplify initialisations and assignments.
Definition: apxx_lincons0.hh:28
Inherited by most wrappers to map new and delete to malloc and free.
Definition: apxx_scalar.hh:69