APRONXX  0.9.12
/home/mine/apron/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 
24 namespace apron {
25 
26 
27 /* ================================= */
28 /* tcons1 */
29 /* ================================= */
30 
31 
39 class tcons1 : public use_malloc {
40 
41 protected:
42 
43  ap_tcons1_t l;
44 
46  tcons1(ap_tcons1_t l);
47 
48  friend class abstract0;
49  friend class tcons1_array;
50 
51 public:
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 
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 
127  friend tcons1 operator> (const texpr1::builder& a, const texpr1::builder& b);
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 
150  tcons1& operator= (unsat x);
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;
205  tcons0& get_tcons0();
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 
229  scalar& get_modulo();
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 
337 class tcons1_array : public use_malloc {
338 
339 protected:
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 
349 public:
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 
402  ~tcons1_array();
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 */
void set_modulo(const scalar &c)
Sets the extra scalar modulo to c (copied).
Definition: apxx_tcons1.hh:161
void set(size_t i, const tcons1 &x)
Changes the constraint at index i.
Definition: apxx_tcons1.hh:485
bool is_interval_linear() const
Whether the expression is linear and there is no rounding.
Definition: apxx_tcons1.hh:284
size_t size() const
Returns the size of the array.
Definition: apxx_tcons1.hh:457
void extend_environment(const environment &e)
Extends the environment of the expression.
Definition: apxx_tcons1.hh:180
Definition: apxx_abstract0.hh:27
scalar & get_modulo()
Returns a (modifiable) reference to the extra scalar.
Definition: apxx_tcons1.hh:228
tcons1 get(size_t i) const
Returns a copy of the constraint at index i.
Definition: apxx_tcons1.hh:477
Array of arbitrary constraints (ap_tcons1_array_t wrapper).
Definition: apxx_tcons1.hh:337
tcons1_array(const tcons1_array &x)
(Deep) copy.
Definition: apxx_tcons1.hh:347
friend tcons1 operator<=(const texpr1::builder &a, const texpr1::builder &b)
Makes a constraint b-a >= 0.
Definition: apxx_tcons1.hh:99
const tcons0 & get_tcons0() const
Returns a reference to the underlying tcons0.
Definition: apxx_tcons1.hh:198
friend tcons1 operator>(const texpr1::builder &a, const texpr1::builder &b)
Makes a constraint a-b > 0.
Definition: apxx_tcons1.hh:106
friend tcons1 operator>=(const texpr1::builder &a, const texpr1::builder &b)
Makes a constraint a-b >= 0.
Definition: apxx_tcons1.hh:92
Level 0 abstract value (ap_abstract0_t* wrapper).
Definition: apxx_abstract0.hh:78
friend tcons1 operator<(const texpr1::builder &a, const texpr1::builder &b)
Makes a constraint b-a > 0.
Definition: apxx_tcons1.hh:113
ap_tcons1_t l
Structure managed by APRON.
Definition: apxx_tcons1.hh:43
const tcons0_array & get_tcons0_array() const
Returns a reference to the underlying tcons0_array.
Definition: apxx_tcons1.hh:467
ap_constyp_t & get_constyp()
Returns a (modifiable) reference to the constraint type.
Definition: apxx_tcons1.hh:208
Temporary expression nodes used when constructing a texpr1.
Definition: apxx_texpr1.hh:561
bool has_texpr() const
Whether the constraint contains a valid expression tree.
Definition: apxx_tcons1.hh:223
~tcons1()
Frees the constraint, including the embedded expression tree and optional modulo scalar.
Definition: apxx_tcons1.hh:83
bool is_scalar() const
Whether all occurring constants are scalar.
Definition: apxx_tcons1.hh:299
Level 1 environment (ap_environment_t wrapper).
Definition: apxx_environment.hh:51
environment get_environment() const
Returns the environment of the expression (with incremented reference count).
Definition: apxx_tcons1.hh:193
friend std::ostream & operator<<(std::ostream &os, const tcons1_array &s)
Printing.
Definition: apxx_tcons1.hh:513
tcons1(const tcons1 &x)
(Deep) copy of a constraint.
Definition: apxx_tcons1.hh:53
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
friend tcons1 operator==(const texpr1::builder &a, const texpr1::builder &b)
Makes a constraint a-b == 0.
Definition: apxx_tcons1.hh:120
void print(FILE *stream=stdout) const
Prints to a C stream.
Definition: apxx_tcons1.hh:522
Level 1 linear constraint (ap_lincons1_t wrapper).
Definition: apxx_lincons1.hh:40
void extend_environment(const environment &e)
Extends the environment of all expressions in array.
Definition: apxx_tcons1.hh:445
Level 1 abstract value (ap_abstract1_t wrapper).
Definition: apxx_abstract1.hh:42
Level 0 arbitrary constraint (ap_tcons0_t wrapper).
Definition: apxx_tcons0.hh:47
void print(FILE *stream=stdout) const
Prints to a C stream.
Definition: apxx_tcons1.hh:270
Inherited by most wrappers to map new and delete to malloc and free.
Definition: apxx_scalar.hh:69
bool is_interval_cst() const
Whether the expression is constant (i.e., has no dimension leaves).
Definition: apxx_tcons1.hh:279
tcons1(ap_tcons1_t l)
Internal use only. Performs a shallow copy and takes ownership of the contents.
Definition: apxx_tcons1.hh:29
bool is_interval_polyfrac() const
Whether the expression is a polynomial fraction and there is no rounding.
Definition: apxx_tcons1.hh:294
void resize(size_t size)
Resizes the array.
Definition: apxx_tcons1.hh:440
bool has_modulo() const
Returns whether the constraint has a valid extra scalar (used in modulo constraints).
Definition: apxx_tcons1.hh:218
tcons1_array & operator=(const tcons1_array &x)
(Deep) copy.
Definition: apxx_tcons1.hh:396
friend tcons1 operator!=(const texpr1::builder &a, const texpr1::builder &b)
Makes a constraint a-b != 0.
Definition: apxx_tcons1.hh:127
tcons1 & operator=(const tcons1 &x)
(Deep) copy.
Definition: apxx_tcons1.hh:138
void set_texpr(const texpr1::builder &c)
Sets the underlying expression tree to c (copied).
Definition: apxx_tcons1.hh:166
tcons0 & get_tcons0()
Returns a (modifiable) reference to the underlying tcons0.
Definition: apxx_tcons1.hh:203
ap_tcons1_array_t a
Structure managed by APRON.
Definition: apxx_tcons1.hh:341
Iterators to traverse and mutate an expression tree.
Definition: apxx_texpr1.hh:386
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
Iterators to traverse a constant expression tree.
Definition: apxx_texpr1.hh:183
friend std::ostream & operator<<(std::ostream &os, const tcons1 &s)
Printing.
Definition: apxx_tcons1.hh:257
bool is_interval_polynomial() const
Whether the expression is polynomial and there is no rounding.
Definition: apxx_tcons1.hh:289
Level 1 arbitrary constraint (ap_tcons1_t wrapper).
Definition: apxx_tcons1.hh:39
Array of arbitrary constraints (ap_tcons0_array_t wrapper).
Definition: apxx_tcons0.hh:350
Unsatisfiable constraint, to simplify initialisations and assignments.
Definition: apxx_lincons0.hh:28
~tcons1_array()
Frees the space used by the array and all its constraints.
Definition: apxx_tcons1.hh:387
texpr1::iterator get_texpr()
Returns an iterator to the root of the underlying expression tree.
Definition: apxx_tcons1.hh:240
environment get_environment() const
Returns the environment shared by all constraints (with incremented reference count).
Definition: apxx_tcons1.hh:462
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
Scalar (ap_scalar_t wrapper).
Definition: apxx_scalar.hh:89