APRONXX  0.9.12
/builddir/build/BUILD/apron-0.9.12/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 */
apron::lincons1::operator[]
coeff & operator[](const var &v)
Returns a (modifiable) reference to the coefficient corresponding to the given variable name.
apron::lincons1_array::get_lincons0_array
const lincons0_array & get_lincons0_array() const
Returns a reference to the underlying lincons0_array.
Definition: apxx_lincons1_inline.hh:436
apron::environment
Level 1 environment (ap_environment_t wrapper).
Definition: apxx_environment.hh:51
apron::lincons1_array
Array of linear constraints (ap_lincons1_array_t wrapper).
Definition: apxx_lincons1.hh:331
apron::lincons1::get_lincons0
const lincons0 & get_lincons0() const
Returns a reference to the underlying lincons0.
Definition: apxx_lincons1_inline.hh:140
apron::lincons1::is_unsat
bool is_unsat() const
Whether the constraint is unsatisfiable.
Definition: apxx_lincons1_inline.hh:259
apron::lincons1::has_modulo
bool has_modulo() const
Whether the constraint has a valid auxiliary scalar (used in modulo constraints).
Definition: apxx_lincons1_inline.hh:165
apron::lincons1_array::a
ap_lincons1_array_t a
Structure managed by APRON.
Definition: apxx_lincons1.hh:335
apxx_linexpr1.hh
apron::coeff
Coefficient (ap_coeff_t wrapper).
Definition: apxx_coeff.hh:36
apron::lincons1::lincons1
lincons1(ap_lincons1_t p)
Internal use only. Shallow copy (no copy of lincons0 or environment).
Definition: apxx_lincons1_inline.hh:27
apron::lincons1_array::extend_environment
void extend_environment(const environment &e)
Extends the environment of all expressions in array.
Definition: apxx_lincons1_inline.hh:414
apron::lincons1::set_modulo
void set_modulo(const scalar &c)
Sets the auxiliary scalar modulo to c (copied).
Definition: apxx_lincons1_inline.hh:106
apron::lincons1::is_linear
bool is_linear() const
Whether the underlying linear expression has only scalar coefficients.
Definition: apxx_lincons1_inline.hh:264
apxx_lincons0.hh
apron::var
Variable name (ap_var_t wrapper).
Definition: apxx_var.hh:39
apron::lincons1::operator<<
friend std::ostream & operator<<(std::ostream &os, const lincons1 &s)
Printing.
apron::lincons1_array::operator<<
friend std::ostream & operator<<(std::ostream &os, const lincons1_array &s)
Printing.
apron::abstract1
Level 1 abstract value (ap_abstract1_t wrapper).
Definition: apxx_abstract1.hh:42
apron::linexpr1
Level 1 linear expression (ap_linexpr1_t wrapper).
Definition: apxx_linexpr1.hh:39
apron::lincons1::set_linexpr
void set_linexpr(const linexpr1 &c)
Sets the underlying linear expression to c (copied).
Definition: apxx_lincons1_inline.hh:111
apron::lincons1::operator=
lincons1 & operator=(const lincons1 &x)
Makes a (deep) copy.
Definition: apxx_lincons1_inline.hh:90
apron::use_malloc
Inherited by most wrappers to map new and delete to malloc and free.
Definition: apxx_scalar.hh:69
apron::lincons1_array::print
void print(FILE *stream=stdout) const
Prints to a C stream.
Definition: apxx_lincons1_inline.hh:490
apron::lincons1::l
ap_lincons1_t l
Structure managed by APRON.
Definition: apxx_lincons1.hh:44
apron::lincons1::get_linexpr
linexpr1 get_linexpr() const
Returns a copy of the underlying linear expression.
Definition: apxx_lincons1_inline.hh:189
apron::lincons1::size
size_t size() const
Returns the size of the underlying linear expression.
Definition: apxx_lincons1_inline.hh:150
apron::lincons1_array::resize
void resize(size_t size)
Resizes the array.
Definition: apxx_lincons1_inline.hh:409
apxx_lincons1_inline.hh
apron::lincons1
Level 1 linear constraint (ap_lincons1_t wrapper).
Definition: apxx_lincons1.hh:40
apron::lincons1_array::operator=
lincons1_array & operator=(const lincons1_array &x)
(Deep) copy.
Definition: apxx_lincons1_inline.hh:365
apron::lincons1::get_ap_lincons1_t
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
apron::lincons1::~lincons1
~lincons1()
Frees all space for the expression and coefficients, and decrements the reference count of the enviro...
Definition: apxx_lincons1_inline.hh:81
apron::lincons1_array::get_ap_lincons1_array_t
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
apron::lincons1::get_environment
environment get_environment() const
Returns the environment of the constraint (with incremented reference count).
Definition: apxx_lincons1_inline.hh:135
apron::lincons1::get_constyp
ap_constyp_t & get_constyp()
Returns a (modifiable) reference to the constraint type.
Definition: apxx_lincons1_inline.hh:155
apron::lincons1_array::lincons1_array
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
apron::lincons1_array::set
void set(size_t i, const lincons1 &x)
Changes the constraint at index i.
Definition: apxx_lincons1_inline.hh:453
apron::lincons1_array::size
size_t size() const
Returns the size of the array.
Definition: apxx_lincons1_inline.hh:426
apron::lincons1_array::get
lincons1 get(size_t i) const
Returns a copy of the constraint at index i.
Definition: apxx_lincons1_inline.hh:446
apron::lincons1::is_quasilinear
bool is_quasilinear() const
Whether the underlying linear expression has only scalar coefficients, except maybe for the constant ...
Definition: apxx_lincons1_inline.hh:269
apron::lincons1::has_linexpr
bool has_linexpr() const
Whether the constraint has a valid linear expression.
Definition: apxx_lincons1_inline.hh:170
apron::unsat
Unsatisfiable constraint, to simplify initialisations and assignments.
Definition: apxx_lincons0.hh:28
apron::lincons1::print
void print(FILE *stream=stdout) const
Prints to a C stream.
Definition: apxx_lincons1_inline.hh:250
apron::lincons0
Level 0 linear constraint (ap_lincons0_t wrapper).
Definition: apxx_lincons0.hh:43
apron::lincons0_array
Array of linear constraints (ap_lincons0_array_t wrapper).
Definition: apxx_lincons0.hh:341
apron::scalar
Scalar (ap_scalar_t wrapper).
Definition: apxx_scalar.hh:89
apron::lincons1_array::~lincons1_array
~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
apron
Definition: apxx_abstract0.hh:27
apron::lincons1_array::get_environment
environment get_environment() const
Returns the environment shared by all constraints (with incremented reference count).
Definition: apxx_lincons1_inline.hh:431
apron::lincons1::extend_environment
void extend_environment(const environment &e)
Extends the environment of the expression.
Definition: apxx_lincons1_inline.hh:120
apron::lincons1::get_cst
coeff & get_cst()
Returns a (modifiable) reference to the constant coefficient.
Definition: apxx_lincons1_inline.hh:197
apron::lincons1::get_modulo
scalar & get_modulo()
Returns a (modifiable) reference to the auxiliary scalar.
Definition: apxx_lincons1_inline.hh:175
apxx_environment.hh