PPL
0.12.1
|
A system of generators. More...
#include <ppl.hh>
Classes | |
class | const_iterator |
An iterator over a system of generators. More... | |
Public Member Functions | |
Generator_System () | |
Default constructor: builds an empty system of generators. | |
Generator_System (const Generator &g) | |
Builds the singleton system containing only generator g . | |
Generator_System (const Generator_System &gs) | |
Ordinary copy constructor. | |
~Generator_System () | |
Destructor. | |
Generator_System & | operator= (const Generator_System &y) |
Assignment operator. | |
dimension_type | space_dimension () const |
Returns the dimension of the vector space enclosing *this . | |
void | clear () |
Removes all the generators from the generator system and sets its space dimension to 0. | |
void | insert (const Generator &g) |
Inserts in *this a copy of the generator g , increasing the number of space dimensions if needed. | |
bool | empty () const |
Returns true if and only if *this has no generators. | |
const_iterator | begin () const |
Returns the const_iterator pointing to the first generator, if *this is not empty; otherwise, returns the past-the-end const_iterator. | |
const_iterator | end () const |
Returns the past-the-end const_iterator. | |
bool | OK () const |
Checks if all the invariants are satisfied. | |
void | ascii_dump () const |
Writes to std::cerr an ASCII representation of *this . | |
void | ascii_dump (std::ostream &s) const |
Writes to s an ASCII representation of *this . | |
void | print () const |
Prints *this to std::cerr using operator<< . | |
bool | ascii_load (std::istream &s) |
Loads from s an ASCII representation (as produced by ascii_dump(std::ostream&) const) and sets *this accordingly. Returns true if successful, false otherwise. | |
memory_size_type | total_memory_in_bytes () const |
Returns the total size in bytes of the memory occupied by *this . | |
memory_size_type | external_memory_in_bytes () const |
Returns the size in bytes of the memory managed by *this . | |
void | m_swap (Generator_System &y) |
Swaps *this with y . | |
Static Public Member Functions | |
static dimension_type | max_space_dimension () |
Returns the maximum space dimension a Generator_System can handle. | |
static void | initialize () |
Initializes the class. | |
static void | finalize () |
Finalizes the class. | |
static const Generator_System & | zero_dim_univ () |
Returns the singleton system containing only Generator::zero_dim_point(). | |
Related Functions | |
(Note that these are not member functions.) | |
std::ostream & | operator<< (std::ostream &s, const Generator_System &gs) |
Output operator. | |
void | swap (Generator_System &x, Generator_System &y) |
Swaps x with y . | |
void | swap (Generator_System &x, Generator_System &y) |
A system of generators.
An object of the class Generator_System is a system of generators, i.e., a multiset of objects of the class Generator (lines, rays, points and closure points). When inserting generators in a system, space dimensions are automatically adjusted so that all the generators in the system are defined on the same vector space. A system of generators which is meant to define a non-empty polyhedron must include at least one point: the reason is that lines, rays and closure points need a supporting point (lines and rays only specify directions while closure points only specify points in the topological closure of the NNC polyhedron).
x
and y
are defined as follows: Variable x(0); Variable y(1);
Generator_System gs; gs.insert(line(x + 0*y));
gs.insert(point(0*x + 0*y));
gs.insert(point(0*x));
gs.insert(point(0*x + 1*y));
Generator_System gs; gs.insert(ray(x + 0*y));
gs.insert(point(0*x + 0*y));
Generator_System gs; gs.insert(point(0*x + 0*y)); gs.insert(point(0*x + 3*y)); gs.insert(point(3*x + 0*y)); gs.insert(point(3*x + 3*y));
Generator_System gs; gs.insert(point(x + y)); gs.insert(closure_point(0*x + 0*y)); gs.insert(closure_point(0*x + 3*y)); gs.insert(closure_point(3*x + 0*y)); gs.insert(closure_point(3*x + 3*y));
Generator_System gs; gs.insert(point(0*x + 0*y)); gs.insert(point(0*x + 1*y)); gs.insert(ray(x - y));
bool Parma_Polyhedra_Library::Generator_System::OK | ( | ) | const |
Checks if all the invariants are satisfied.
Returns true
if and only if *this
is a valid Linear_System and each row in the system is a valid Generator.
Reimplemented in Parma_Polyhedra_Library::Grid_Generator_System.
bool Parma_Polyhedra_Library::Generator_System::ascii_load | ( | std::istream & | s | ) |
Loads from s
an ASCII representation (as produced by ascii_dump(std::ostream&) const) and sets *this
accordingly. Returns true
if successful, false
otherwise.
Resizes the matrix of generators using the numbers of rows and columns read from s
, then initializes the coordinates of each generator and its type reading the contents from s
.
Reimplemented in Parma_Polyhedra_Library::Grid_Generator_System.
|
related |
Output operator.
Writes false
if gs
is empty. Otherwise, writes on s
the generators of gs
, all in one row and separated by ", ".
|
related |
Swaps x
with y
.
|
related |