APRONXX  0.9.12
/builddir/build/BUILD/apron-0.9.13/apronxx/apxx_lincons1.hh
Go to the documentation of this file.
1 /* -*- C++ -*-
2  * apxx_lincons1.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_LINCONS1_HH
17 #define __APXX_LINCONS1_HH
18 
19 #include "ap_lincons1.h"
20 #include "apxx_environment.hh"
21 #include "apxx_lincons0.hh"
22 #include "apxx_linexpr1.hh"
23 
24 
25 namespace apron {
26 
27 
28 /* ================================= */
29 /* lincons1 */
30 /* ================================= */
31 
32 
40 class lincons1 : public use_malloc {
41 
42 protected:
43 
44  ap_lincons1_t l;
45 
47  lincons1(ap_lincons1_t p);
48 
49 
50  friend class lincons1_array;
51 
52 public:
53 
54 
55  /* constructors */
56  /* ============ */
57 
60 
64  lincons1(const environment& e, const lincons0& x);
65 
73  lincons1(const environment& e, ap_constyp_t constyp=AP_CONS_SUPEQ);
74 
80  lincons1(ap_constyp_t constyp, const linexpr1& lin);
81 
86  lincons1(ap_constyp_t constyp, const linexpr1& lin, const scalar& modulo);
87 
89  lincons1(const environment& e, unsat x);
90 
92  lincons1(const lincons1& x);
93 
98  lincons1(const lincons1& x, const environment& e);
99 
101 
102 
103  /* destructor */
104  /* ========== */
105 
108 
112  ~lincons1();
113 
115 
116 
117  /* assignment */
118  /* ========== */
119 
122 
124  lincons1& operator= (const lincons1& x);
125 
128 
134  void set_modulo(const scalar& c);
135 
143  void set_linexpr(const linexpr1& c);
144 
146 
147 
148  /* dimension operations */
149  /* ==================== */
150 
153 
158  void extend_environment(const environment& e);
159 
161 
162 
163  /* access */
164  /* ====== */
165 
168 
171 
173  const lincons0& get_lincons0() const;
174 
177 
182  size_t size() const;
183 
188  ap_constyp_t& get_constyp();
189 
194  const ap_constyp_t& get_constyp() const;
195 
197  bool has_modulo() const;
198 
204  bool has_linexpr() const;
205 
210  scalar& get_modulo();
211 
216  const scalar& get_modulo() const;
217 
222  linexpr1 get_linexpr() const;
223 
228  coeff& get_cst();
229 
234  const coeff& get_cst() const;
235 
241  coeff& operator[](const var& v);
242 
248  const coeff& operator[](const var& v) const;
249 
251 
252 
253  /* print */
254  /* ===== */
255 
258 
260  friend std::ostream& operator<< (std::ostream& os, const lincons1& s);
261 
263  void print(FILE* stream=stdout) const;
264 
266 
267 
268  /* tests */
269  /* ===== */
270 
273 
279  bool is_unsat() const;
280 
285  bool is_linear() const;
286 
292  bool is_quasilinear() const;
293 
294  // TODO: equal, compare (currently not in ap_lincons1.h) ???
295 
297 
298 
299  /* TODO: evaluation, linearization, intelligent constructors */
300 
301 
302  /* C-level compatibility */
303  /* ===================== */
304 
307 
309  const ap_lincons1_t* get_ap_lincons1_t() const;
310 
312  ap_lincons1_t* get_ap_lincons1_t();
313 
315 };
316 
317 
318 
319 /* ================================= */
320 /* lincons1_array */
321 /* ================================= */
322 
323 
331 class lincons1_array : public use_malloc {
332 
333 protected:
334 
335  ap_lincons1_array_t a;
336 
338  lincons1_array(ap_lincons1_array_t& a);
339 
340  friend class abstract1;
341 
342 public:
343 
344  /* constructors */
345  /* ============ */
346 
349 
353  lincons1_array(const environment& e, const lincons0_array& x);
354 
360  lincons1_array(const environment& e, size_t size);
361 
363  lincons1_array(const lincons1_array& x);
364 
369  lincons1_array(const lincons1_array& x, const environment& e);
370 
376  lincons1_array(size_t size, const lincons1 x[]);
377 
383  lincons1_array(const std::vector<lincons1>& x);
384 
386 
387 
388  /* destructor */
389  /* ========== */
390 
393 
397  ~lincons1_array();
398 
400 
401 
402  /* assignment */
403  /* ========== */
404 
407 
410 
416  lincons1_array& operator= (const lincons1 x[]);
417 
422  lincons1_array& operator= (const std::vector<lincons1>& x);
423 
425 
426 
427  /* dimension operations */
428  /* ==================== */
429 
432 
434  void resize(size_t size);
435 
440  void extend_environment(const environment& e);
441 
443 
444 
445  /* access */
446  /* ====== */
447 
450 
452  size_t size() const;
453 
456 
458  const lincons0_array& get_lincons0_array() const;
459 
462 
467  lincons1 get(size_t i) const;
468 
474  void set(size_t i, const lincons1& x);
475 
477 
478 
479  /* conversion */
480  /* ========== */
481 
484 
486  operator std::vector<lincons1>() const;
487 
489 
490 
491  /* print */
492  /* ===== */
493 
496 
502  friend std::ostream& operator<< (std::ostream& os, const lincons1_array& s);
503 
505  void print(FILE* stream=stdout) const;
506 
508 
509 
510  /* C-level compatibility */
511  /* ===================== */
512 
515 
517  const ap_lincons1_array_t* get_ap_lincons1_array_t() const;
518 
520  ap_lincons1_array_t* get_ap_lincons1_array_t();
521 
523 
524 };
525 
526 
527 #include "apxx_lincons1_inline.hh"
528 
529 }
530 
531 #endif /* __APXX_LINCONS1_HH */
Level 1 abstract value (ap_abstract1_t wrapper).
Definition: apxx_abstract1.hh:42
Coefficient (ap_coeff_t wrapper).
Definition: apxx_coeff.hh:36
Level 1 environment (ap_environment_t wrapper).
Definition: apxx_environment.hh:51
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
Array of linear constraints (ap_lincons1_array_t wrapper).
Definition: apxx_lincons1.hh:331
void set(size_t i, const lincons1 &x)
Changes the constraint at index i.
Definition: apxx_lincons1_inline.hh:453
const lincons0_array & get_lincons0_array() const
Returns a reference to the underlying lincons0_array.
Definition: apxx_lincons1_inline.hh:436
void extend_environment(const environment &e)
Extends the environment of all expressions in array.
Definition: apxx_lincons1_inline.hh:414
ap_lincons1_array_t a
Structure managed by APRON.
Definition: apxx_lincons1.hh:335
void resize(size_t size)
Resizes the array.
Definition: apxx_lincons1_inline.hh:409
const ap_lincons1_array_t * get_ap_lincons1_array_t() const
Returns a pointer to the internal APRON object stored in *this.
Definition: apxx_lincons1_inline.hh:499
lincons1_array(ap_lincons1_array_t &a)
Internal use only. Shallow copy (no copy of lincons0_array or environment).
Definition: apxx_lincons1_inline.hh:300
environment get_environment() const
Returns the environment shared by all constraints (with incremented reference count).
Definition: apxx_lincons1_inline.hh:431
~lincons1_array()
Frees the space used by the array and all its constraints, and decrements the reference count of the ...
Definition: apxx_lincons1_inline.hh:356
lincons1_array(size_t size, const lincons1 x[])
Creates a lincons1_array from an array (of size >0) of constraints of the given size (copied).
void print(FILE *stream=stdout) const
Prints to a C stream.
Definition: apxx_lincons1_inline.hh:490
lincons1_array & operator=(const lincons1_array &x)
(Deep) copy.
Definition: apxx_lincons1_inline.hh:365
size_t size() const
Returns the size of the array.
Definition: apxx_lincons1_inline.hh:426
friend std::ostream & operator<<(std::ostream &os, const lincons1_array &s)
Printing.
lincons1 get(size_t i) const
Returns a copy of the constraint at index i.
Definition: apxx_lincons1_inline.hh:446
Level 1 linear constraint (ap_lincons1_t wrapper).
Definition: apxx_lincons1.hh:40
void set_linexpr(const linexpr1 &c)
Sets the underlying linear expression to c (copied).
Definition: apxx_lincons1_inline.hh:111
const ap_lincons1_t * get_ap_lincons1_t() const
Returns a pointer to the internal APRON object stored in *this.
Definition: apxx_lincons1_inline.hh:278
bool is_linear() const
Whether the underlying linear expression has only scalar coefficients.
Definition: apxx_lincons1_inline.hh:264
size_t size() const
Returns the size of the underlying linear expression.
Definition: apxx_lincons1_inline.hh:150
bool has_modulo() const
Whether the constraint has a valid auxiliary scalar (used in modulo constraints).
Definition: apxx_lincons1_inline.hh:165
environment get_environment() const
Returns the environment of the constraint (with incremented reference count).
Definition: apxx_lincons1_inline.hh:135
coeff & operator[](const var &v)
Returns a (modifiable) reference to the coefficient corresponding to the given variable name.
void set_modulo(const scalar &c)
Sets the auxiliary scalar modulo to c (copied).
Definition: apxx_lincons1_inline.hh:106
void extend_environment(const environment &e)
Extends the environment of the expression.
Definition: apxx_lincons1_inline.hh:120
lincons1 & operator=(const lincons1 &x)
Makes a (deep) copy.
Definition: apxx_lincons1_inline.hh:90
void print(FILE *stream=stdout) const
Prints to a C stream.
Definition: apxx_lincons1_inline.hh:250
ap_lincons1_t l
Structure managed by APRON.
Definition: apxx_lincons1.hh:44
friend std::ostream & operator<<(std::ostream &os, const lincons1 &s)
Printing.
bool is_quasilinear() const
Whether the underlying linear expression has only scalar coefficients, except maybe for the constant ...
Definition: apxx_lincons1_inline.hh:269
ap_constyp_t & get_constyp()
Returns a (modifiable) reference to the constraint type.
Definition: apxx_lincons1_inline.hh:155
lincons1(ap_lincons1_t p)
Internal use only. Shallow copy (no copy of lincons0 or environment).
Definition: apxx_lincons1_inline.hh:27
const lincons0 & get_lincons0() const
Returns a reference to the underlying lincons0.
Definition: apxx_lincons1_inline.hh:140
linexpr1 get_linexpr() const
Returns a copy of the underlying linear expression.
Definition: apxx_lincons1_inline.hh:189
coeff & get_cst()
Returns a (modifiable) reference to the constant coefficient.
Definition: apxx_lincons1_inline.hh:197
scalar & get_modulo()
Returns a (modifiable) reference to the auxiliary scalar.
Definition: apxx_lincons1_inline.hh:175
bool has_linexpr() const
Whether the constraint has a valid linear expression.
Definition: apxx_lincons1_inline.hh:170
lincons1(const environment &e, ap_constyp_t constyp=AP_CONS_SUPEQ)
Creates a new (non-modulo) constraint from an empty linear expression.
const coeff & operator[](const var &v) const
Returns a reference to the coefficient corresponding to the given variable name.
~lincons1()
Frees all space for the expression and coefficients, and decrements the reference count of the enviro...
Definition: apxx_lincons1_inline.hh:81
bool is_unsat() const
Whether the constraint is unsatisfiable.
Definition: apxx_lincons1_inline.hh:259
Level 1 linear expression (ap_linexpr1_t wrapper).
Definition: apxx_linexpr1.hh:39
Scalar (ap_scalar_t wrapper).
Definition: apxx_scalar.hh:89
Variable name (ap_var_t wrapper).
Definition: apxx_var.hh:39
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