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
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.
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
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