APRONXX 0.9.14
/builddir/build/BUILD/apron-0.9.15-build/apron-0.9.15/apronxx/apxx_generator1.hh
Go to the documentation of this file.
1/* -*- C++ -*-
2 * apxx_generator1.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_GENERATOR1_HH
17#define __APXX_GENERATOR1_HH
18
19#include "ap_generator1.h"
20#include "apxx_environment.hh"
21#include "apxx_generator0.hh"
22#include "apxx_linexpr1.hh"
23
24namespace apron {
25
26
27
28/* ================================= */
29/* generator1 */
30/* ================================= */
31
32
40class generator1 : public use_malloc {
41
42protected:
43
44 ap_generator1_t l;
45
47 generator1(ap_generator1_t p);
48
49 friend class generator1_array;
50
51public:
52
53
54 /* constructors */
55 /* ============ */
56
59
63 generator1(const environment& e, const generator0& x);
64
72 generator1(const environment& e, ap_gentyp_t gentyp=AP_GEN_RAY);
73
82 generator1(ap_gentyp_t gentyp, const linexpr1& lin);
83
85 generator1(const generator1& x);
86
91 generator1(const generator1& x, const environment& e);
92
94
95
96 /* destructor */
97 /* ========== */
98
101
105 ~generator1();
106
108
109
110 /* assignment */
111 /* ========== */
112
115
118
127 void set_linexpr(const linexpr1& c);
128
130
131
132 /* dimension operations */
133 /* ==================== */
134
137
142 void extend_environment(const environment& e);
143
145
146
147 /* access */
148 /* ====== */
149
152
155
157 const generator0& get_generator0() const;
158
161
166 size_t size() const;
167
168
169 /* get */
170
175 ap_gentyp_t& get_gentyp();
176
181 const ap_gentyp_t& get_gentyp() const;
182
188 bool has_linexpr() const;
189
194 linexpr1 get_linexpr() const;
195
200 coeff& get_cst();
201
206 const coeff& get_cst() const;
207
213 coeff& operator[](const var& v);
214
220 const coeff& operator[](const var& v) const;
221
223
224
225 /* print */
226 /* ===== */
227
230
232 friend std::ostream& operator<< (std::ostream& os, const generator1& s);
233
235 void print(FILE* stream=stdout) const;
236
238
239
240 /* TODO: intelligent constructors */
241
242
243 /* C-level compatibility */
244 /* ===================== */
245
248
250 const ap_generator1_t* get_ap_generator1_t() const;
251
253 ap_generator1_t* get_ap_generator1_t();
254
256};
257
258
259
260/* ================================= */
261/* generator1_array */
262/* ================================= */
263
264
273
274protected:
275
276 ap_generator1_array_t a;
277
279 generator1_array(ap_generator1_array_t& a);
280
281 friend class abstract1;
282
283public:
284
285 /* constructors */
286 /* ============ */
287
290
295
301 generator1_array(const environment& e, size_t size);
302
305
311
317 generator1_array(size_t size, const generator1 x[]);
318
324 generator1_array(const std::vector<generator1>& x);
325
327
328
329 /* destructor */
330 /* ========== */
331
334
339
341
342
343 /* assignment */
344 /* ========== */
345
348
351
358
363 generator1_array& operator= (const std::vector<generator1>& x);
364
366
367
368 /* dimension operations */
369 /* ==================== */
370
373
375 void resize(size_t size);
376
381 void extend_environment(const environment& e);
382
384
385
386 /* access */
387 /* ====== */
388
391
393 size_t size() const;
394
397
400
403
408 generator1 get(size_t i) const;
409
415 void set(size_t i, const generator1& x);
416
418
419
420 /* conversion */
421 /* ========== */
422
425
427 operator std::vector<generator1>() const;
428
430
431
432 /* print */
433 /* ===== */
434
437
443 friend std::ostream& operator<< (std::ostream& os, const generator1_array& s);
444
446 void print(FILE* stream=stdout) const;
447
449
450
451 /* C-level compatibility */
452 /* ===================== */
453
456
458 const ap_generator1_array_t* get_ap_generator1_array_t() const;
459
461 ap_generator1_array_t* get_ap_generator1_array_t();
462
464
465};
466
468
469}
470
471#endif /* __APXX_GENERATOR1_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 generators (ap_generator0_array_t wrapper).
Definition apxx_generator0.hh:214
Level 0 generator (ap_generator0_t wrapper).
Definition apxx_generator0.hh:39
Array of generators (ap_generator1_array_t wrapper).
Definition apxx_generator1.hh:272
ap_generator1_array_t a
Structure managed by APRON.
Definition apxx_generator1.hh:276
size_t size() const
Returns the size of the array.
Definition apxx_generator1_inline.hh:363
environment get_environment() const
Returns the environment shared by all generators (with incremented reference count).
Definition apxx_generator1_inline.hh:368
void resize(size_t size)
Resizes the array.
Definition apxx_generator1_inline.hh:346
void print(FILE *stream=stdout) const
Prints to a C stream.
Definition apxx_generator1_inline.hh:427
void extend_environment(const environment &e)
Extends the environment of all generators in the array.
Definition apxx_generator1_inline.hh:351
friend std::ostream & operator<<(std::ostream &os, const generator1_array &s)
Printing.
generator1_array(ap_generator1_array_t &a)
Internal use only. Shallow copy (no copy of generator0_array or environment).
Definition apxx_generator1_inline.hh:237
generator1_array(size_t size, const generator1 x[])
Creates a generator1_array from an array (of size >0) of generators of the given size (copied).
const ap_generator1_array_t * get_ap_generator1_array_t() const
Returns a pointer to the internal APRON object stored in *this.
Definition apxx_generator1_inline.hh:436
generator1_array & operator=(const generator1_array &x)
(Deep) copy.
Definition apxx_generator1_inline.hh:302
~generator1_array()
Frees the space used by the array and all its generators, and decrements the reference count of the e...
Definition apxx_generator1_inline.hh:293
generator1 get(size_t i) const
Returns a copy of the generator at index i.
Definition apxx_generator1_inline.hh:383
void set(size_t i, const generator1 &x)
Changes the generator at index i.
Definition apxx_generator1_inline.hh:390
const generator0_array & get_generator0_array() const
Returns a reference to the underlying generator0_array.
Definition apxx_generator1_inline.hh:373
Level 1 generator (ap_generator1_t wrapper).
Definition apxx_generator1.hh:40
ap_gentyp_t & get_gentyp()
Returns a (modifiable) reference to the constraint type.
Definition apxx_generator1_inline.hh:131
bool has_linexpr() const
Whether the generator has a valid linear expression.
Definition apxx_generator1_inline.hh:141
generator1 & operator=(const generator1 &x)
Makes a (deep) copy.
Definition apxx_generator1_inline.hh:79
coeff & get_cst()
Returns a (modifiable) reference to the constant coefficient.
Definition apxx_generator1_inline.hh:154
void set_linexpr(const linexpr1 &c)
Sets the underlying linear expression to c (copied).
Definition apxx_generator1_inline.hh:87
ap_generator1_t l
Structure managed by APRON.
Definition apxx_generator1.hh:44
const coeff & operator[](const var &v) const
Returns a reference to the coefficient corresponding to the given variable name.
coeff & operator[](const var &v)
Returns a (modifiable) reference to the coefficient corresponding to the given variable name.
void extend_environment(const environment &e)
Extends the environment of the generator.
Definition apxx_generator1_inline.hh:96
linexpr1 get_linexpr() const
Returns a copy of the underlying linear expression.
Definition apxx_generator1_inline.hh:146
const ap_generator1_t * get_ap_generator1_t() const
Returns a pointer to the internal APRON object stored in *this.
Definition apxx_generator1_inline.hh:215
environment get_environment() const
Returns the environment of the generator (with incremented reference count).
Definition apxx_generator1_inline.hh:111
void print(FILE *stream=stdout) const
Prints to a C stream.
Definition apxx_generator1_inline.hh:206
generator1(ap_generator1_t p)
Internal use only. Shallow copy (no copy of generator0 or environment).
Definition apxx_generator1_inline.hh:28
const generator0 & get_generator0() const
Returns a reference to the underlying generator0.
Definition apxx_generator1_inline.hh:116
~generator1()
Frees all space for the generator, and decrements the reference count of the environment.
Definition apxx_generator1_inline.hh:70
size_t size() const
Returns the size of the underlying linear expression.
Definition apxx_generator1_inline.hh:126
friend std::ostream & operator<<(std::ostream &os, const generator1 &s)
Printing.
Level 1 linear expression (ap_linexpr1_t wrapper).
Definition apxx_linexpr1.hh:39
Variable name (ap_var_t wrapper).
Definition apxx_var.hh:39
Definition apxx_abstract0.hh:27
Inherited by most wrappers to map new and delete to malloc and free.
Definition apxx_scalar.hh:69