|
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 |