APRONXX 0.9.12
/builddir/build/BUILD/apron-0.9.13/apronxx/apxx_generator0.hh
Go to the documentation of this file.
1/* -*- C++ -*-
2 * apxx_generator0.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_GENERATOR0_HH
17#define __APXX_GENERATOR0_HH
18
19#include <vector>
20#include "ap_generator0.h"
21#include "apxx_linexpr0.hh"
22
23
24namespace apron {
25
26
27
28/* ================================= */
29/* generator0 */
30/* ================================= */
31
32
39class generator0 : public use_malloc {
40
41protected:
42
43 ap_generator0_t l;
44
46 generator0(ap_generator0_t& l) : l(l) {}
47
48 friend class abstract0;
49
50public:
51
52
53 /* constructors */
54 /* ============ */
55
62 generator0(ap_gentyp_t gentyp=AP_GEN_RAY);
63
71 generator0(ap_gentyp_t gentyp, const linexpr0& lin);
72
74 generator0(const generator0& x);
75
77 generator0(const generator0& x, const dimchange& d);
78
80 generator0(const generator0& x, const dimperm& d);
81
82
83 /* destructor */
84 /* ========== */
85
88
89
90 /* assignment */
91 /* ========== */
92
95
96
97 /* dimension operations */
98 /* ==================== */
99
104 void resize(size_t size);
105
110 void add_dimensions(const dimchange& d);
111
116 void permute_dimensions(const dimperm& d);
117
118
119 /* access */
120 /* ====== */
121
122 /* size */
123
128 size_t size() const;
129
130
131 /* get */
132
137 ap_gentyp_t& get_gentyp();
138
143 const ap_gentyp_t& get_gentyp() const;
144
150 bool has_linexpr() const;
151
157
162 const linexpr0& get_linexpr() const;
163
170 void set_linexpr(const linexpr0& c);
171
172
173 /* print */
174 /* ===== */
175
182 friend std::ostream& operator<< (std::ostream& os, const generator0& s);
183
185 void print(char** name_of_dim=NULL, FILE* stream=stdout) const;
186
187
188 /* TODO: intelligent constructors */
189
190
191 /* C-level compatibility */
192 /* ===================== */
193
195 const ap_generator0_t* get_ap_generator0_t() const;
196
198 ap_generator0_t* get_ap_generator0_t();
199
200};
201
202
203
204
205/* ================================= */
206/* generator0_array */
207/* ================================= */
208
209
215
216protected:
217
218 ap_generator0_array_t a;
219
221 generator0_array(ap_generator0_array_t& a) : a(a) {}
222
223 friend class abstract0;
224 friend class generator1_array;
225
226public:
227
228 /* constructors */
229 /* ============ */
230
233
238 generator0_array(size_t size);
239
242
244 generator0_array(const generator0_array& x, const dimchange& d);
245
247 generator0_array(const generator0_array& x, const dimperm& d);
248
250 generator0_array(size_t size, const generator0 x[]);
251
253 generator0_array(const std::vector<generator0>& x);
254
256
257
258 /* destructor */
259 /* ========== */
260
263
266
268
269
270 /* assignment */
271 /* ========== */
272
275
278
284
286 generator0_array& operator= (const std::vector<generator0>& x);
287
289
290
291 /* dimension operations */
292 /* ==================== */
293
296
298 void resize(size_t size);
299
301 void add_dimensions(const dimchange& d);
302
304 void permute_dimensions(const dimperm& d);
305
307
308
309 /* access */
310 /* ====== */
311
314
316 size_t size() const;
317
320
322 const generator0* contents() const;
323
325 generator0& operator[](size_t i);
326
328 const generator0& operator[](size_t i) const;
329
334 generator0& get(size_t i);
335
340 const generator0& get(size_t i) const;
341
343
344
345 /* conversion */
346 /* ========== */
347
350
352 operator std::vector<generator0>() const;
353
355
356
357 /* print */
358 /* ===== */
359
362
369 friend std::ostream& operator<< (std::ostream& os, const generator0_array& s);
370
372 void print(char** name_of_dim=NULL, FILE* stream=stdout) const;
373
375
376
377 /* C-level compatibility */
378 /* ===================== */
379
382
384 const ap_generator0_array_t* get_ap_generator0_array_t() const;
385
387 ap_generator0_array_t* get_ap_generator0_array_t();
388
390};
391
392
394
395}
396
397#endif /* __APXX_GENERATOR0_HH */
Level 0 abstract value (ap_abstract0_t* wrapper).
Definition: apxx_abstract0.hh:78
Dimension change object (ap_dimchange_t wrapper).
Definition: apxx_dimension.hh:102
Dimension permutation object (ap_dimperm_t wrapper).
Definition: apxx_dimension.hh:292
Array of generators (ap_generator0_array_t wrapper).
Definition: apxx_generator0.hh:214
generator0 & get(size_t i)
Returns a (modifiable) reference to an element (bound-checked).
Definition: apxx_generator0_inline.hh:330
void permute_dimensions(const dimperm &d)
Applies permute_dimensions to all generators in the array.
Definition: apxx_generator0_inline.hh:296
size_t size() const
Returns the size of the array.
Definition: apxx_generator0_inline.hh:305
ap_generator0_array_t a
Structure managed by APRON.
Definition: apxx_generator0.hh:218
generator0_array(ap_generator0_array_t &a)
Internal use only. Performs a shallow copy and takes ownership of the contents.
Definition: apxx_generator0.hh:221
void resize(size_t size)
Resizes the array.
Definition: apxx_generator0_inline.hh:286
generator0 & operator[](size_t i)
Returns a (modifiable) reference to an element, no bound checking.
Definition: apxx_generator0_inline.hh:320
generator0_array & operator=(const generator0_array &x)
(Deep) copy.
Definition: apxx_generator0_inline.hh:252
~generator0_array()
Frees the space used by the array and all its generators.
Definition: apxx_generator0_inline.hh:243
generator0 * contents()
Returns a pointer to the start of the internal array holding the generators.
Definition: apxx_generator0_inline.hh:310
friend std::ostream & operator<<(std::ostream &os, const generator0_array &s)
Printing.
void add_dimensions(const dimchange &d)
Applies add_dimensions to all generators in the array.
Definition: apxx_generator0_inline.hh:291
const ap_generator0_array_t * get_ap_generator0_array_t() const
Returns a pointer to the internal APRON object stored in *this.
Definition: apxx_generator0_inline.hh:377
void print(char **name_of_dim=NULL, FILE *stream=stdout) const
Prints to a C stream.
Definition: apxx_generator0_inline.hh:368
Level 0 generator (ap_generator0_t wrapper).
Definition: apxx_generator0.hh:39
generator0(ap_generator0_t &l)
Internal use only. Performs a shallow copy and takes ownership of the contents.
Definition: apxx_generator0.hh:46
void set_linexpr(const linexpr0 &c)
Sets the underlying linear expression to c (copied).
Definition: apxx_generator0_inline.hh:146
generator0 & operator=(const generator0 &x)
(Deep) copy.
Definition: apxx_generator0_inline.hh:73
void permute_dimensions(const dimperm &d)
Applies a permutation to the underlying linear expression.
Definition: apxx_generator0_inline.hh:98
bool has_linexpr() const
Returns whether the generator has a valid linear expression.
Definition: apxx_generator0_inline.hh:129
ap_gentyp_t & get_gentyp()
Returns a (modifiable) reference to the constraint type.
Definition: apxx_generator0_inline.hh:119
void resize(size_t size)
Resizes the underlying linear expression.
Definition: apxx_generator0_inline.hh:86
const ap_generator0_t * get_ap_generator0_t() const
Returns a pointer to the internal APRON object stored in *this.
Definition: apxx_generator0_inline.hh:181
linexpr0 & get_linexpr()
Returns a (modifiable) reference to the underlying linear expression.
Definition: apxx_generator0_inline.hh:134
void print(char **name_of_dim=NULL, FILE *stream=stdout) const
Prints to a C stream.
Definition: apxx_generator0_inline.hh:172
ap_generator0_t l
Structure managed by APRON.
Definition: apxx_generator0.hh:43
size_t size() const
Returns the size of the underlying linear expression.
Definition: apxx_generator0_inline.hh:110
friend std::ostream & operator<<(std::ostream &os, const generator0 &s)
Printing.
void add_dimensions(const dimchange &d)
Changes the dimension of the underlying linear expression.
Definition: apxx_generator0_inline.hh:92
~generator0()
Frees the generator, including the embedded linear expression.
Definition: apxx_generator0_inline.hh:64
Array of generators (ap_generator1_array_t wrapper).
Definition: apxx_generator1.hh:272
Level 0 linear expression (ap_linexpr0_t wrapper).
Definition: apxx_linexpr0.hh:44
Definition: apxx_abstract0.hh:27
Inherited by most wrappers to map new and delete to malloc and free.
Definition: apxx_scalar.hh:69