APRONXX  0.9.12
/builddir/build/BUILD/apron-0.9.12/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 */
apron::generator1_array::extend_environment
void extend_environment(const environment &e)
Extends the environment of all generators in the array.
Definition: apxx_generator1_inline.hh:351
apron::generator1_array::resize
void resize(size_t size)
Resizes the array.
Definition: apxx_generator1_inline.hh:346
apron::generator1::~generator1
~generator1()
Frees all space for the generator, and decrements the reference count of the environment.
Definition: apxx_generator1_inline.hh:70
apron::environment
Level 1 environment (ap_environment_t wrapper).
Definition: apxx_environment.hh:51
apron::generator1::set_linexpr
void set_linexpr(const linexpr1 &c)
Sets the underlying linear expression to c (copied).
Definition: apxx_generator1_inline.hh:87
apxx_linexpr1.hh
apron::coeff
Coefficient (ap_coeff_t wrapper).
Definition: apxx_coeff.hh:36
apxx_generator0.hh
apron::generator1::print
void print(FILE *stream=stdout) const
Prints to a C stream.
Definition: apxx_generator1_inline.hh:206
apron::var
Variable name (ap_var_t wrapper).
Definition: apxx_var.hh:39
apron::generator1::extend_environment
void extend_environment(const environment &e)
Extends the environment of the generator.
Definition: apxx_generator1_inline.hh:96
apron::generator1::get_generator0
const generator0 & get_generator0() const
Returns a reference to the underlying generator0.
Definition: apxx_generator1_inline.hh:116
apron::abstract1
Level 1 abstract value (ap_abstract1_t wrapper).
Definition: apxx_abstract1.hh:42
apron::linexpr1
Level 1 linear expression (ap_linexpr1_t wrapper).
Definition: apxx_linexpr1.hh:39
apron::generator1_array
Array of generators (ap_generator1_array_t wrapper).
Definition: apxx_generator1.hh:272
apron::generator1_array::operator=
generator1_array & operator=(const generator1_array &x)
(Deep) copy.
Definition: apxx_generator1_inline.hh:302
apron::use_malloc
Inherited by most wrappers to map new and delete to malloc and free.
Definition: apxx_scalar.hh:69
apron::generator0
Level 0 generator (ap_generator0_t wrapper).
Definition: apxx_generator0.hh:39
apron::generator1_array::generator1_array
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
apron::generator1::get_ap_generator1_t
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
apron::generator1_array::get
generator1 get(size_t i) const
Returns a copy of the generator at index i.
Definition: apxx_generator1_inline.hh:383
apron::generator1_array::a
ap_generator1_array_t a
Structure managed by APRON.
Definition: apxx_generator1.hh:276
apron::generator1::get_gentyp
ap_gentyp_t & get_gentyp()
Returns a (modifiable) reference to the constraint type.
Definition: apxx_generator1_inline.hh:131
apron::generator1::operator[]
coeff & operator[](const var &v)
Returns a (modifiable) reference to the coefficient corresponding to the given variable name.
apron::generator1_array::size
size_t size() const
Returns the size of the array.
Definition: apxx_generator1_inline.hh:363
apron::generator1::size
size_t size() const
Returns the size of the underlying linear expression.
Definition: apxx_generator1_inline.hh:126
apron::generator1_array::print
void print(FILE *stream=stdout) const
Prints to a C stream.
Definition: apxx_generator1_inline.hh:427
apron::generator1_array::get_environment
environment get_environment() const
Returns the environment shared by all generators (with incremented reference count).
Definition: apxx_generator1_inline.hh:368
apron::generator1_array::set
void set(size_t i, const generator1 &x)
Changes the generator at index i.
Definition: apxx_generator1_inline.hh:390
apron::generator1::get_linexpr
linexpr1 get_linexpr() const
Returns a copy of the underlying linear expression.
Definition: apxx_generator1_inline.hh:146
apron::generator1::has_linexpr
bool has_linexpr() const
Whether the generator has a valid linear expression.
Definition: apxx_generator1_inline.hh:141
apron::generator1::generator1
generator1(ap_generator1_t p)
Internal use only. Shallow copy (no copy of generator0 or environment).
Definition: apxx_generator1_inline.hh:28
apron::generator1::operator<<
friend std::ostream & operator<<(std::ostream &os, const generator1 &s)
Printing.
apron::generator1::get_environment
environment get_environment() const
Returns the environment of the generator (with incremented reference count).
Definition: apxx_generator1_inline.hh:111
apron::generator1::l
ap_generator1_t l
Structure managed by APRON.
Definition: apxx_generator1.hh:44
apron::generator1::get_cst
coeff & get_cst()
Returns a (modifiable) reference to the constant coefficient.
Definition: apxx_generator1_inline.hh:154
apron::generator1_array::operator<<
friend std::ostream & operator<<(std::ostream &os, const generator1_array &s)
Printing.
apron::generator1_array::~generator1_array
~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
apxx_generator1_inline.hh
apron
Definition: apxx_abstract0.hh:27
apron::generator0_array
Array of generators (ap_generator0_array_t wrapper).
Definition: apxx_generator0.hh:214
apron::generator1_array::get_ap_generator1_array_t
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
apron::generator1::operator=
generator1 & operator=(const generator1 &x)
Makes a (deep) copy.
Definition: apxx_generator1_inline.hh:79
apron::generator1_array::get_generator0_array
const generator0_array & get_generator0_array() const
Returns a reference to the underlying generator0_array.
Definition: apxx_generator1_inline.hh:373
apxx_environment.hh
apron::generator1
Level 1 generator (ap_generator1_t wrapper).
Definition: apxx_generator1.hh:40