APRONXX 0.9.14
/builddir/build/BUILD/apron-0.9.15-build/apron-0.9.15/apronxx/apxx_tcons0.hh
Go to the documentation of this file.
1/* -*- C++ -*-
2 * apxx_tcons0.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_TCONS0_HH
17#define __APXX_TCONS0_HH
18
19#include "ap_tcons0.h"
20#include "apxx_texpr0.hh"
21#include "apxx_lincons0.hh"
22
23
24namespace apron {
25
26/* ================================= */
27/* tcons0 */
28/* ================================= */
29
30
47class tcons0 : public use_malloc {
48
49protected:
50
51 ap_tcons0_t l;
52
54 tcons0(ap_tcons0_t& l);
55
56 friend class abstract0;
57
58public:
59
60
61 /* constructors */
62 /* ============ */
63
66
73 tcons0(ap_constyp_t constyp=AP_CONS_SUPEQ);
74
80 tcons0(ap_constyp_t constyp, const texpr0::builder& t);
81
86 tcons0(ap_constyp_t constyp, const texpr0::builder& t, const scalar& modulo);
87
89 tcons0(const tcons0& x);
90
95 tcons0(const tcons0& x, const dimchange& d, bool add=true);
96
98 tcons0(const tcons0& x, const dimperm& d);
99
101 tcons0(unsat x);
102
107 tcons0(const lincons0& x);
108
109
111
112 /* destructor */
113 /* ========== */
114
117
119 ~tcons0();
120
122
123 /* 'Intelligent' constructors */
124 /* ========================== */
125
128
131
134
137
140
143
146
148
149 /* assignment */
150 /* ========== */
151
154
156 tcons0& operator= (const tcons0& x);
157
160
165 tcons0& operator= (const lincons0& x);
166
172 void set_modulo(const scalar& c);
173
179 void set_texpr(const texpr0::builder& c);
180
182
183
184 /* dimension operations */
185 /* ==================== */
186
189
194 void add_dimensions(const dimchange& d);
195
200 void remove_dimensions(const dimchange& d);
201
206 void permute_dimensions(const dimperm& d);
207
209
210
211 /* access */
212 /* ====== */
213
216
217 /* get */
218
223 ap_constyp_t& get_constyp();
224
229 const ap_constyp_t& get_constyp() const;
230
232 bool has_modulo() const;
233
235 bool has_texpr() const;
236
242
247 const scalar& get_modulo() const;
248
254
260
262
263
264 /* print */
265 /* ===== */
266
269
277 friend std::ostream& operator<< (std::ostream& os, const tcons0& s);
278
280 void print(char** name_of_dim=NULL, FILE* stream=stdout) const;
281
283
284 /* tests */
285 /* ===== */
286
289
294 bool is_interval_cst() const;
295
300 bool is_interval_linear() const;
301
306 bool is_interval_polynomial() const;
307
312 bool is_interval_polyfrac() const;
313
318 bool is_scalar() const;
319
321
322
323 /* C-level compatibility */
324 /* ===================== */
325
328
330 const ap_tcons0_t* get_ap_tcons0_t() const;
331
333 ap_tcons0_t* get_ap_tcons0_t();
334
336
337};
338
339
340
341/* ================================= */
342/* tcons0_array */
343/* ================================= */
344
345
350class tcons0_array : public use_malloc {
351
352protected:
353
354 ap_tcons0_array_t a;
355
357 tcons0_array(ap_tcons0_array_t& a) : a(a) {}
358
359 friend class abstract0;
360 friend class tcons1_array;
361
362public:
363
364 /* constructors */
365 /* ============ */
366
369
374 tcons0_array(size_t size);
375
377 tcons0_array(const tcons0_array& x);
378
380 tcons0_array(const tcons0_array& x, const dimchange& d, bool add=true);
381
383 tcons0_array(const tcons0_array& x, const dimperm& d);
384
386 tcons0_array(size_t size, const tcons0 x[]);
387
389 tcons0_array(const std::vector<tcons0>& x);
390
396
398
399
400 /* destructor */
401 /* ========== */
402
405
408
410
411
412 /* assignment */
413 /* ========== */
414
417
420
425 tcons0_array& operator= (const tcons0 x[]);
426
428 tcons0_array& operator= (const std::vector<tcons0>& x);
429
435
437
438
439 /* dimension operations */
440 /* ==================== */
441
444
446 void resize(size_t size);
447
449 void add_dimensions(const dimchange& d);
450
452 void remove_dimensions(const dimchange& d);
453
455 void permute_dimensions(const dimperm& d);
456
458
459
460 /* access */
461 /* ====== */
462
465
467 size_t size() const;
468
470 tcons0* contents();
471
473 const tcons0* contents() const;
474
476 tcons0& operator[](size_t i);
477
479 const tcons0& operator[](size_t i) const;
480
485 tcons0& get(size_t i);
486
491 const tcons0& get(size_t i) const;
492
494
495
496 /* conversion */
497 /* ========== */
498
501
503 operator std::vector<tcons0>() const;
504
506
507
508 /* print */
509 /* ===== */
510
513
514
522 friend std::ostream& operator<< (std::ostream& os, const tcons0_array& s);
523
525 void print(char** name_of_dim = NULL, FILE* stream=stdout) const;
526
528
529
530 /* tests */
531 /* ===== */
532
535
537 bool is_interval_linear() const;
538
540
541
542 /* C-level compatibility */
543 /* ===================== */
544
547
549 const ap_tcons0_array_t* get_ap_tcons0_array_t() const;
550
552 ap_tcons0_array_t* get_ap_tcons0_array_t();
553
555};
556
557#include "apxx_tcons0_inline.hh"
558
559}
560
561#endif /* __APXX_TCONS0_HH */
texpr0::builder add(const texpr0::builder &a, const texpr0::builder &b, ap_texpr_rtype_t rtype=AP_RTYPE_REAL, ap_texpr_rdir_t rdir=AP_RDIR_NEAREST)
Definition apxx_texpr0_inline.hh:771
Level 0 abstract value (ap_abstract0_t* wrapper).
Definition apxx_abstract0.hh:78
Dimension change object (ap_dimchange_t wrapper).
Definition apxx_dimension.hh:102
Dimension permutation object (ap_dimperm_t wrapper).
Definition apxx_dimension.hh:292
Array of linear constraints (ap_lincons0_array_t wrapper).
Definition apxx_lincons0.hh:341
Level 0 linear constraint (ap_lincons0_t wrapper).
Definition apxx_lincons0.hh:43
Scalar (ap_scalar_t wrapper).
Definition apxx_scalar.hh:89
Array of arbitrary constraints (ap_tcons0_array_t wrapper).
Definition apxx_tcons0.hh:350
tcons0_array & operator=(const tcons0_array &x)
(Deep) copy.
Definition apxx_tcons0_inline.hh:382
bool is_interval_linear() const
Whether all constraints are linear.
Definition apxx_tcons0_inline.hh:522
ap_tcons0_array_t a
Structure managed by APRON.
Definition apxx_tcons0.hh:354
void add_dimensions(const dimchange &d)
Applies add_dimensions to all constraints in the array.
Definition apxx_tcons0_inline.hh:431
size_t size() const
Returns the size of the array.
Definition apxx_tcons0_inline.hh:450
void print(char **name_of_dim=NULL, FILE *stream=stdout) const
Prints to a C stream.
Definition apxx_tcons0_inline.hh:513
const ap_tcons0_array_t * get_ap_tcons0_array_t() const
Returns a pointer to the internal APRON object stored in *this.
Definition apxx_tcons0_inline.hh:530
tcons0_array(ap_tcons0_array_t &a)
Internal use only. Performs a shallow copy and takes ownership of the contents.
Definition apxx_tcons0.hh:357
tcons0 & operator[](size_t i)
Returns a (modifiable) reference to an element, no bound checking.
Definition apxx_tcons0_inline.hh:465
tcons0 & get(size_t i)
Returns a (modifiable) reference to an element (bound-checked).
Definition apxx_tcons0_inline.hh:475
friend std::ostream & operator<<(std::ostream &os, const tcons0_array &s)
Printing.
tcons0 * contents()
Returns a pointer to the start of the internal array holding the constraints.
Definition apxx_tcons0_inline.hh:455
void permute_dimensions(const dimperm &d)
Applies permute_dimensions to all constraints in the array.
Definition apxx_tcons0_inline.hh:441
~tcons0_array()
Frees the space used by the array and all its constraints.
Definition apxx_tcons0_inline.hh:373
void resize(size_t size)
Resizes the array.
Definition apxx_tcons0_inline.hh:426
void remove_dimensions(const dimchange &d)
Applies remove_dimensions to all constraints in the array.
Definition apxx_tcons0_inline.hh:436
Level 0 arbitrary constraint (ap_tcons0_t wrapper).
Definition apxx_tcons0.hh:47
tcons0(ap_tcons0_t &l)
Internal use only. Performs a shallow copy and takes ownership of the contents.
Definition apxx_tcons0_inline.hh:23
bool is_interval_polyfrac() const
Whether the expression is a polynomial fraction and there is no rounding.
Definition apxx_tcons0_inline.hh:286
ap_tcons0_t l
Structure managed by APRON.
Definition apxx_tcons0.hh:51
~tcons0()
Frees the constraint, including the embedded expression tree and optional modulo scalar.
Definition apxx_tcons0_inline.hh:81
friend tcons0 operator!=(const texpr0::builder &a, const texpr0::builder &b)
Makes a constraint a-b != 0.
bool is_interval_cst() const
Whether the expression is constant (i.e., has no dimension leaves).
Definition apxx_tcons0_inline.hh:271
bool has_modulo() const
Returns whether the constraint has a valid extra scalar (used in modulo constraints).
Definition apxx_tcons0_inline.hh:197
friend tcons0 operator>(const texpr0::builder &a, const texpr0::builder &b)
Makes a constraint a-b > 0.
bool is_scalar() const
Whether all occurring constants are scalar.
Definition apxx_tcons0_inline.hh:291
void remove_dimensions(const dimchange &d)
Removes dimensions to the underlying expression tree.
Definition apxx_tcons0_inline.hh:169
bool is_interval_linear() const
Whether the expression is linear and there is no rounding.
Definition apxx_tcons0_inline.hh:276
friend tcons0 operator<=(const texpr0::builder &a, const texpr0::builder &b)
Makes a constraint b-a >= 0.
void set_texpr(const texpr0::builder &c)
Sets the underlying expression tree to c (copied).
Definition apxx_tcons0_inline.hh:238
ap_constyp_t & get_constyp()
Returns a (modifiable) reference to the constraint type.
Definition apxx_tcons0_inline.hh:187
bool has_texpr() const
Whether the constraint contains a valid expression tree.
Definition apxx_tcons0_inline.hh:202
void permute_dimensions(const dimperm &d)
Applies a permutation to the underlying expression tree.
Definition apxx_tcons0_inline.hh:175
void set_modulo(const scalar &c)
Sets the extra scalar modulo to c (copied).
Definition apxx_tcons0_inline.hh:219
void print(char **name_of_dim=NULL, FILE *stream=stdout) const
Prints to a C stream.
Definition apxx_tcons0_inline.hh:262
friend tcons0 operator>=(const texpr0::builder &a, const texpr0::builder &b)
Makes a constraint a-b >= 0.
texpr0::iterator get_texpr()
Returns an iterator to the root of the underlying expression tree.
Definition apxx_tcons0_inline.hh:232
void add_dimensions(const dimchange &d)
Adds dimensions to the underlying expression tree.
Definition apxx_tcons0_inline.hh:163
bool is_interval_polynomial() const
Whether the expression is polynomial and there is no rounding.
Definition apxx_tcons0_inline.hh:281
const ap_tcons0_t * get_ap_tcons0_t() const
Returns a pointer to the internal APRON object stored in *this.
Definition apxx_tcons0_inline.hh:301
friend tcons0 operator<(const texpr0::builder &a, const texpr0::builder &b)
Makes a constraint b-a > 0.
tcons0 & operator=(const tcons0 &x)
(Deep) copy.
Definition apxx_tcons0_inline.hh:136
friend tcons0 operator==(const texpr0::builder &a, const texpr0::builder &b)
Makes a constraint a-b == 0.
friend std::ostream & operator<<(std::ostream &os, const tcons0 &s)
Printing.
scalar & get_modulo()
Returns a (modifiable) reference to the extra scalar.
Definition apxx_tcons0_inline.hh:207
Array of arbitrary constraints (ap_tcons1_array_t wrapper).
Definition apxx_tcons1.hh:337
Temporary expression nodes used when constructing a texpr0.
Definition apxx_texpr0.hh:581
Iterators to traverse a constant expression tree.
Definition apxx_texpr0.hh:211
Iterators to traverse and mutate an expression tree.
Definition apxx_texpr0.hh:413
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