PPL  1.2
Widening_Function_defs.hh
Go to the documentation of this file.
1 /* Widening_Function class declaration.
2  Copyright (C) 2001-2010 Roberto Bagnara <bagnara@cs.unipr.it>
3  Copyright (C) 2010-2016 BUGSENG srl (http://bugseng.com)
4 
5 This file is part of the Parma Polyhedra Library (PPL).
6 
7 The PPL is free software; you can redistribute it and/or modify it
8 under the terms of the GNU General Public License as published by the
9 Free Software Foundation; either version 3 of the License, or (at your
10 option) any later version.
11 
12 The PPL is distributed in the hope that it will be useful, but WITHOUT
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
15 for more details.
16 
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software Foundation,
19 Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307, USA.
20 
21 For the most up-to-date information see the Parma Polyhedra Library
22 site: http://bugseng.com/products/ppl/ . */
23 
24 #ifndef PPL_Widening_Function_defs_hh
25 #define PPL_Widening_Function_defs_hh 1
26 
29 
30 #ifdef PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS
31 
33 #endif // defined(PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS)
34 template <typename PSET>
36 public:
38  typedef void (PSET::* Widening_Method)(const PSET&, unsigned*);
39 
41  explicit
43 
45 
49  void operator()(PSET& x, const PSET& y, unsigned* tp = 0) const;
50 
51 private:
54 };
55 
56 
57 #ifdef PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS
58 
60 #endif // defined(PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS)
61 template <typename PSET, typename CSYS>
63 public:
65  typedef void (PSET::* Limited_Widening_Method)(const PSET&,
66  const CSYS&,
67  unsigned*);
68 
70 
78  const CSYS& cs);
79 
81 
86  void operator()(PSET& x, const PSET& y, unsigned* tp = 0) const;
87 
88 private:
92  const CSYS& limiting_cs;
93 };
94 
95 namespace Parma_Polyhedra_Library {
96 
98 
104 template <typename PSET>
106 widen_fun_ref(void (PSET::* wm)(const PSET&, unsigned*));
107 
109 
118 template <typename PSET, typename CSYS>
120 widen_fun_ref(void (PSET::* lwm)(const PSET&, const CSYS&, unsigned*),
121  const CSYS& cs);
122 
123 } // namespace Parma_Polyhedra_Library
124 
126 
127 #endif // !defined(PPL_Widening_Function_defs_hh)
void operator()(PSET &x, const PSET &y, unsigned *tp=0) const
Function-application operator.
Widening_Method w_method
The widening method.
Limited_Widening_Method lw_method
The limited widening method.
const CSYS & limiting_cs
A constant reference to the constraint system limiting the widening.
Limited_Widening_Function(Limited_Widening_Method lwm, const CSYS &cs)
Constructor.
void(PSET::* Widening_Method)(const PSET &, unsigned *)
The (parametric) type of a widening method.
void operator()(PSET &x, const PSET &y, unsigned *tp=0) const
Function-application operator.
The entire library is confined to this namespace.
Definition: version.hh:61
Wraps a limited widening method into a function object.
Widening_Function(Widening_Method wm)
Explicit unary constructor.
void(PSET::* Limited_Widening_Method)(const PSET &, const CSYS &, unsigned *)
The (parametric) type of a limited widening method.
Wraps a widening method into a function object.