APRONXX  0.9.12
Public Member Functions | Protected Member Functions | Protected Attributes | Friends | List of all members
apron::generator0 Class Reference

Level 0 generator (ap_generator0_t wrapper). More...

#include <apxx_generator0.hh>

Inherits apron::use_malloc.

Public Member Functions

 generator0 (ap_gentyp_t gentyp=AP_GEN_RAY)
 Creates a new generator from an empty linear expression. More...
 
 generator0 (ap_gentyp_t gentyp, const linexpr0 &lin)
 Creates a new generator constraint from a linear expression (copied). More...
 
 generator0 (const generator0 &x)
 (Deep) copy of a generator. More...
 
 generator0 (const generator0 &x, const dimchange &d)
 Makes a (deep) copy of a generator, and applies a dimension change to the underlying linear expression. More...
 
 generator0 (const generator0 &x, const dimperm &d)
 Makes a (deep) copy of a generator, and applies a permutation to the underlying linear expression. More...
 
 ~generator0 ()
 Frees the generator, including the embedded linear expression. More...
 
generator0operator= (const generator0 &x)
 (Deep) copy. More...
 
void resize (size_t size)
 Resizes the underlying linear expression. More...
 
void add_dimensions (const dimchange &d)
 Changes the dimension of the underlying linear expression. More...
 
void permute_dimensions (const dimperm &d)
 Applies a permutation to the underlying linear expression. More...
 
size_t size () const
 Returns the size of the underlying linear expression. More...
 
ap_gentyp_t & get_gentyp ()
 Returns a (modifiable) reference to the constraint type. More...
 
const ap_gentyp_t & get_gentyp () const
 Returns a reference to the constraint type. More...
 
bool has_linexpr () const
 Returns whether the generator has a valid linear expression. More...
 
linexpr0get_linexpr ()
 Returns a (modifiable) reference to the underlying linear expression. More...
 
const linexpr0get_linexpr () const
 Returns a reference to the underlying linear expression. More...
 
void set_linexpr (const linexpr0 &c)
 Sets the underlying linear expression to c (copied). More...
 
void print (char **name_of_dim=NULL, FILE *stream=stdout) const
 Prints to a C stream. More...
 
const ap_generator0_t * get_ap_generator0_t () const
 Returns a pointer to the internal APRON object stored in *this. More...
 
ap_generator0_t * get_ap_generator0_t ()
 Returns a pointer to the internal APRON object stored in *this. More...
 
- Public Member Functions inherited from apron::use_malloc
void * operator new (size_t sz)
 
void * operator new[] (size_t sz)
 
void operator delete (void *p)
 
void operator delete[] (void *p)
 

Protected Member Functions

 generator0 (ap_generator0_t &l)
 Internal use only. Performs a shallow copy and takes ownership of the contents. More...
 

Protected Attributes

ap_generator0_t l
 Structure managed by APRON. More...
 

Friends

std::ostream & operator<< (std::ostream &os, const generator0 &s)
 Printing. More...
 

Detailed Description

Level 0 generator (ap_generator0_t wrapper).

A generator0 object represents a generator: vertex, ray, line, modular line, or modular ray. It stores and manages a linexpr0 (linear expression with scalar coefficients only), and a generator type (vertex, ray , etc).

Constructor & Destructor Documentation

◆ generator0() [1/6]

apron::generator0::generator0 ( ap_generator0_t &  l)
inlineprotected

Internal use only. Performs a shallow copy and takes ownership of the contents.

◆ generator0() [2/6]

apron::generator0::generator0 ( ap_gentyp_t  gentyp = AP_GEN_RAY)
inline

Creates a new generator from an empty linear expression.

The linear expression is created sparse and empty (has_linexpr returns true).

  • gentyp can be AP_GEN_LINE, AP_GEN_RAY, AP_GEN_VERTEX, AP_GEN_LINEMOD, or AP_GEN_RAYMOD.

◆ generator0() [3/6]

generator0::generator0 ( ap_gentyp_t  gentyp,
const linexpr0 lin 
)
inline

Creates a new generator constraint from a linear expression (copied).

  • gentyp can be AP_GEN_LINE, AP_GEN_RAY, AP_GEN_VERTEX, AP_GEN_LINEMOD, or AP_GEN_RAYMOD.
Warning
lin should have only scalar (non-interval) coefficients (unchecked).

◆ generator0() [4/6]

generator0::generator0 ( const generator0 x)
inline

(Deep) copy of a generator.

◆ generator0() [5/6]

generator0::generator0 ( const generator0 x,
const dimchange d 
)
inline

Makes a (deep) copy of a generator, and applies a dimension change to the underlying linear expression.

◆ generator0() [6/6]

generator0::generator0 ( const generator0 x,
const dimperm d 
)
inline

Makes a (deep) copy of a generator, and applies a permutation to the underlying linear expression.

◆ ~generator0()

generator0::~generator0 ( )
inline

Frees the generator, including the embedded linear expression.

Member Function Documentation

◆ add_dimensions()

void generator0::add_dimensions ( const dimchange d)
inline

Changes the dimension of the underlying linear expression.

Exceptions
std::invalid_argumentif no valid linear expression has been defined.

◆ get_ap_generator0_t() [1/2]

const ap_generator0_t * generator0::get_ap_generator0_t ( ) const
inline

Returns a pointer to the internal APRON object stored in *this.

◆ get_ap_generator0_t() [2/2]

ap_generator0_t * generator0::get_ap_generator0_t ( )
inline

Returns a pointer to the internal APRON object stored in *this.

◆ get_gentyp() [1/2]

ap_gentyp_t & generator0::get_gentyp ( )
inline

Returns a (modifiable) reference to the constraint type.

Returns
either AP_GEN_LINE, AP_GEN_RAY, AP_GEN_VERTEX, AP_GEN_LINEMOD, or AP_GEN_RAYMOD.

◆ get_gentyp() [2/2]

const ap_gentyp_t & generator0::get_gentyp ( ) const
inline

Returns a reference to the constraint type.

Returns
either AP_GEN_LINE, AP_GEN_RAY, AP_GEN_VERTEX, AP_GEN_LINEMOD, or AP_GEN_RAYMOD.

◆ get_linexpr() [1/2]

linexpr0 & generator0::get_linexpr ( )
inline

Returns a (modifiable) reference to the underlying linear expression.

Exceptions
std::invalid_argumentif no valid linear expression has been defined.

◆ get_linexpr() [2/2]

const linexpr0 & generator0::get_linexpr ( ) const
inline

Returns a reference to the underlying linear expression.

Exceptions
std::invalid_argumentif no valid linear expression has been defined.

◆ has_linexpr()

bool generator0::has_linexpr ( ) const
inline

Returns whether the generator has a valid linear expression.

Note
The only way the linear expression may be invalid is when accessing fields of uninitialised (or enlarged) generator0_array.

◆ operator=()

generator0 & generator0::operator= ( const generator0 x)
inline

(Deep) copy.

◆ permute_dimensions()

void generator0::permute_dimensions ( const dimperm d)
inline

Applies a permutation to the underlying linear expression.

Exceptions
std::invalid_argumentif no valid linear expression has been defined.

◆ print()

void generator0::print ( char **  name_of_dim = NULL,
FILE *  stream = stdout 
) const
inline

Prints to a C stream.

◆ resize()

void generator0::resize ( size_t  size)
inline

Resizes the underlying linear expression.

Exceptions
std::invalid_argumentif no valid linear expression has been defined.

◆ set_linexpr()

void generator0::set_linexpr ( const linexpr0 c)
inline

Sets the underlying linear expression to c (copied).

Does not fail as get_linexpr can: if the generator was created without an underlying expression, it is created.

Warning
c should have only scalar (non-interval) coefficients (unchecked).

◆ size()

size_t generator0::size ( ) const
inline

Returns the size of the underlying linear expression.

Exceptions
std::invalid_argumentif no valid linear expression has been defined.

Friends And Related Function Documentation

◆ operator<<

std::ostream& operator<< ( std::ostream &  os,
const generator0 s 
)
friend

Printing.

Variable naming can be configured through the varname stream modifier.

Exceptions
std::invalid_argumentif the underlying expression is missing.

Member Data Documentation

◆ l

ap_generator0_t apron::generator0::l
protected

Structure managed by APRON.


The documentation for this class was generated from the following files: