APRONXX  0.9.12
/builddir/build/BUILD/apron-0.9.13/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 
24 namespace apron {
25 
26 
27 
28 /* ================================= */
29 /* generator1 */
30 /* ================================= */
31 
32 
40 class generator1 : public use_malloc {
41 
42 protected:
43 
44  ap_generator1_t l;
45 
47  generator1(ap_generator1_t p);
48 
49  friend class generator1_array;
50 
51 public:
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 
117  generator1& operator= (const generator1& x);
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 
272 class generator1_array : public use_malloc {
273 
274 protected:
275 
276  ap_generator1_array_t a;
277 
279  generator1_array(ap_generator1_array_t& a);
280 
281  friend class abstract1;
282 
283 public:
284 
285  /* constructors */
286  /* ============ */
287 
290 
294  generator1_array(const environment& e, const generator0_array& x);
295 
301  generator1_array(const environment& e, size_t size);
302 
305 
310  generator1_array(const generator1_array& x, const environment& e);
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 
399  const generator0_array& get_generator0_array() const;
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 
467 #include "apxx_generator1_inline.hh"
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
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
friend std::ostream & operator<<(std::ostream &os, const generator1_array &s)
Printing.
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
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.
ap_generator1_t l
Structure managed by APRON.
Definition: apxx_generator1.hh:44
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
friend std::ostream & operator<<(std::ostream &os, const generator1 &s)
Printing.
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
generator1(const environment &e, ap_gentyp_t gentyp=AP_GEN_RAY)
Creates a new generator from an empty linear expression.
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
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