APRONXX 0.9.14
/builddir/build/BUILD/apron-0.9.15-build/apron-0.9.15/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
25namespace apron {
26
27
28/* ================================= */
29/* lincons1 */
30/* ================================= */
31
32
40class lincons1 : public use_malloc {
41
42protected:
43
44 ap_lincons1_t l;
45
47 lincons1(ap_lincons1_t p);
48
49
50 friend class lincons1_array;
51
52public:
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
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
332
333protected:
334
335 ap_lincons1_array_t a;
336
338 lincons1_array(ap_lincons1_array_t& a);
339
340 friend class abstract1;
341
342public:
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
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
398
400
401
402 /* assignment */
403 /* ========== */
404
407
410
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
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
friend std::ostream & operator<<(std::ostream &os, const lincons1_array &s)
Printing.
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
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 coeff & operator[](const var &v) const
Returns a reference to the coefficient corresponding to the given variable name.
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
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
coeff & operator[](const var &v)
Returns a (modifiable) reference to the coefficient corresponding to the given variable name.
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()
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