APRONXX 0.9.14
/builddir/build/BUILD/apron-0.9.15-build/apron-0.9.15/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
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);
84
89 tcons1(const tcons1& x, const environment& e);
90
92 tcons1(const environment& e, unsat x);
93
98 tcons1(const lincons1& x);
100
102
103 /* destructor */
104 /* ========== */
105
108
110 ~tcons1();
111
114 /* 'Intelligent' constructors */
115 /* ========================== */
116
119
121 friend tcons1 operator>=(const texpr1::builder& a, const texpr1::builder& b);
122
124 friend tcons1 operator<=(const texpr1::builder& a, const texpr1::builder& b);
125
128
130 friend tcons1 operator< (const texpr1::builder& a, const texpr1::builder& b);
131
133 friend tcons1 operator==(const texpr1::builder& a, const texpr1::builder& b);
134
136 friend tcons1 operator!=(const texpr1::builder& a, const texpr1::builder& b);
137
139
140 /* assignment */
141 /* ========== */
142
145
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
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;
206
211 ap_constyp_t& get_constyp();
212
217 const ap_constyp_t& get_constyp() const;
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
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;
304 bool is_scalar() const;
305
307
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
337class tcons1_array : public use_malloc {
338
339protected:
340
341 ap_tcons1_array_t a;
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);
446
448
449
450 /* access */
451 /* ====== */
452
455
457 size_t size() const;
458
461
463 const tcons0_array& get_tcons0_array() const;
464
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
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
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.hh:331
ap_tcons1_array_t a
Structure managed by APRON.
Definition apxx_tcons1.hh:341
environment get_environment() const
Returns the environment shared by all constraints (with incremented reference count).
Definition apxx_tcons1.hh:462
tcons1_array & operator=(const tcons1_array &x)
(Deep) copy.
Definition apxx_tcons1.hh:396
size_t size() const
Returns the size of the array.
Definition apxx_tcons1.hh:457
friend std::ostream & operator<<(std::ostream &os, const tcons1_array &s)
Printing.
Definition apxx_tcons1.hh:513
void set(size_t i, const tcons1 &x)
Changes the constraint at index i.
Definition apxx_tcons1.hh:485
const tcons0_array & get_tcons0_array() const
Returns a reference to the underlying tcons0_array.
Definition apxx_tcons1.hh:467
~tcons1_array()
Frees the space used by the array and all its constraints.
Definition apxx_tcons1.hh:387
void resize(size_t size)
Resizes the array.
Definition apxx_tcons1.hh:440
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.hh:531
tcons1 get(size_t i) const
Returns a copy of the constraint at index i.
Definition apxx_tcons1.hh:477
void extend_environment(const environment &e)
Extends the environment of all expressions in array.
Definition apxx_tcons1.hh:445
void print(FILE *stream=stdout) const
Prints to a C stream.
Definition apxx_tcons1.hh:522
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.
Definition apxx_tcons1.hh:127
bool has_modulo() const
Returns whether the constraint has a valid extra scalar (used in modulo constraints).
Definition apxx_tcons1.hh:218
bool has_texpr() const
Whether the constraint contains a valid expression tree.
Definition apxx_tcons1.hh:223
friend tcons1 operator>(const texpr1::builder &a, const texpr1::builder &b)
Makes a constraint a-b > 0.
Definition apxx_tcons1.hh:106
texpr1::iterator get_texpr()
Returns an iterator to the root of the underlying expression tree.
Definition apxx_tcons1.hh:240
bool is_interval_cst() const
Whether the expression is constant (i.e., has no dimension leaves).
Definition apxx_tcons1.hh:279
friend tcons1 operator>=(const texpr1::builder &a, const texpr1::builder &b)
Makes a constraint a-b >= 0.
Definition apxx_tcons1.hh:92
friend std::ostream & operator<<(std::ostream &os, const tcons1 &s)
Printing.
Definition apxx_tcons1.hh:257
ap_constyp_t & get_constyp()
Returns a (modifiable) reference to the constraint type.
Definition apxx_tcons1.hh:208
tcons1(const tcons1 &x)
(Deep) copy of a constraint.
Definition apxx_tcons1.hh:53
void set_texpr(const texpr1::builder &c)
Sets the underlying expression tree to c (copied).
Definition apxx_tcons1.hh:166
~tcons1()
Frees the constraint, including the embedded expression tree and optional modulo scalar.
Definition apxx_tcons1.hh:83
bool is_interval_polynomial() const
Whether the expression is polynomial and there is no rounding.
Definition apxx_tcons1.hh:289
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.hh:284
void set_modulo(const scalar &c)
Sets the extra scalar modulo to c (copied).
Definition apxx_tcons1.hh:161
tcons1(ap_tcons1_t l)
Internal use only. Performs a shallow copy and takes ownership of the contents.
Definition apxx_tcons1.hh:29
tcons1 & operator=(const tcons1 &x)
(Deep) copy.
Definition apxx_tcons1.hh:138
void extend_environment(const environment &e)
Extends the environment of the expression.
Definition apxx_tcons1.hh:180
friend tcons1 operator<(const texpr1::builder &a, const texpr1::builder &b)
Makes a constraint b-a > 0.
Definition apxx_tcons1.hh:113
friend tcons1 operator<=(const texpr1::builder &a, const texpr1::builder &b)
Makes a constraint b-a >= 0.
Definition apxx_tcons1.hh:99
environment get_environment() const
Returns the environment of the expression (with incremented reference count).
Definition apxx_tcons1.hh:193
scalar & get_modulo()
Returns a (modifiable) reference to the extra scalar.
Definition apxx_tcons1.hh:228
bool is_interval_polyfrac() const
Whether the expression is a polynomial fraction and there is no rounding.
Definition apxx_tcons1.hh:294
friend tcons1 operator==(const texpr1::builder &a, const texpr1::builder &b)
Makes a constraint a-b == 0.
Definition apxx_tcons1.hh:120
bool is_scalar() const
Whether all occurring constants are scalar.
Definition apxx_tcons1.hh:299
void print(FILE *stream=stdout) const
Prints to a C stream.
Definition apxx_tcons1.hh:270
const ap_tcons1_t * get_ap_tcons1_t() const
Returns a pointer to the internal APRON object stored in *this.
Definition apxx_tcons1.hh:308
const tcons0 & get_tcons0() const
Returns a reference to the underlying tcons0.
Definition apxx_tcons1.hh:198
tcons0 & get_tcons0()
Returns a (modifiable) reference to the underlying tcons0.
Definition apxx_tcons1.hh:203
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