APRONXX 0.9.14
/builddir/build/BUILD/apron-0.9.15-build/apron-0.9.15/apronxx/apxx_texpr1.hh
Go to the documentation of this file.
1/* -*- C++ -*-
2 * apxx_texpr1.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_TEXPR1_HH
17#define __APXX_TEXPR1_HH
18
19#include "ap_texpr1.h"
20
21#include "apxx_linexpr1.hh"
22#include "apxx_texpr0.hh"
23
24
25namespace apron {
26
27/* ================================= */
28/* texpr1 */
29/* ================================= */
30
31
42class texpr1 : public use_malloc {
43
44protected:
45
46 ap_texpr1_t l;
47
49 texpr1(ap_texpr1_t* x);
50
52 void init_from(ap_environment_t* e, ap_texpr0_t* x);
53
55 void init_from(ap_texpr1_t* x);
56
57public:
58
59 class builder;
60 class iterator;
61 class const_iterator;
62
63
64 /* constructors */
65 /* ============ */
66
69
71 texpr1(const builder& c);
72
74 texpr1(const const_iterator& x);
75
77 texpr1(const texpr1& x);
78
83 texpr1(const environment& e, const var& v);
84
88 texpr1(const environment& e, const texpr0::const_iterator& x);
89
93 texpr1(const environment& e, const texpr0& x);
94
96 texpr1(const environment& e, const texpr0::builder& c);
97
98#if 0
100 template<class T> texpr1(const T& x);
101
103 template<class T> texpr1(const environment& e, const T& x);
104#endif
105
110 texpr1(const linexpr1& l);
111
116 texpr1(const texpr1& x, const environment& e);
117
123 texpr1(const texpr1& x, const var& src, const texpr1& dst);
124
126
127
128 /* destructor */
129 /* ========== */
130
133
135 ~texpr1();
136
138
139 /* assignment */
140 /* ========== */
141
144
146 texpr1& operator=(const texpr1& x);
147
150
154 texpr1& operator=(const builder& x);
155
156
157#if 0
159 template<class T> texpr1& operator=(const T& x);
160#endif
161
166 texpr1& operator= (const linexpr1& x);
167
169
170
171
172 /* iterators */
173 /* ========= */
174
175
178
184
185 protected:
186
187 ap_texpr1_t l;
188
190 const_iterator(ap_texpr1_t* l);
191
193 const_iterator(ap_texpr0_t* t, ap_environment_t* e);
194
195 friend class texpr1;
196 friend class tcons1;
197
198 public:
199
200 /* constructors */
201 /* ============ */
202
205
207 const_iterator(const texpr1& e);
208
211
213
214
215 /* access */
216 /* ====== */
217
220
223
226
232 ap_texpr_discr_t get_discr() const;
233
238 const coeff& get_coeff() const;
239
244 const var& get_var() const;
245
250 ap_dim_t get_dim() const;
251
258 ap_texpr_op_t get_op() const;
259
266 ap_texpr_rtype_t get_rtype() const;
267
273 ap_texpr_rdir_t get_rdir() const;
274
276
277
278 /* traversal */
279 /* ========= */
280
283
286
291 const_iterator child() const;
292
298 const_iterator left() const;
299
305 const_iterator right() const;
306
308
309
310 /* tests, size, dimensions */
311 /* ======================= */
312
315
316
318 bool equal(const texpr1& x) const;
319
321 bool is_zero() const;
322
324 size_t depth() const;
325
327 size_t size() const;
328
330 bool has_var(const var& v) const;
331
333 bool is_interval_cst() const;
334
336 bool is_interval_linear() const;
337
339 bool is_interval_polynomial() const;
340
342 bool is_interval_polyfrac() const;
343
345 bool is_scalar() const;
346
348
349
350 /* print */
351 /* ===== */
352
355
357 friend std::ostream& operator<< (std::ostream& os, const const_iterator& s);
358
360 void print(FILE* stream=stdout) const;
361
363
364
365 /* C-level compatibility */
366 /* ===================== */
367
370
372 ap_texpr1_t* get_ap_texpr1_t();
373
375 const ap_texpr1_t* get_ap_texpr1_t() const;
376
378
379 };
380
381
386 class iterator : public const_iterator {
387
388 protected:
389
391 iterator(ap_texpr1_t* l);
392
394 iterator(ap_texpr0_t* t, ap_environment_t* e);
395
396 friend class texpr1;
397 friend class tcons1;
398
399 public:
400
401 /* constructors */
402 /* ============ */
403
406
408 iterator(texpr1& e);
409
411 iterator(const iterator& i);
412
414
415
416 /* substitution */
417 /* ============ */
418
421
427
428#if 0
430 template<class T> iterator& operator= (const T& c);
431#endif
432
434
435
436 /* access */
437 /* ====== */
438
441
444
449 coeff& get_coeff() const;
450
456 void set_var(const var& v) const;
457
462 ap_dim_t& get_dim() const;
463
470 ap_texpr_op_t& get_op() const;
471
478 ap_texpr_rtype_t& get_rtype() const;
479
485 ap_texpr_rdir_t& get_rdir() const;
486
488
489
490 /* traversal */
491 /* ========= */
492
495
497 iterator& operator=(const iterator& i);
498
503 iterator child() const;
504
510 iterator left() const;
511
517 iterator right() const;
518
520
521
522 /* C-level compatibility */
523 /* ===================== */
524
527
529 ap_texpr1_t* get_ap_texpr1_t();
530
532 const ap_texpr1_t* get_ap_texpr1_t() const;
533
535
536 };
537
538
540 const_iterator root() const;
541
543 iterator root();
544
546
547
548 /* builders */
549 /* ======== */
550
553
561 class builder : public use_malloc {
562
563 friend class texpr1;
564
565 protected:
566
567 ap_texpr1_t l;
568
570 builder& operator= (const builder& x) { assert(0); return *this; }
571
573 void init_from(ap_texpr1_t* x);
574
576 void init_from(ap_environment_t* e, ap_texpr0_t* x);
577
579 builder(ap_texpr1_t* x);
580
581 public:
582
583 /* constructors */
584 /* ============ */
585
588
590 builder(const builder& x);
591
593 builder(const const_iterator& x);
594
596 builder(const texpr1& x);
597
599 builder(const environment& e, const texpr0::builder& b);
600
602 builder(const environment& e, const texpr0::const_iterator& b);
603
605 builder(const environment& e, const texpr0& b);
606
607
609 builder(const environment& e, const coeff& x);
610
612 builder(const environment& e, const scalar& x);
613
615 builder(const environment& e, const mpq_class& x);
616
618 builder(const environment& e, mpfr_t x);
619
621 builder(const environment& e, int x);
622
624 builder(const environment& e, long x);
625
627 builder(const environment& e, double x);
628
630 builder(const environment& e, const frac& x);
631
633 builder(const environment& e, const interval& x);
634
636 builder(const environment& e, const scalar& inf, const scalar& sup);
637
639 builder(const environment& e, const mpq_class& inf, const mpq_class& sup);
640
642 builder(const environment& e, mpfr_t inf, mpfr_t sup);
643
645 builder(const environment& e, int inf, int sup);
646
648 builder(const environment& e, long inf, long sup);
649
651 builder(const environment& e, double inf, double sup);
652
654 builder(const environment& e, const frac& inf, const frac& sup);
655
657 builder(const environment& e, top t);
658
660 builder(const environment& e, const var& v);
661
663 builder(ap_texpr_op_t op, const builder& argA, ap_texpr_rtype_t rtype, ap_texpr_rdir_t rdir);
664
666 builder(ap_texpr_op_t op, const builder& argA, const builder& argB, ap_texpr_rtype_t rtype, ap_texpr_rdir_t rdir);
667
669
670
671 /* destructor */
672 /* ========== */
673
676
678 ~builder();
679
681
682
683 /* tests */
684 /* ===== */
685
686
689
691 bool is_zero() const;
692
694
695 /* C-level compatibility */
696 /* ===================== */
697
700
702 ap_texpr1_t* get_ap_texpr1_t();
703
705 const ap_texpr1_t* get_ap_texpr1_t() const;
706
708
709
710 /* 'Intelligent' constructors */
711 /* ========================== */
712
715
731 friend builder unary(ap_texpr_op_t op, const builder& a,
732 ap_texpr_rtype_t rtype, ap_texpr_rdir_t rdir);
733
749 friend builder binary(ap_texpr_op_t op, const builder& a, const builder& b,
750 ap_texpr_rtype_t rtype, ap_texpr_rdir_t rdir);
751
753 friend builder add(const builder& a, const builder& b,
754 ap_texpr_rtype_t rtype, ap_texpr_rdir_t rdir);
755
757 friend builder sub(const builder& a, const builder& b,
758 ap_texpr_rtype_t rtype, ap_texpr_rdir_t rdir);
759
761 friend builder mul(const builder& a, const builder& b,
762 ap_texpr_rtype_t rtype, ap_texpr_rdir_t rdir);
763
765 friend builder div(const builder& a, const builder& b,
766 ap_texpr_rtype_t rtype, ap_texpr_rdir_t rdir);
767
769 friend builder mod(const builder& a, const builder& b,
770 ap_texpr_rtype_t rtype, ap_texpr_rdir_t rdir);
771
773 friend builder pow(const builder& a, const builder& b,
774 ap_texpr_rtype_t rtype, ap_texpr_rdir_t rdir);
775
777 friend builder neg(const builder& a,
778 ap_texpr_rtype_t rtype, ap_texpr_rdir_t rdir);
779
781 friend builder cast(const builder& a, ap_texpr_rtype_t rtype, ap_texpr_rdir_t rdir);
782
784 friend builder floor(const builder& a);
785
787 friend builder ceil(const builder& a);
788
790 friend builder trunc(const builder& a);
791
793 friend builder sqrt(const builder& a,
794 ap_texpr_rtype_t rtype, ap_texpr_rdir_t rdir);
795
797 friend builder operator+(const builder& a);
798
800 friend builder operator-(const builder& a);
801
803 friend builder operator+(const builder& a, const builder& b);
804
806 friend builder operator-(const builder& a, const builder& b);
807
809 friend builder operator*(const builder& a, const builder& b);
810
812 friend builder operator/(const builder& a, const builder& b);
813
815 friend builder operator%(const builder& a, const builder& b);
816
818 friend builder operator^(const builder& a, const builder& b);
819
821 };
822
823
824 /* print */
825 /* ===== */
826
829
831 friend std::ostream& operator<< (std::ostream& os, const texpr1& s);
832
834 void print(FILE* stream=stdout) const;
835
837
838
839 /* dimension operations */
840 /* ==================== */
841
844
849 void extend_environment(const environment& e);
850
852
853
854 /* access */
855 /* ====== */
856
859
862
865
868
870 bool is_zero() const;
871
873 bool equal(const texpr1& x) const;
874
876 size_t depth() const;
877
879 size_t size() const;
880
882 bool has_var(const var& v) const;
883
885 bool is_interval_cst() const;
886
888 bool is_interval_linear() const;
889
891 bool is_interval_polynomial() const;
892
894 bool is_interval_polyfrac() const;
895
897 bool is_scalar() const;
898
900
901 /* operations */
902 /* ========== */
903
906
911 void substitute(const var& src, const texpr1& dst);
912
914
915
916
917 /* C-level compatibility */
918 /* ===================== */
919
922
924 ap_texpr1_t* get_ap_texpr1_t();
925
927 const ap_texpr1_t* get_ap_texpr1_t() const;
928
930
931};
932
933#include "apxx_texpr1_inline.hh"
934
935}
936
937#endif /* __APXX_TEXPR1_HH */
Coefficient (ap_coeff_t wrapper).
Definition apxx_coeff.hh:36
Level 1 environment (ap_environment_t wrapper).
Definition apxx_environment.hh:51
Interval (ap_interval_t wrapper).
Definition apxx_interval.hh:47
Level 1 linear expression (ap_linexpr1_t wrapper).
Definition apxx_linexpr1.hh:39
Scalar (ap_scalar_t wrapper).
Definition apxx_scalar.hh:89
Level 1 arbitrary constraint (ap_tcons1_t wrapper).
Definition apxx_tcons1.hh:39
Temporary expression nodes used when constructing a texpr0.
Definition apxx_texpr0.hh:581
Iterators to traverse a constant expression tree.
Definition apxx_texpr0.hh:211
Iterators to traverse and mutate an expression tree.
Definition apxx_texpr0.hh:413
Level 0 arbitrary expression tree (ap_texpr0_t wrapper).
Definition apxx_texpr0.hh:92
Temporary expression nodes used when constructing a texpr1.
Definition apxx_texpr1.hh:561
friend builder sub(const builder &a, const builder &b, ap_texpr_rtype_t rtype, ap_texpr_rdir_t rdir)
Makes an AP_TEXPR_SUB expression node.
friend builder unary(ap_texpr_op_t op, const builder &a, ap_texpr_rtype_t rtype, ap_texpr_rdir_t rdir)
Makes a unary expression node.
builder(ap_texpr1_t *x)
Internal use only: makes a shallow copy, copying only the root node and referencing the environment.
Definition apxx_texpr1_inline.hh:653
friend builder neg(const builder &a, ap_texpr_rtype_t rtype, ap_texpr_rdir_t rdir)
Makes an AP_TEXPR_NEG expression node.
friend builder trunc(const builder &a)
Makes an AP_TEXPR_CAST expression node to AP_RTYPE_INT type rounded towards AP_RDIR_ZERO.
void init_from(ap_texpr1_t *x)
Internal use only: makes a shallow copy, copying only the root node and referencing the environment.
Definition apxx_texpr1_inline.hh:630
friend builder cast(const builder &a, ap_texpr_rtype_t rtype, ap_texpr_rdir_t rdir)
Makes an AP_TEXPR_CAST expression node.
builder & operator=(const builder &x)
Not to be used. (Temporaries are not to be re-assigned).
Definition apxx_texpr1.hh:570
friend builder mul(const builder &a, const builder &b, ap_texpr_rtype_t rtype, ap_texpr_rdir_t rdir)
Makes an AP_TEXPR_MUL expression node.
~builder()
Frees the memory occupied by the node, not its sub-expressions.
Definition apxx_texpr1_inline.hh:973
friend builder sqrt(const builder &a, ap_texpr_rtype_t rtype, ap_texpr_rdir_t rdir)
Makes an AP_TEXPR_SQRT expression node.
ap_texpr1_t l
Definition apxx_texpr1.hh:567
friend builder operator-(const builder &a, const builder &b)
Makes a AP_TEXPR_SUB expression node using AP_RTYPE_REAL type (no rounding).
bool is_zero() const
Whether the expression is a single coefficient node with 0 value.
Definition apxx_texpr1_inline.hh:964
friend builder operator+(const builder &a, const builder &b)
Makes a AP_TEXPR_ADD expression node using AP_RTYPE_REAL type (no rounding).
friend builder operator*(const builder &a, const builder &b)
Makes a AP_TEXPR_MUL expression node using AP_RTYPE_REAL type (no rounding).
friend builder pow(const builder &a, const builder &b, ap_texpr_rtype_t rtype, ap_texpr_rdir_t rdir)
Makes an AP_TEXPR_POW expression node.
friend builder operator^(const builder &a, const builder &b)
Makes a AP_TEXPR_POW expression node using AP_RTYPE_REAL type (no rounding).
friend builder floor(const builder &a)
Makes an AP_TEXPR_CAST expression node to AP_RTYPE_INT type rounded towards AP_RDIR_DOWN.
friend builder operator/(const builder &a, const builder &b)
Makes a AP_TEXPR_DIV expression node using AP_RTYPE_REAL type (no rounding).
friend builder add(const builder &a, const builder &b, ap_texpr_rtype_t rtype, ap_texpr_rdir_t rdir)
Makes an AP_TEXPR_ADD expression node.
friend builder operator+(const builder &a)
Makes a copy of the node.
ap_texpr1_t * get_ap_texpr1_t()
Returns a pointer to the internal APRON object stored in *this.
Definition apxx_texpr1_inline.hh:988
friend builder binary(ap_texpr_op_t op, const builder &a, const builder &b, ap_texpr_rtype_t rtype, ap_texpr_rdir_t rdir)
Makes a binary expression node.
friend builder ceil(const builder &a)
Makes an AP_TEXPR_CAST expression node to AP_RTYPE_INT type rounded towards AP_RDIR_UP.
friend builder operator-(const builder &a)
Makes a AP_TEXPR_NEG expression node using AP_RTYPE_REAL type (no rounding).
friend builder mod(const builder &a, const builder &b, ap_texpr_rtype_t rtype, ap_texpr_rdir_t rdir)
Makes an AP_TEXPR_MOD expression node.
friend builder operator%(const builder &a, const builder &b)
Makes a AP_TEXPR_MOD expression node using AP_RTYPE_REAL type (no rounding).
friend builder div(const builder &a, const builder &b, ap_texpr_rtype_t rtype, ap_texpr_rdir_t rdir)
Makes an AP_TEXPR_DIV expression node.
Iterators to traverse a constant expression tree.
Definition apxx_texpr1.hh:183
const coeff & get_coeff() const
Returns a reference to the coefficient of a constant node.
Definition apxx_texpr1_inline.hh:337
const_iterator right() const
Constructs a const_iterator to the right sub-expression argument of a binary operator node.
Definition apxx_texpr1_inline.hh:397
ap_texpr_rdir_t get_rdir() const
Returns the rounding direction of an operator node.
Definition apxx_texpr1_inline.hh:367
ap_texpr_op_t get_op() const
Returns the operator kind of an operator node.
Definition apxx_texpr1_inline.hh:355
const_iterator left() const
Constructs a const_iterator to the only of left sub-expression of an operator node.
Definition apxx_texpr1_inline.hh:390
bool is_scalar() const
Whether all occurring constants are scalar.
Definition apxx_texpr1_inline.hh:473
bool is_interval_linear() const
Whether the expression is linear and there is no rounding.
Definition apxx_texpr1_inline.hh:458
bool is_zero() const
Whether the expression is a single coefficient node with 0 value.
Definition apxx_texpr1_inline.hh:437
const_iterator(ap_texpr1_t *l)
Internal use only.
Definition apxx_texpr1_inline.hh:306
friend std::ostream & operator<<(std::ostream &os, const const_iterator &s)
Printing.
bool has_var(const var &v) const
Whether the given variable name occurs in the expression.
Definition apxx_texpr1_inline.hh:447
const_iterator(ap_texpr0_t *t, ap_environment_t *e)
Internal use only.
bool equal(const texpr1 &x) const
Whether two expressions are syntactically, structurally equal.
Definition apxx_texpr1_inline.hh:426
const_iterator & operator=(const const_iterator &i)
Resets the const_iterator at position i.
Definition apxx_texpr1_inline.hh:377
ap_dim_t get_dim() const
Returns the dimension of a dimension node.
Definition apxx_texpr1_inline.hh:349
ap_texpr1_t * get_ap_texpr1_t()
Returns a pointer to the internal APRON object stored in *this.
Definition apxx_texpr1_inline.hh:482
texpr0::const_iterator get_texpr0() const
Returns a constant iterator at the root of the underlying texpr0.
Definition apxx_texpr1_inline.hh:327
const var & get_var() const
Returns a (unmodifiable) reference to the variable name of a dimension node.
Definition apxx_texpr1_inline.hh:343
void print(FILE *stream=stdout) const
Prints to a C stream.
Definition apxx_texpr1_inline.hh:417
ap_texpr1_t l
Definition apxx_texpr1.hh:187
bool is_interval_cst() const
Whether the expression is constant (i.e., has no dimension leaves).
Definition apxx_texpr1_inline.hh:453
size_t size() const
Returns the number of operator nodes in the expression tree.
Definition apxx_texpr1_inline.hh:442
ap_texpr_discr_t get_discr() const
Returns the node kind.
Definition apxx_texpr1_inline.hh:332
environment get_environment() const
Returns (a copy of) the environment associated with the expression.
Definition apxx_texpr1_inline.hh:322
bool is_interval_polynomial() const
Whether the expression is polynomial and there is no rounding.
Definition apxx_texpr1_inline.hh:463
size_t depth() const
Returns the depth of the expression tree (counting only operator nodes).
Definition apxx_texpr1_inline.hh:432
bool is_interval_polyfrac() const
Whether the expression is a polynomial fraction and there is no rounding.
Definition apxx_texpr1_inline.hh:468
const_iterator child() const
Constructs a const_iterator to the only or left sub-expression of an operator node.
Definition apxx_texpr1_inline.hh:383
ap_texpr_rtype_t get_rtype() const
Returns the destination type of an operator node.
Definition apxx_texpr1_inline.hh:361
Iterators to traverse and mutate an expression tree.
Definition apxx_texpr1.hh:386
iterator child() const
Constructs an iterator to the only or left sub-expression of an operator node.
Definition apxx_texpr1_inline.hh:590
iterator right() const
Constructs an iterator to the right sub-expression argument of a binary operator node.
Definition apxx_texpr1_inline.hh:604
texpr0::iterator get_texpr0() const
Returns an iterator at the root of the underlying texpr0.
Definition apxx_texpr1_inline.hh:536
iterator(ap_texpr1_t *l)
Internal use only.
Definition apxx_texpr1_inline.hh:505
iterator(ap_texpr0_t *t, ap_environment_t *e)
Internal use only.
iterator left() const
Constructs an iterator to the only of left sub-expression of an operator node.
Definition apxx_texpr1_inline.hh:597
coeff & get_coeff() const
Returns a (modifiable) reference to the coefficient of a constant node.
Definition apxx_texpr1_inline.hh:542
ap_dim_t & get_dim() const
Returns a (modifiable) reference to the dimension of a dimension node.
Definition apxx_texpr1_inline.hh:556
ap_texpr_rtype_t & get_rtype() const
Returns a (modifiable) reference to the destination type of an operator node.
Definition apxx_texpr1_inline.hh:568
iterator & operator=(const builder &x)
Replace the sub-expression at the iterator position with a (deep) copy of c.
ap_texpr1_t * get_ap_texpr1_t()
Returns a pointer to the internal APRON object stored in *this.
Definition apxx_texpr1_inline.hh:615
ap_texpr_op_t & get_op() const
Returns a (modifiable) reference to the operator kind of an operator node.
Definition apxx_texpr1_inline.hh:562
void set_var(const var &v) const
Sets the variable name of a dimension node.
Definition apxx_texpr1_inline.hh:548
ap_texpr_rdir_t & get_rdir() const
Returns a (modifiable) reference to the rounding direction of an operator node.
Definition apxx_texpr1_inline.hh:574
Level 1 arbitrary expression tree (ap_texpr1_t wrapper).
Definition apxx_texpr1.hh:42
const_iterator root() const
Returns a new iterator at the root of a constant expression tree.
Definition apxx_texpr1_inline.hh:295
bool is_interval_polyfrac() const
Whether the expression is a polynomial fraction and there is no rounding.
Definition apxx_texpr1_inline.hh:242
friend std::ostream & operator<<(std::ostream &os, const texpr1 &s)
Printing.
texpr1(const builder &c)
Makes an expression from a temporary.
size_t size() const
Returns the number of operator nodes in the expression tree.
Definition apxx_texpr1_inline.hh:217
texpr1 & operator=(const texpr1 &x)
Makes a (deep) copy of the expression.
Definition apxx_texpr1_inline.hh:117
bool has_var(const var &v) const
Whether the given variable name occurs in the expression.
Definition apxx_texpr1_inline.hh:222
bool is_interval_linear() const
Whether the expression is linear and there is no rounding.
Definition apxx_texpr1_inline.hh:232
bool is_zero() const
Whether the expression is a single coefficient node with 0 value.
Definition apxx_texpr1_inline.hh:212
bool equal(const texpr1 &x) const
Whether two expressions are syntactically, structurally equal.
Definition apxx_texpr1_inline.hh:202
bool is_scalar() const
Whether all occurring constants are scalar.
Definition apxx_texpr1_inline.hh:247
void substitute(const var &src, const texpr1 &dst)
Substitutes each occurrence of src with (a fresh copy of) dst.
Definition apxx_texpr1_inline.hh:256
texpr0::const_iterator get_texpr0() const
Returns a constant iterator at the root of the underlying texpr0.
Definition apxx_texpr1_inline.hh:192
void print(FILE *stream=stdout) const
Prints to a C stream.
Definition apxx_texpr1_inline.hh:164
bool is_interval_polynomial() const
Whether the expression is polynomial and there is no rounding.
Definition apxx_texpr1_inline.hh:237
bool is_interval_cst() const
Whether the expression is constant (i.e., has no dimension leaves).
Definition apxx_texpr1_inline.hh:227
void init_from(ap_environment_t *e, ap_texpr0_t *x)
Internal use only. Shallow copy.
Definition apxx_texpr1_inline.hh:18
environment get_environment() const
Returns the environment of the expression (with incremented reference count).
Definition apxx_texpr1_inline.hh:187
void extend_environment(const environment &e)
Extends the environment of the expression.
Definition apxx_texpr1_inline.hh:174
ap_texpr1_t l
Structure managed by APRON.
Definition apxx_texpr1.hh:46
~texpr1()
Frees the memory occupied by the expression and decrements the reference count of the environment.
Definition apxx_texpr1_inline.hh:107
texpr1(ap_texpr1_t *x)
Internal use only. Shallow copy.
Definition apxx_texpr1_inline.hh:30
size_t depth() const
Returns the depth of the expression tree (counting only operator nodes).
Definition apxx_texpr1_inline.hh:207
ap_texpr1_t * get_ap_texpr1_t()
Returns a pointer to the internal APRON object stored in *this.
Definition apxx_texpr1_inline.hh:271
Variable name (ap_var_t wrapper).
Definition apxx_var.hh:39
Definition apxx_abstract0.hh:27
A fraction with native int coefficients, to simplify initialisations and assignments.
Definition apxx_scalar.hh:41
Full interval (]-oo,+oo[) or domain, to simplify initialisations and assignments.
Definition apxx_interval.hh:27
Inherited by most wrappers to map new and delete to malloc and free.
Definition apxx_scalar.hh:69