APRONXX 0.9.14
/builddir/build/BUILD/apron-0.9.15-build/apron-0.9.15/apronxx/apxx_dimension.hh
Go to the documentation of this file.
1/* -*- C++ -*-
2 * apxx_dimension.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_DIMENSION_HH
17#define __APXX_DIMENSION_HH
18
19#include "ap_dimension.h"
20
21
22namespace apron {
23
24
25/* ================================= */
26/* varname */
27/* ================================= */
28
43class varname {
44
45protected:
46
48 static const int xindex;
49
51 const std::vector<std::string>& names;
52
53public:
54
67 varname(const std::vector<std::string>& names);
68
70 template<class charT, class Traits>
71 friend
72 std::basic_ostream<charT,Traits>&
73 operator<<(std::basic_ostream<charT,Traits>& os, const varname& v);
74
80 template<class charT, class Traits>
81 friend
82 std::vector<std::string>* get_varname(std::basic_ostream<charT,Traits>& os);
83
84};
85
86
87
88
89/* ================================= */
90/* dimchange */
91/* ================================= */
92
93
102class dimchange : public use_malloc {
103
104protected:
105
106 ap_dimchange_t c;
107
108public:
109
110 /* constructor */
111 /* =========== */
112
115
117 dimchange(size_t intdim=0, size_t realdim=0);
118
123 dimchange(size_t intdim, size_t realdim, const ap_dim_t d[]);
124
129 dimchange(size_t intdim, size_t realdim, const std::vector<ap_dim_t>& d);
130
135 dimchange(const dimchange& x, bool inv=false);
136
138
139
140 /* destructor */
141 /* ========== */
142
145
146 ~dimchange();
147
149
150
151 /* assignment */
152 /* ========== */
153
156
158 dimchange& operator= (const dimchange& x);
159
164 dimchange& operator= (const ap_dim_t d[]);
165
170 dimchange& operator= (const std::vector<ap_dim_t>& d);
171
173
174
175 /* access */
176 /* ====== */
177
180
182 size_t get_intdim() const;
183
185 size_t get_realdim() const;
186
191 ap_dim_t& operator[](size_t dim);
192
197 const ap_dim_t& operator[](size_t dim) const;
198
203 ap_dim_t& get(size_t dim);
204
209 const ap_dim_t& get(size_t dim) const;
210
212
213
214 /* print */
215 /* ===== */
216
219
224 friend std::ostream& operator<< (std::ostream& os, const dimchange& s);
225
227 void print(FILE* stream=stdout) const;
228
230
231
232
233 /* other operators */
234 /* =============== */
235
238
244 void add_invert();
245
250 dimchange operator- () const;
251
253
254
255 /* C-level compatibility */
256 /* ===================== */
257
260
262 const ap_dimchange_t* get_ap_dimchange_t() const;
263
265 ap_dimchange_t* get_ap_dimchange_t();
266
268};
269
270
271
273struct id {
274 size_t size;
275
276 id(size_t size) : size(size) {}
277};
278
279
280
281/* ================================= */
282/* dimperm */
283/* ================================= */
284
285
292class dimperm : public use_malloc {
293
294protected:
295
296 ap_dimperm_t c;
297
298public:
299
300
301 /* constructor */
302 /* =========== */
303
306
308 dimperm(size_t size=0);
309
314 dimperm(size_t size, const ap_dim_t d[]);
315
317 dimperm(const std::vector<ap_dim_t>& d);
318
319
321 dimperm(id t);
322
327 dimperm(const dimperm& x, bool inv=false);
328
330 dimperm(const dimperm& x, const dimperm& y);
331
333
334
335 /* destructor */
336 /* ========== */
337
340
341 ~dimperm();
342
344
345
346 /* assignment */
347 /* ========== */
348
351
353 dimperm& operator= (const dimperm& x);
354
356 dimperm& operator= (id t);
357
362 dimperm& operator= (const ap_dim_t d[]);
363
365 dimperm& operator= (const std::vector<ap_dim_t>& d);
366
368
369
370 /* access */
371 /* ====== */
372
375
377 size_t size() const;
378
383 ap_dim_t& operator[](size_t dim);
384
389 const ap_dim_t& operator[](size_t dim) const;
390
395 ap_dim_t& get(size_t dim);
396
401 const ap_dim_t& get(size_t dim) const;
402
404
405
406 /* print */
407 /* ===== */
408
411
416 friend std::ostream& operator<< (std::ostream& os, const dimperm& s);
417
419 void print(FILE* stream=stdout) const;
420
422
423
424 /* other operators */
425 /* =============== */
426
429
430 /* composition */
431
436 dimperm& operator*= (const dimperm& y);
437
442 friend dimperm operator* (const dimperm& x, const dimperm& y);
443
444
445
446 /* inversion */
447
449 void invert();
450
452 dimperm operator- () const;
453
455
456
457 /* C-level compatibility */
458 /* ===================== */
459
462
464 const ap_dimperm_t* get_ap_dimperm_t() const;
465
467 ap_dimperm_t* get_ap_dimperm_t();
468
470
471};
472
474
475}
476
477#endif /* __APXX_DIMENSION_HH */
Represents a dimension (i.e., variable by index) in an expression tree.
Definition apxx_texpr0.hh:33
Dimension change object (ap_dimchange_t wrapper).
Definition apxx_dimension.hh:102
ap_dim_t & operator[](size_t dim)
Returns a (modifiable) reference to an index in the underlying array.
Definition apxx_dimension_inline.hh:148
ap_dim_t & get(size_t dim)
Returns a (modifiable) reference to an index in the underlying array (bound-checked).
Definition apxx_dimension_inline.hh:136
void add_invert()
Inverts *this.
Definition apxx_dimension_inline.hh:188
friend std::ostream & operator<<(std::ostream &os, const dimchange &s)
Printing.
dimchange & operator=(const dimchange &x)
(Deep) copy.
Definition apxx_dimension_inline.hh:98
dimchange operator-() const
Returns the inverse of *this.
Definition apxx_dimension_inline.hh:193
const ap_dimchange_t * get_ap_dimchange_t() const
Returns a pointer to the internal APRON object stored in *this.
Definition apxx_dimension_inline.hh:204
void print(FILE *stream=stdout) const
Prints to a C stream.
Definition apxx_dimension_inline.hh:179
size_t get_intdim() const
Returns the number of integer dimensions to add/remove.
Definition apxx_dimension_inline.hh:126
ap_dimchange_t c
Structure managed by APRON.
Definition apxx_dimension.hh:106
dimchange(size_t intdim=0, size_t realdim=0)
Makes an uninitialized dimchange.
Definition apxx_dimension_inline.hh:58
~dimchange()
Definition apxx_dimension_inline.hh:89
size_t get_realdim() const
Returns the number of real dimensions to add/remove.
Definition apxx_dimension_inline.hh:131
Dimension permutation object (ap_dimperm_t wrapper).
Definition apxx_dimension.hh:292
const ap_dimperm_t * get_ap_dimperm_t() const
Returns a pointer to the internal APRON object stored in *this.
Definition apxx_dimension_inline.hh:422
void print(FILE *stream=stdout) const
Prints to a C stream.
Definition apxx_dimension_inline.hh:368
dimperm(size_t size=0)
Makes an uninitialized dimperm of the given size.
Definition apxx_dimension_inline.hh:223
size_t size() const
Returns the size of the permutation.
Definition apxx_dimension_inline.hh:315
ap_dim_t & operator[](size_t dim)
Returns a (modifiable) reference to the image of dim.
Definition apxx_dimension_inline.hh:320
ap_dim_t & get(size_t dim)
Returns a (modifiable) reference to the image of dim (bound-checked).
Definition apxx_dimension_inline.hh:330
void invert()
Inverts *this.
Definition apxx_dimension_inline.hh:404
friend std::ostream & operator<<(std::ostream &os, const dimperm &s)
Printing.
~dimperm()
Definition apxx_dimension_inline.hh:264
dimperm & operator=(const dimperm &x)
Copies x.
Definition apxx_dimension_inline.hh:273
ap_dimperm_t c
Structure managed by APRON.
Definition apxx_dimension.hh:296
dimperm operator-() const
Returns a new dimperm that is the inverse of *this.
Definition apxx_dimension_inline.hh:410
friend dimperm operator*(const dimperm &x, const dimperm &y)
Returns a new dimperm that is the composition of x and y.
dimperm & operator*=(const dimperm &y)
Composes *this with y.
Definition apxx_dimension_inline.hh:379
Stream modifier to set variable names to dimensions.
Definition apxx_dimension.hh:43
friend std::vector< std::string > * get_varname(std::basic_ostream< charT, Traits > &os)
Gets the variable name vector associated to the stream.
Definition apxx_dimension_inline.hh:43
static const int xindex
Index to stream-local data, allocated with xalloc.
Definition apxx_dimension.hh:48
friend std::basic_ostream< charT, Traits > & operator<<(std::basic_ostream< charT, Traits > &os, const varname &v)
Associates the modifier to the stream.
const std::vector< std::string > & names
Names of variables.
Definition apxx_dimension.hh:51
varname(const std::vector< std::string > &names)
Creates a modifier to associate variable names to dimensions.
Definition apxx_dimension_inline.hh:24
Definition apxx_abstract0.hh:27
The identity permutation, to simplify initialisations and assignments.
Definition apxx_dimension.hh:273
id(size_t size)
Definition apxx_dimension.hh:276
size_t size
Size of the permutation.
Definition apxx_dimension.hh:274
Inherited by most wrappers to map new and delete to malloc and free.
Definition apxx_scalar.hh:69