APRONXX  0.9.12
/home/mine/apron/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  /* ========== */
115 
118 
127  void set_linexpr(const linexpr1& c);
128 
130 
131 
132  /* dimension operations */
133  /* ==================== */
134 
143 
145 
146 
147  /* access */
148  /* ====== */
149 
152 
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;
213  coeff& operator[](const var& v);
214 
220  const coeff& operator[](const var& v) const;
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 
239 
240  /* TODO: intelligent constructors */
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();
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);
281  friend class abstract1;
282 
283 public:
284 
285  /* constructors */
286  /* ============ */
287 
290 
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);
366 
367 
368  /* dimension operations */
369  /* ==================== */
370 
373 
375  void resize(size_t size);
376 
381  void extend_environment(const environment& e);
382 
385 
386  /* access */
387  /* ====== */
388 
393  size_t size() const;
394 
397 
399  const generator0_array& get_generator0_array() const;
400 
408  generator1 get(size_t i) const;
409 
415  void set(size_t i, const generator1& x);
416 
418 
420  /* conversion */
421  /* ========== */
422 
425 
427  operator std::vector<generator1>() const;
430 
431 
432  /* print */
433  /* ===== */
434 
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 */
Definition: apxx_abstract0.hh:27
coeff & operator[](const var &v)
Returns a (modifiable) reference to the coefficient corresponding to the given variable name.
Definition: apxx_generator1.hh:169
generator1(const generator1 &x, const environment &e)
Makes a (deep) copy of x and extends its environment.
Definition: apxx_generator1.hh:56
coeff & get_cst()
Returns a (modifiable) reference to the constant coefficient.
Definition: apxx_generator1.hh:155
const generator0 & get_generator0() const
Returns a reference to the underlying generator0.
Definition: apxx_generator1.hh:117
Variable name (ap_var_t wrapper).
Definition: apxx_var.hh:39
void print(FILE *stream=stdout) const
Prints to a C stream.
Definition: apxx_generator1.hh:207
void set_linexpr(const linexpr1 &c)
Sets the underlying linear expression to c (copied).
Definition: apxx_generator1.hh:88
const ap_generator1_t * get_ap_generator1_t() const
Returns a pointer to the internal APRON object stored in *this.
Definition: apxx_generator1.hh:216
Level 1 generator (ap_generator1_t wrapper).
Definition: apxx_generator1.hh:40
Array of generators (ap_generator0_array_t wrapper).
Definition: apxx_generator0.hh:214
const generator0_array & get_generator0_array() const
Returns a reference to the underlying generator0_array.
Definition: apxx_generator1.hh:374
ap_gentyp_t & get_gentyp()
Returns a (modifiable) reference to the constraint type.
Definition: apxx_generator1.hh:132
environment get_environment() const
Returns the environment of the generator (with incremented reference count).
Definition: apxx_generator1.hh:112
size_t size() const
Returns the size of the array.
Definition: apxx_generator1.hh:364
Level 1 environment (ap_environment_t wrapper).
Definition: apxx_environment.hh:51
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.hh:437
size_t size() const
Returns the size of the underlying linear expression.
Definition: apxx_generator1.hh:127
friend std::ostream & operator<<(std::ostream &os, const generator1_array &s)
Printing.
Definition: apxx_generator1.hh:419
void resize(size_t size)
Resizes the array.
Definition: apxx_generator1.hh:347
generator1 get(size_t i) const
Returns a copy of the generator at index i.
Definition: apxx_generator1.hh:384
friend std::ostream & operator<<(std::ostream &os, const generator1 &s)
Printing.
Definition: apxx_generator1.hh:192
Level 1 linear expression (ap_linexpr1_t wrapper).
Definition: apxx_linexpr1.hh:39
void set(size_t i, const generator1 &x)
Changes the generator at index i.
Definition: apxx_generator1.hh:391
Coefficient (ap_coeff_t wrapper).
Definition: apxx_coeff.hh:36
Level 1 abstract value (ap_abstract1_t wrapper).
Definition: apxx_abstract1.hh:42
linexpr1 get_linexpr() const
Returns a copy of the underlying linear expression.
Definition: apxx_generator1.hh:147
Inherited by most wrappers to map new and delete to malloc and free.
Definition: apxx_scalar.hh:69
generator1_array & operator=(const generator1_array &x)
(Deep) copy.
Definition: apxx_generator1.hh:303
~generator1()
Frees all space for the generator, and decrements the reference count of the environment.
Definition: apxx_generator1.hh:71
~generator1_array()
Frees the space used by the array and all its generators, and decrements the reference count of the e...
Definition: apxx_generator1.hh:294
bool has_linexpr() const
Whether the generator has a valid linear expression.
Definition: apxx_generator1.hh:142
ap_generator1_t l
Structure managed by APRON.
Definition: apxx_generator1.hh:44
environment get_environment() const
Returns the environment shared by all generators (with incremented reference count).
Definition: apxx_generator1.hh:369
void print(FILE *stream=stdout) const
Prints to a C stream.
Definition: apxx_generator1.hh:428
Level 0 generator (ap_generator0_t wrapper).
Definition: apxx_generator0.hh:39
generator1_array(ap_generator1_array_t &a)
Internal use only. Shallow copy (no copy of generator0_array or environment).
Definition: apxx_generator1.hh:238
Array of generators (ap_generator1_array_t wrapper).
Definition: apxx_generator1.hh:272
void extend_environment(const environment &e)
Extends the environment of the generator.
Definition: apxx_generator1.hh:97
void extend_environment(const environment &e)
Extends the environment of all generators in the array.
Definition: apxx_generator1.hh:352
generator1(ap_generator1_t p)
Internal use only. Shallow copy (no copy of generator0 or environment).
Definition: apxx_generator1.hh:29
ap_generator1_array_t a
Structure managed by APRON.
Definition: apxx_generator1.hh:276
generator1 & operator=(const generator1 &x)
Makes a (deep) copy.
Definition: apxx_generator1.hh:80