|
Public Member Functions |
| ~Federation () |
| Destructor: purge all the zones from this federation, ie, give them back to the factory.
|
void | unshareAllocator () |
| Unshare its allocator.
|
Federation & | operator= (const Federation &original) throw (std::bad_alloc) |
| Operator =.
|
void | stealDBMs (Federation *fed) |
| Steal DBMs from a federation and computes the union with this federation: the argument federation looses its DBMs.
|
std::ostream & | serialize (std::ostream &os) const |
| Serialize this federation to a stream.
|
void | unserialize (std::istream &is) throw (std::bad_alloc) |
| Unserialize this federation from a stream.
|
std::ostream & | prettyPrint (std::ostream &os) const |
| Pretty print this federation to a stream.
|
cindex_t | getNumberOfClocks () const |
| Number of clocks used in this federation: all the zones have the same number of clocks.
|
void | initToZero () |
| (Re-)initialize the federation so that it contains only 0.
|
void | initUnconstrained () |
| (Re-)initialize the federation so that it is completely unconstrained.
|
bool | intersection (const raw_t *dbm) |
| Intersection with one DBM.
|
bool | intersection (const Federation *anotherFed) throw (std::bad_alloc) |
| Intersection with a federation.
|
bool | constrain (cindex_t clockIndexI, cindex_t clockIndexJ, raw_t rawBound) |
| Apply a constraint to the federation = tighten a constraint.
|
bool | constrainN (const constraint_t *constraints, size_t n) |
| Apply several constraints to the federation.
|
bool | constrain (constraint_t c) |
| Wrapper for constrain(uint,uint,raw_t).
|
bool | constrain (cindex_t clockIndexI, cindex_t clockIndexJ, int32_t bound, bool isStrict) |
| Wrapper for constrain(uint,uint,raw_t).
|
bool | constrain (cindex_t clockIndexI, cindex_t clockIndexJ, int32_t bound, strictness_t strictness) |
| Wrapper for constrain(uint,uint,raw_t).
|
bool | satisfies (cindex_t clockIndexI, cindex_t clockIndexJ, raw_t rawConstraint) const |
bool | satisfies (constraint_t constraint) const |
| Wrapper for satisfies(uint,uint,raw_t).
|
bool | satisfies (cindex_t clockIndexI, cindex_t clockIndexJ, int32_t bound, bool isStrict) const |
| Wrapper for satisfies(uint,uint,raw_t).
|
bool | satisfies (cindex_t clockIndexI, cindex_t clockIndexJ, int32_t bound, strictness_t strictness) const |
| Wrapper for satisfies(uint,uint,raw_t).
|
void | up () |
| Up operation = strongest post-condition = delay = future computation.
|
void | down () |
| Down operation = weakest pre-condition = past computation.
|
bool | isUnbounded () const |
bool | isEmpty () const |
void | microDelay () |
| "Micro" delay operation: render upper bounds xi <= bound non strict: xi < bound
|
bool | substract (const raw_t *dbm) throw (std::bad_alloc) |
| Substract a DBM from this federation.
|
bool | substract (const Federation *fed) throw (std::bad_alloc) |
| Substract a federation from this federation.
|
Federation & | operator-= (const Federation &fed) throw (std::bad_alloc) |
| For convenience: -= operator.
|
bool | isMaybeIncludedIn (const Federation *fed) |
| Approximate inclusion check: if it is included then it is for sure but if it is not, then maybe it could have been.
|
bool | isReallyIncludedIn (const Federation *fed) |
| Exact inclusion check.
|
void | freeClock (cindex_t clockIndex) |
| Free a given clock: remove all the constraints (except >= 0) for a given clock.
|
void | updateValue (cindex_t clockIndex, int32_t value) |
| Update of the form x := value, where x is a clock and value an integer.
|
void | updateClock (cindex_t clockIndexI, cindex_t clockIndexJ) |
| Update of the form xi := xj, where xi and xj are clocks.
|
void | updateIncrement (cindex_t clockIndex, int32_t increment) |
| Update of the form x += inc, where x is a clock and inc an integer.
|
void | update (cindex_t clockIndexI, cindex_t clockIndexJ, int32_t increment) |
| General update of the form: xi := xj + inc, where xi and xj are clocks and inc an integer.
|
relation_t | partialRelation (const raw_t *dbm) const |
| Partial relation with a DBM (from DBM point of view).
|
relation_t | relation (const raw_t *dbm) const throw (std::bad_alloc) |
| Exact (and very expensive) relation with a DBM, in contrast to partialRelation.
|
void | unionWith (DBMList_t *fed) |
| Compute union of federations with inclusion checking.
|
void | unionWithCopy (const DBMList_t *fed) throw (std::bad_alloc) |
| As unionWith but copy the argument when needed.
|
void | convexUnion () |
| Compute convex union of the DBMs of this federation.
|
void | stretchUp () |
| Stretch-up: remove all upper bounds for all clocks.
|
void | stretchDown (cindex_t clockIndex) |
| Stretch-down: remove all lower bounds for a given clock.
|
void | predt (Federation *bad) |
| Operation similar to down but constrained: predecessors of fed avoiding the states that could reach bad.
|
void | add (const DBMList_t *dbmList) throw (std::bad_alloc) |
| Add DBMs to this federation.
|
Federation * | add (const Federation *arg) throw (std::bad_alloc) |
| Add DBMs of a federation to this federation.
|
Federation & | operator+= (const Federation &arg) throw (std::bad_alloc) |
| Operator +=: add DBMs of another federation.
|
void | reduce () |
| Simple reduce: try to remove redundant DBMs.
|
void | expensiveReduce () |
| Very EXPENSIVE reduce, follows full semantics of federation.
|
bool | removePartialIncludedIn (const Federation *arg) |
| Remove partially included DBMs in the argument federation.
|
DBMAllocator_t * | getAllocator () |
| Access to the factory: for allocation/deallocation.
|
const DBMAllocator_t * | getAllocator () const |
| const access to factory, only for debug (use in assert).
|
const DBMList_t * | getDBMList () const |
| const access to the DBMs.
|
DBMList_t * | getDBMList () |
| Access to the DBMs.
|
DBMList_t ** | getAtDBMList () |
| Access to the DBMs.
|
raw_t * | getFirstDBM () |
| Access to the first DBM.
|
size_t | getSize () const |
| Size of federation.
|
raw_t * | newDBM () throw (std::bad_alloc()) |
| Allocate and add a DBM.
|
void | reset () |
| Reset the federation to empty.
|
void | extrapolateMaxBounds (const int32_t *max) |
| Classical extrapolation based on maximal bounds, formerly called k-normalization.
|
void | diagonalExtrapolateMaxBounds (const int32_t *max) |
| Diagonal extrapolation based on maximal bounds.
|
void | extrapolateLUBounds (const int32_t *lower, const int32_t *upper) |
| Extrapolation based on lower-upper bounds.
|
void | diagonalExtrapolateLUBounds (const int32_t *lower, const int32_t *upper) |
| Diagonal extrapolation based on lower-upper bounds.
|
void | initIndexTable (cindex_t newDim) |
| Initialize the indirection table to identity.
|
void | initIndexTable (const uint32_t *activeClocks, size_t size) |
| Initialize the indirection table according to a bitstring marking active clocks.
|
void | initFederation (DBMAllocator_t *dbmf, cindex_t nbClocks) |
| Initialize a federation, given a factory and a number of clocks.
|
void | initFederation (DBMAllocator_t *dbmf, cindex_t nbClocks, const uint32_t *activeClocks, size_t size) |
| Initialize a federation, given a factory, a number of clocks, and a bitstring marking the active clocks.
|
void | changeClocks (const uint32_t *oldClocks, const uint32_t *newClocks, size_t size) |
| Change the set of active clocks.
|
Static Public Member Functions |
static Federation * | createFederation (DBMAllocator_t *factory, cindex_t nbClocks) throw (std::bad_alloc) |
| Create a federation, given a factory and a number of clocks.
|
static Federation * | createFederation (const Federation *original) throw (std::bad_alloc) |
| Create a federation, given an original federation, ie, copy.
|
static Federation * | createFederation (DBMAllocator_t *factory, cindex_t nbClocks, const uint32_t *activeClocks, size_t size) throw (std::bad_alloc) |
| Create a federation, given a factory, a number of clocks, and an active clock mapping (bit string).
|
Private Member Functions |
void | copyFromFederation (const Federation *original) throw (std::bad_alloc) |
| Copy the federation without the index table.
|
| Federation (DBMAllocator_t *dbmf, cindex_t nbClocks) |
| Constructor.
|
| Federation (const Federation &original) throw (std::bad_alloc) |
| Copy constructor.
|
| Federation (DBMAllocator_t *dbmf, cindex_t nbClocks, const uint32_t *activeClocks, size_t size) |
| Constructor with active clocks given.
|
Static Private Member Functions |
static void * | allocateFor (cindex_t maxDim) |
| Allocate memory for a Federation of maxDim clocks.
|
static size_t | getSizeOfFederationFor (cindex_t maxDim) |
static size_t | getPaddedIntOffsetFor (cindex_t maxDim) |
Private Attributes |
DBMFederation_t | dbmFederation |
| wrapped federation (C struct)
|
DBMAllocator_t * | dbmAllocator |
| allocator to (de-)allocate DBMs
|
cindex_t | indexTable [] |
| indirection index table
|
Friends |
class | state::SymbolicState |