Namespaces | |
namespace | Parma_Polyhedra_Library |
The entire library is confined to this namespace. | |
namespace | Parma_Polyhedra_Library::IO_Operators |
All input/output operators are confined to this namespace. | |
namespace | Parma_Polyhedra_Library::Checked |
Types and functions implementing checked numbers. | |
namespace | Parma_Polyhedra_Library::Implementation |
Implementation related data and functions. | |
namespace | Parma_Polyhedra_Library::Interfaces |
Data and functions related to foreign language interfaces. | |
namespace | Parma_Polyhedra_Library::Interfaces::C |
Data and functions related to the C foreign language interface. | |
namespace | Parma_Polyhedra_Library::Interfaces::Java |
Data and functions related to the Java foreign language interface. | |
namespace | Parma_Polyhedra_Library::Interfaces::OCaml |
Data and functions related to the OCaml foreign language interface. | |
namespace | Parma_Polyhedra_Library::Interfaces::Prolog |
Data and functions related to the Prolog foreign language interfaces. | |
namespace | Parma_Polyhedra_Library::Interfaces::Prolog::Ciao |
Data and functions related to the Ciao Prolog foreign language interface. | |
namespace | Parma_Polyhedra_Library::Interfaces::Prolog::GNU |
Data and functions related to the GNU Prolog foreign language interface. | |
namespace | Parma_Polyhedra_Library::Interfaces::Prolog::SICStus |
Data and functions related to the SICStus foreign language interface. | |
namespace | Parma_Polyhedra_Library::Interfaces::Prolog::SWI |
Data and functions related to the SWI-Prolog foreign language interface. | |
namespace | Parma_Polyhedra_Library::Interfaces::Prolog::XSB |
Data and functions related to the XSB foreign language interface. | |
namespace | Parma_Polyhedra_Library::Interfaces::Prolog::YAP |
Data and functions related to the YAP foreign language interface. | |
namespace | std |
The standard C++ namespace. | |
Classes | |
struct | Parma_Polyhedra_Library::Compile_Time_Check< true > |
A class that is only defined if b evaluates to true . More... | |
struct | Parma_Polyhedra_Library::Bool< b > |
A class holding a constant called value that evaluates to b . More... | |
struct | Parma_Polyhedra_Library::True |
A class holding a constant called value that evaluates to true . More... | |
struct | Parma_Polyhedra_Library::False |
A class holding a constant called value that evaluates to false . More... | |
struct | Parma_Polyhedra_Library::Is_Same< T1, T2 > |
A class holding a constant called value that evaluates to true if and only if T1 is the same type as T2 . More... | |
struct | Parma_Polyhedra_Library::Is_Same< T, T > |
A class holding a constant called value that evaluates to true if and only if T1 is the same type as T2 . More... | |
struct | Parma_Polyhedra_Library::Is_Same_Or_Derived< Base, Derived > |
A class holding a constant called value that evaluates to true if and only if Base is the same type as Derived or Derived is a class derived from Base . More... | |
struct | Parma_Polyhedra_Library::Enable_If< b, T > |
A class that provides a type member called type equivalent to T if and only if b is true . More... | |
struct | Parma_Polyhedra_Library::Enable_If< true, T > |
A class that provides a type member called type equivalent to T if and only if b is true . More... | |
struct | Parma_Polyhedra_Library::float_ieee754_single |
struct | Parma_Polyhedra_Library::float_ieee754_double |
struct | Parma_Polyhedra_Library::float_intel_double_extended |
struct | Parma_Polyhedra_Library::float_ieee754_quad |
class | Parma_Polyhedra_Library::Float< T > |
struct | Parma_Polyhedra_Library::Checked_Number_Default_Policy |
struct | Parma_Polyhedra_Library::Extended_Number_Policy |
struct | Parma_Polyhedra_Library::WRD_Extended_Number_Policy |
struct | Parma_Polyhedra_Library::Check_Overflow_Policy< T > |
A policy checking for overflows. More... | |
struct | Parma_Polyhedra_Library::Native_Checked_From_Wrapper< T, typename Enable_If< Is_Native< T >::value >::type > |
struct | Parma_Polyhedra_Library::Native_Checked_From_Wrapper< Checked_Number< T, P > > |
struct | Parma_Polyhedra_Library::Native_Checked_To_Wrapper< T, typename Enable_If< Is_Native< T >::value >::type > |
struct | Parma_Polyhedra_Library::Native_Checked_To_Wrapper< Checked_Number< T, P > > |
struct | Parma_Polyhedra_Library::Is_Checked< T > |
struct | Parma_Polyhedra_Library::Is_Checked< Checked_Number< T, P > > |
struct | Parma_Polyhedra_Library::Is_Native_Or_Checked< T > |
class | Parma_Polyhedra_Library::Checked_Number< T, Policy > |
A wrapper for numeric types implementing a given policy. More... | |
struct | Parma_Polyhedra_Library::Slow_Copy< Checked_Number< T, P > > |
struct | Parma_Polyhedra_Library::Coefficient_traits_template< GMP_Integer > |
Coefficient traits specialization for unbounded integers. More... | |
struct | Parma_Polyhedra_Library::Coefficient_traits_template< Coefficient > |
Coefficient traits. More... | |
struct | Parma_Polyhedra_Library::Checked_Number_Transparent_Policy< T > |
class | Parma_Polyhedra_Library::Init |
Class for initialization and finalization. More... | |
class | Parma_Polyhedra_Library::Throwable |
User objects the PPL can throw. More... | |
struct | Parma_Polyhedra_Library::From_Covering_Box |
A tag class. More... | |
struct | Parma_Polyhedra_Library::Recycle_Input |
A tag class. More... | |
class | Parma_Polyhedra_Library::Row_Impl_Handler |
The handler of the actual Row implementation. More... | |
class | Parma_Polyhedra_Library::Row |
A finite sequence of coefficients. More... | |
class | Parma_Polyhedra_Library::Row::Flags |
Wrapper class to represent a set of flags with bits in a native unsigned integral type. More... | |
class | Parma_Polyhedra_Library::Row_Impl_Handler::Impl |
The actual implementation of a Row object. More... | |
class | Parma_Polyhedra_Library::Matrix |
A 2-dimensional matrix of coefficients. More... | |
class | Parma_Polyhedra_Library::Matrix::const_iterator |
An iterator over a matrix. More... | |
class | Parma_Polyhedra_Library::Linear_Row |
The base class for linear expressions, constraints and generators. More... | |
class | Parma_Polyhedra_Library::Linear_Row::Flags |
The type of the object to which the coefficients refer to, encoding both topology and kind. More... | |
class | Parma_Polyhedra_Library::Linear_System |
The base class for systems of constraints and generators. More... | |
struct | Parma_Polyhedra_Library::Linear_System::With_Pending |
A tag class. More... | |
class | Parma_Polyhedra_Library::Linear_System::With_Bit_Matrix_iterator |
An iterator keeping a Linear_System consistent with a Bit_Matrix. More... | |
class | Parma_Polyhedra_Library::MIP_Problem |
A Mixed Integer (linear) Programming problem. More... | |
class | Parma_Polyhedra_Library::Bit_Row |
A row in a matrix of bits. More... | |
class | Parma_Polyhedra_Library::Bit_Matrix |
A matrix of bits. More... | |
struct | Parma_Polyhedra_Library::Bit_Matrix::Bit_Row_Less_Than |
Ordering predicate (used when implementing the sort algorithm). More... | |
class | Parma_Polyhedra_Library::Variable |
A dimension of the vector space. More... | |
struct | Parma_Polyhedra_Library::Variable::Compare |
Binary predicate defining the total ordering on variables. More... | |
class | Parma_Polyhedra_Library::Linear_Expression |
A linear expression. More... | |
class | Parma_Polyhedra_Library::Constraint |
A linear equality or inequality. More... | |
class | Parma_Polyhedra_Library::Congruence |
A linear congruence. More... | |
class | Parma_Polyhedra_Library::Generator |
A line, ray, point or closure point. More... | |
class | Parma_Polyhedra_Library::Grid_Generator |
A grid line, parameter or grid point. More... | |
class | Parma_Polyhedra_Library::Constraint_System |
A system of constraints. More... | |
class | Parma_Polyhedra_Library::Constraint_System::const_iterator |
An iterator over a system of constraints. More... | |
class | Parma_Polyhedra_Library::Congruence_System |
A system of congruences. More... | |
class | Parma_Polyhedra_Library::Congruence_System::const_iterator |
An iterator over a system of congruences. More... | |
class | Parma_Polyhedra_Library::Generator_System |
A system of generators. More... | |
class | Parma_Polyhedra_Library::Generator_System::const_iterator |
An iterator over a system of generators. More... | |
class | Parma_Polyhedra_Library::Grid_Generator_System |
A system of grid generators. More... | |
class | Parma_Polyhedra_Library::Grid_Generator_System::const_iterator |
An iterator over a system of grid generators. More... | |
class | Parma_Polyhedra_Library::Scalar_Products |
A class implementing various scalar product functions. More... | |
class | Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign |
Scalar product sign function object depending on topology. More... | |
class | Status |
A conjunctive assertion about a polyhedron. More... | |
class | Parma_Polyhedra_Library::Polyhedron |
The base class for convex polyhedra. More... | |
class | Parma_Polyhedra_Library::Polyhedron::Status |
A conjunctive assertion about a polyhedron. More... | |
class | Parma_Polyhedra_Library::Grid |
A grid. More... | |
class | Parma_Polyhedra_Library::Poly_Con_Relation |
The relation between a polyhedron and a constraint. More... | |
class | Parma_Polyhedra_Library::Poly_Gen_Relation |
The relation between a polyhedron and a generator. More... | |
class | Parma_Polyhedra_Library::Interval< Boundary, Info > |
A generic, not necessarily closed, possibly restricted interval. More... | |
class | Parma_Polyhedra_Library::C_Polyhedron |
A closed convex polyhedron. More... | |
class | Parma_Polyhedra_Library::NNC_Polyhedron |
A not necessarily closed convex polyhedron. More... | |
class | Parma_Polyhedra_Library::Widening_Function< PH > |
Wraps a widening method into a function object. More... | |
class | Parma_Polyhedra_Library::Limited_Widening_Function< PH, CS > |
Wraps a limited widening method into a function object. More... | |
class | Parma_Polyhedra_Library::BHRZ03_Certificate |
The convergence certificate for the BHRZ03 widening operator. More... | |
struct | Parma_Polyhedra_Library::BHRZ03_Certificate::Compare |
A total ordering on BHRZ03 certificates. More... | |
class | Parma_Polyhedra_Library::H79_Certificate |
A convergence certificate for the H79 widening operator. More... | |
struct | Parma_Polyhedra_Library::H79_Certificate::Compare |
A total ordering on H79 certificates. More... | |
class | Parma_Polyhedra_Library::Grid_Certificate |
The convergence certificate for the Grid widening operator. More... | |
class | Parma_Polyhedra_Library::Determinate< PS > |
Wraps a PPL class into a determinate constraint system interface. More... | |
class | Parma_Polyhedra_Library::Determinate< PS >::Binary_Operator_Assign_Lifter< Binary_Operator_Assign > |
A function adapter for the Determinate class. More... | |
class | Parma_Polyhedra_Library::Determinate< PS >::Rep |
The possibly shared representation of a Determinate object. More... | |
class | Parma_Polyhedra_Library::iterator_to_const< Container > |
An iterator on a sequence of read-only objects. More... | |
class | Parma_Polyhedra_Library::const_iterator_to_const< Container > |
A const_iterator on a sequence of read-only objects. More... | |
class | Parma_Polyhedra_Library::Powerset< D > |
The powerset construction on a base-level domain. More... | |
class | Parma_Polyhedra_Library::Pointset_Powerset< PS > |
The powerset construction instantiated on PPL pointset domains. More... | |
class | Parma_Polyhedra_Library::Smash_Reduction< D1, D2 > |
This class provides the reduction method for the Smash_Product domain. More... | |
class | Parma_Polyhedra_Library::Constraints_Reduction< D1, D2 > |
This class provides the reduction method for the Constraints_Product domain. More... | |
class | Parma_Polyhedra_Library::No_Reduction< D1, D2 > |
class | Parma_Polyhedra_Library::Partially_Reduced_Product< D1, D2, R > |
The partially reduced product of two abstractions. More... | |
class | Parma_Polyhedra_Library::Box< ITV > |
A not necessarily closed, iso-oriented hyperrectangle. More... | |
class | Parma_Polyhedra_Library::DB_Row_Impl_Handler< T > |
The handler of the actual DB_Row implementation. More... | |
class | Parma_Polyhedra_Library::DB_Row< T > |
The base class for the single rows of matrices. More... | |
class | Parma_Polyhedra_Library::DB_Row_Impl_Handler< T >::Impl |
The real implementation of a DB_Row object. More... | |
class | Parma_Polyhedra_Library::DB_Matrix< T > |
The base class for the square matrices. More... | |
class | Parma_Polyhedra_Library::DB_Matrix< T >::const_iterator |
A read-only iterator over the rows of the matrix. More... | |
class | Parma_Polyhedra_Library::BD_Shape< T > |
A bounded difference shape. More... | |
class | Parma_Polyhedra_Library::BD_Shape< T >::Status |
A conjunctive assertion about a BD_Shape<T> object. More... | |
class | Parma_Polyhedra_Library::GMP_Integer |
Unbounded integers as provided by the GMP library. More... | |
Defines | |
#define | PPL_VERSION_MAJOR 0 |
The major number of the PPL version. | |
#define | PPL_VERSION_MINOR 10 |
The minor number of the PPL version. | |
#define | PPL_VERSION_REVISION 0 |
The revision number of the PPL version. | |
#define | PPL_VERSION_BETA 34 |
The beta number of the PPL version. This is zero for official releases and nonzero for development snapshots. | |
#define | PPL_VERSION "0.10pre34" |
A string containing the PPL version. | |
#define | const_bool_nodef(name, value) enum { name = (value) } |
Declares a per-class constant of type bool , called name and with value value . | |
#define | const_int_nodef(name, value) enum { name = (value) } |
Declares a per-class constant of type int , called name and with value value . | |
#define | const_value_nodef(type, name, value) |
Declares a per-class constant of type type , called name and with value value . The value of the constant is accessible by means of the syntax name() . | |
#define | const_ref_nodef(type, name, value) |
Declares a per-class constant of type type , called name and with value value . A constant reference to the constant is accessible by means of the syntax name() . | |
#define | COMPILE_TIME_CHECK(e, msg) COMPILE_TIME_CHECK_AUX(e, __LINE__) |
Produces a compilation error if the compile-time constant e does not evaluate to true . | |
Typedefs | |
typedef PPL_COEFFICIENT_TYPE | Parma_Polyhedra_Library::Coefficient |
An alias for easily naming the type of PPL coefficients. | |
typedef Coefficient_traits_template < Coefficient > | Parma_Polyhedra_Library::Coefficient_traits |
An alias for easily naming the coefficient traits. | |
typedef size_t | Parma_Polyhedra_Library::dimension_type |
An unsigned integral type for representing space dimensions. | |
typedef size_t | Parma_Polyhedra_Library::memory_size_type |
An unsigned integral type for representing memory size in bytes. | |
Enumerations | |
enum | Parma_Polyhedra_Library::Degenerate_Element { Parma_Polyhedra_Library::UNIVERSE, Parma_Polyhedra_Library::EMPTY } |
Kinds of degenerate abstract elements. More... | |
enum | Parma_Polyhedra_Library::Relation_Symbol { Parma_Polyhedra_Library::LESS_THAN, Parma_Polyhedra_Library::LESS_OR_EQUAL, Parma_Polyhedra_Library::EQUAL, Parma_Polyhedra_Library::GREATER_OR_EQUAL, Parma_Polyhedra_Library::GREATER_THAN, Parma_Polyhedra_Library::NOT_EQUAL } |
Relation symbols. More... | |
enum | Parma_Polyhedra_Library::Complexity_Class { Parma_Polyhedra_Library::POLYNOMIAL_COMPLEXITY, Parma_Polyhedra_Library::SIMPLEX_COMPLEXITY, Parma_Polyhedra_Library::ANY_COMPLEXITY } |
Complexity pseudo-classes. More... | |
enum | Parma_Polyhedra_Library::Optimization_Mode { Parma_Polyhedra_Library::MINIMIZATION, Parma_Polyhedra_Library::MAXIMIZATION } |
Possible optimization modes. More... | |
enum | Parma_Polyhedra_Library::Topology { Parma_Polyhedra_Library::NECESSARILY_CLOSED = 0, Parma_Polyhedra_Library::NOT_NECESSARILY_CLOSED = 1 } |
Kinds of polyhedra domains. More... | |
enum | Parma_Polyhedra_Library::MIP_Problem_Status { Parma_Polyhedra_Library::UNFEASIBLE_MIP_PROBLEM, Parma_Polyhedra_Library::UNBOUNDED_MIP_PROBLEM, Parma_Polyhedra_Library::OPTIMIZED_MIP_PROBLEM } |
Possible outcomes of the MIP_Problem solver. More... | |
Variables | |
const Throwable *volatile | Parma_Polyhedra_Library::abandon_expensive_computations = 0 |
A pointer to an exception object. |
See Namespace, Hierarchical and Compound indexes for additional information about each single data type.
#define COMPILE_TIME_CHECK | ( | e, | |||
msg | ) | COMPILE_TIME_CHECK_AUX(e, __LINE__) |
Produces a compilation error if the compile-time constant e
does not evaluate to true
.
Definition at line 133 of file meta_programming.hh.
Referenced by Parma_Polyhedra_Library::swap().
#define const_bool_nodef | ( | name, | |||
value | ) | enum { name = (value) } |
Declares a per-class constant of type bool
, called name
and with value value
.
Differently from static constants, name
needs not (and cannot) be defined (for static constants, the need for a further definition is mandated by Section 9.4.2/4 of the C++ standard).
Definition at line 41 of file meta_programming.hh.
#define const_int_nodef | ( | name, | |||
value | ) | enum { name = (value) } |
Declares a per-class constant of type int
, called name
and with value value
.
Differently from static constants, name
needs not (and cannot) be defined (for static constants, the need for a further definition is mandated by Section 9.4.2/4 of the C++ standard).
Definition at line 55 of file meta_programming.hh.
#define const_ref_nodef | ( | type, | |||
name, | |||||
value | ) |
Value:
static const type& name() { \ static type name(value); \ return name; \ }
type
, called name
and with value value
. A constant reference to the constant is accessible by means of the syntax name()
.
Differently from static constants, name
needs not (and cannot) be defined (for static constants, the need for a further definition is mandated by Section 9.4.2/4 of the C++ standard).
Definition at line 87 of file meta_programming.hh.
#define const_value_nodef | ( | type, | |||
name, | |||||
value | ) |
Value:
static type name() { \ return value; \ }
type
, called name
and with value value
. The value of the constant is accessible by means of the syntax name()
.
Differently from static constants, name
needs not (and cannot) be defined (for static constants, the need for a further definition is mandated by Section 9.4.2/4 of the C++ standard).
Definition at line 70 of file meta_programming.hh.
#define PPL_VERSION "0.10pre34" |
A string containing the PPL version.
Let M
and m
denote the numbers associated to PPL_VERSION_MAJOR and PPL_VERSION_MINOR, respectively. The format of PPL_VERSION is M "." m
if both PPL_VERSION_REVISION (r
) and PPL_VERSION_BETA (b
)are zero, M "." m "pre" b
if PPL_VERSION_REVISION is zero and PPL_VERSION_BETA is not zero, M "." m "." r
if PPL_VERSION_REVISION is not zero and PPL_VERSION_BETA is zero, M "." m "." r "pre" b
if neither PPL_VERSION_REVISION nor PPL_VERSION_BETA are zero.
Definition at line 58 of file version.hh.
#define PPL_VERSION_BETA 34 |
The beta number of the PPL version. This is zero for official releases and nonzero for development snapshots.
Definition at line 44 of file version.hh.
Referenced by Parma_Polyhedra_Library::version_beta().
#define PPL_VERSION_MAJOR 0 |
The major number of the PPL version.
Definition at line 29 of file version.hh.
Referenced by Parma_Polyhedra_Library::version_major().
#define PPL_VERSION_MINOR 10 |
The minor number of the PPL version.
Definition at line 33 of file version.hh.
Referenced by Parma_Polyhedra_Library::version_minor().
#define PPL_VERSION_REVISION 0 |
The revision number of the PPL version.
Definition at line 37 of file version.hh.
Referenced by Parma_Polyhedra_Library::version_revision().
typedef PPL_COEFFICIENT_TYPE Parma_Polyhedra_Library::Coefficient |
An alias for easily naming the type of PPL coefficients.
Objects of type Coefficient are used to implement the integral valued coefficients occurring in linear expressions, constraints, generators, intervals, bounding boxes and so on. Depending on the chosen configuration options (see file README.configure
), a Coefficient may actually be:
mpz_class
type implemented by the C++ interface of the GMP library (this is the default configuration);Definition at line 89 of file Coefficient.types.hh.
typedef Coefficient_traits_template<Coefficient> Parma_Polyhedra_Library::Coefficient_traits |
An alias for easily naming the coefficient traits.
Definition at line 95 of file Coefficient.types.hh.
typedef size_t Parma_Polyhedra_Library::dimension_type |
An unsigned integral type for representing space dimensions.
Definition at line 21 of file globals.types.hh.
typedef size_t Parma_Polyhedra_Library::memory_size_type |
An unsigned integral type for representing memory size in bytes.
Definition at line 25 of file globals.types.hh.
Complexity pseudo-classes.
POLYNOMIAL_COMPLEXITY | Worst-case polynomial complexity. |
SIMPLEX_COMPLEXITY | Worst-case exponential complexity but typically polynomial behavior. |
ANY_COMPLEXITY | Any complexity. |
Definition at line 55 of file globals.types.hh.
00055 { 00057 POLYNOMIAL_COMPLEXITY, 00059 SIMPLEX_COMPLEXITY, 00061 ANY_COMPLEXITY 00062 };
Kinds of degenerate abstract elements.
UNIVERSE | The universe element, i.e., the whole vector space. |
EMPTY | The empty element, i.e., the empty set. |
Definition at line 29 of file globals.types.hh.
Possible outcomes of the MIP_Problem solver.
UNFEASIBLE_MIP_PROBLEM | The problem is unfeasible. |
UNBOUNDED_MIP_PROBLEM | The problem is unbounded. |
OPTIMIZED_MIP_PROBLEM | The problem has an optimal solution. |
Definition at line 19 of file MIP_Problem.types.hh.
00019 { 00021 UNFEASIBLE_MIP_PROBLEM, 00023 UNBOUNDED_MIP_PROBLEM, 00025 OPTIMIZED_MIP_PROBLEM 00026 };
Possible optimization modes.
Definition at line 66 of file globals.types.hh.
00066 { 00068 MINIMIZATION, 00070 MAXIMIZATION 00071 };
Relation symbols.
LESS_THAN | Less than. |
LESS_OR_EQUAL | Less than or equal to. |
EQUAL | Equal to. |
GREATER_OR_EQUAL | Greater than or equal to. |
GREATER_THAN | Greater than. |
NOT_EQUAL | Not equal to. |
Definition at line 38 of file globals.types.hh.
00038 { 00040 LESS_THAN, 00042 LESS_OR_EQUAL, 00044 EQUAL, 00046 GREATER_OR_EQUAL, 00048 GREATER_THAN, 00050 NOT_EQUAL 00051 };
Kinds of polyhedra domains.
Definition at line 21 of file Topology.hh.
00021 { 00022 NECESSARILY_CLOSED = 0, 00023 NOT_NECESSARILY_CLOSED = 1 00024 };
const PPL::Throwable *volatile Parma_Polyhedra_Library::abandon_expensive_computations = 0 |
A pointer to an exception object.
This pointer, which is initialized to zero, is repeatedly checked along any super-linear (i.e., computationally expensive) computation path in the library. When it is found nonzero the exception it points to is thrown. In other words, making this pointer point to an exception (and leaving it in this state) ensures that the library will return control to the client application, possibly by throwing the given exception, within a time that is a linear function of the size of the representation of the biggest object (powerset of polyhedra, polyhedron, system of constraints or generators) on which the library is operating upon.
Definition at line 31 of file globals.cc.
Referenced by Parma_Polyhedra_Library::Pointset_Powerset< PS >::concatenate_assign(), Parma_Polyhedra_Library::maybe_abandon(), and Parma_Polyhedra_Library::Powerset< D >::omega_reduce().