APRONXX  0.9.12
/home/mine/apron/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 
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 
147 
148  /* dimension operations */
149  /* ==================== */
150 
153 
158  void extend_environment(const environment& e);
159 
162 
163  /* access */
164  /* ====== */
165 
168 
173  const lincons0& get_lincons0() const;
174 
177 
182  size_t size() const;
188  ap_constyp_t& get_constyp();
189 
194  const ap_constyp_t& get_constyp() const;
195 
197  bool has_modulo() const;
204  bool has_linexpr() const;
210  scalar& get_modulo();
211 
216  const scalar& get_modulo() const;
217 
222  linexpr1 get_linexpr() const;
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 
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  /* ===== */
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 
302  /* C-level compatibility */
303  /* ===================== */
307 
309  const ap_lincons1_t* get_ap_lincons1_t() const;
310 
312  ap_lincons1_t* get_ap_lincons1_t();
313 
315 };
316 
318 
319 /* ================================= */
320 /* lincons1_array */
321 /* ================================= */
322 
323 
331 class lincons1_array : public use_malloc {
332 
333 protected:
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 
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 
434  void resize(size_t size);
435 
440  void extend_environment(const environment& e);
441 
443 
444 
445  /* access */
446  /* ====== */
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 */
bool has_modulo() const
Whether the constraint has a valid auxiliary scalar (used in modulo constraints).
Definition: apxx_lincons1.hh:166
lincons1(ap_lincons1_t p)
Internal use only. Shallow copy (no copy of lincons0 or environment).
Definition: apxx_lincons1.hh:28
Definition: apxx_abstract0.hh:27
Array of linear constraints (ap_lincons1_array_t wrapper).
Definition: apxx_lincons1.hh:331
const lincons0_array & get_lincons0_array() const
Returns a reference to the underlying lincons0_array.
Definition: apxx_lincons1.hh:437
friend std::ostream & operator<<(std::ostream &os, const lincons1 &s)
Printing.
Definition: apxx_lincons1.hh:238
const lincons0 & get_lincons0() const
Returns a reference to the underlying lincons0.
Definition: apxx_lincons1.hh:141
coeff & get_cst()
Returns a (modifiable) reference to the constant coefficient.
Definition: apxx_lincons1.hh:198
void extend_environment(const environment &e)
Extends the environment of all expressions in array.
Definition: apxx_lincons1.hh:415
Variable name (ap_var_t wrapper).
Definition: apxx_var.hh:39
environment get_environment() const
Returns the environment shared by all constraints (with incremented reference count).
Definition: apxx_lincons1.hh:432
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.hh:500
bool is_unsat() const
Whether the constraint is unsatisfiable.
Definition: apxx_lincons1.hh:260
linexpr1 get_linexpr() const
Returns a copy of the underlying linear expression.
Definition: apxx_lincons1.hh:190
void resize(size_t size)
Resizes the array.
Definition: apxx_lincons1.hh:410
size_t size() const
Returns the size of the array.
Definition: apxx_lincons1.hh:427
const ap_lincons1_t * get_ap_lincons1_t() const
Returns a pointer to the internal APRON object stored in *this.
Definition: apxx_lincons1.hh:279
lincons1 get(size_t i) const
Returns a copy of the constraint at index i.
Definition: apxx_lincons1.hh:447
lincons1_array(const std::vector< lincons1 > &x)
Creates a lincons1_array from an vector (of size >0) of constraints of the given size (copied).
Definition: apxx_lincons1.hh:343
void set_modulo(const scalar &c)
Sets the auxiliary scalar modulo to c (copied).
Definition: apxx_lincons1.hh:107
lincons1 & operator=(const lincons1 &x)
Makes a (deep) copy.
Definition: apxx_lincons1.hh:91
friend std::ostream & operator<<(std::ostream &os, const lincons1_array &s)
Printing.
Definition: apxx_lincons1.hh:482
bool is_linear() const
Whether the underlying linear expression has only scalar coefficients.
Definition: apxx_lincons1.hh:265
environment get_environment() const
Returns the environment of the constraint (with incremented reference count).
Definition: apxx_lincons1.hh:136
size_t size() const
Returns the size of the underlying linear expression.
Definition: apxx_lincons1.hh:151
ap_lincons1_array_t a
Structure managed by APRON.
Definition: apxx_lincons1.hh:335
ap_constyp_t & get_constyp()
Returns a (modifiable) reference to the constraint type.
Definition: apxx_lincons1.hh:156
lincons1(const environment &e, unsat x)
Makes an unsatisfiable constraint (-1>=0).
Definition: apxx_lincons1.hh:57
void set_linexpr(const linexpr1 &c)
Sets the underlying linear expression to c (copied).
Definition: apxx_lincons1.hh:112
Level 1 environment (ap_environment_t wrapper).
Definition: apxx_environment.hh:51
bool is_quasilinear() const
Whether the underlying linear expression has only scalar coefficients, except maybe for the constant ...
Definition: apxx_lincons1.hh:270
ap_lincons1_t l
Structure managed by APRON.
Definition: apxx_lincons1.hh:44
bool has_linexpr() const
Whether the constraint has a valid linear expression.
Definition: apxx_lincons1.hh:171
~lincons1()
Frees all space for the expression and coefficients, and decrements the reference count of the enviro...
Definition: apxx_lincons1.hh:82
Level 1 linear constraint (ap_lincons1_t wrapper).
Definition: apxx_lincons1.hh:40
void print(FILE *stream=stdout) const
Prints to a C stream.
Definition: apxx_lincons1.hh:491
coeff & operator[](const var &v)
Returns a (modifiable) reference to the coefficient corresponding to the given variable name.
Definition: apxx_lincons1.hh:212
Level 1 linear expression (ap_linexpr1_t wrapper).
Definition: apxx_linexpr1.hh:39
Coefficient (ap_coeff_t wrapper).
Definition: apxx_coeff.hh:36
Level 1 abstract value (ap_abstract1_t wrapper).
Definition: apxx_abstract1.hh:42
Inherited by most wrappers to map new and delete to malloc and free.
Definition: apxx_scalar.hh:69
lincons1_array & operator=(const lincons1_array &x)
(Deep) copy.
Definition: apxx_lincons1.hh:366
Array of linear constraints (ap_lincons0_array_t wrapper).
Definition: apxx_lincons0.hh:341
void print(FILE *stream=stdout) const
Prints to a C stream.
Definition: apxx_lincons1.hh:251
scalar & get_modulo()
Returns a (modifiable) reference to the auxiliary scalar.
Definition: apxx_lincons1.hh:176
~lincons1_array()
Frees the space used by the array and all its constraints, and decrements the reference count of the ...
Definition: apxx_lincons1.hh:357
const coeff & operator[](const var &v) const
Returns a reference to the coefficient corresponding to the given variable name.
Definition: apxx_lincons1.hh:223
lincons1_array(ap_lincons1_array_t &a)
Internal use only. Shallow copy (no copy of lincons0_array or environment).
Definition: apxx_lincons1.hh:301
void set(size_t i, const lincons1 &x)
Changes the constraint at index i.
Definition: apxx_lincons1.hh:454
ap_lincons1_array_t * get_ap_lincons1_array_t()
Returns a pointer to the internal APRON object stored in *this.
Definition: apxx_lincons1.hh:505
Unsatisfiable constraint, to simplify initialisations and assignments.
Definition: apxx_lincons0.hh:28
Level 0 linear constraint (ap_lincons0_t wrapper).
Definition: apxx_lincons0.hh:43
void extend_environment(const environment &e)
Extends the environment of the expression.
Definition: apxx_lincons1.hh:121
Scalar (ap_scalar_t wrapper).
Definition: apxx_scalar.hh:89