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
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