|
Public Types |
enum | { MAX_DIM_POWER = 15,
MAX_DIM = ((1 << MAX_DIM_POWER) - 1)
} |
Public Member Functions |
| dbm_t (cindex_t dim=1) |
| Initialize a dbm_t to empty DBM of a given dimension.
|
| dbm_t (const dbm_t &arg) |
| Standard copy constructor.
|
| dbm_t (const raw_t *arg, cindex_t dim) |
| Copy constructor from a DBM matrix.
|
| ~dbm_t () |
cindex_t | getDimension () const |
std::string | toString (const ClockAccessor &) const |
void | setDimension (cindex_t dim) |
| Change the dimension of this DBM.
|
bool | isEmpty () const |
void | setEmpty () |
| Empty this DBM.
|
void | nil () |
| Short for setDimension(1), has the effect of deallocating the DBM.
|
bool | hasZero () const |
uint32_t | hash (uint32_t seed=0) const |
bool | sameAs (const dbm_t &arg) const |
void | intern () |
| Try to share the DBM.
|
void | copyFrom (const raw_t *src, cindex_t dim) |
| Copy from a DBM.
|
void | copyTo (raw_t *dst, cindex_t dim) const |
| Copy to a DBM.
|
const raw_t * | operator() () const |
raw_t | operator() (cindex_t i, cindex_t j) const |
const raw_t * | operator[] (cindex_t i) const |
raw_t * | getDBM () |
size_t | analyzeForMinDBM (uint32_t *bitMatrix) const |
| Compute the minimal set of constraints to represent this DBM.
|
int32_t * | writeToMinDBMWithOffset (bool minimizeGraph, bool tryConstraints16, allocator_t c_alloc, size_t offset) const |
| Compute & save the minimal set of constraints.
|
int32_t * | writeAnalyzedDBM (uint32_t *bitMatrix, size_t nbConstraints, BOOL tryConstraints16, allocator_t c_alloc, size_t offset) const |
| Similar to writeToMinDBMWithOffset but works with a pre-analyzed DBM.
|
relation_t | relation (mingraph_t ming, raw_t *unpackBuffer) const |
| Relation with a mingraph_t,.
|
dbm_t & | operator= (const dbm_t &) |
| Overload of standard operators.
|
dbm_t & | operator= (const raw_t *) |
bool | operator== (const dbm_t &) const |
| Comparisons have the semantics of set inclusion.
|
bool | operator== (const fed_t &) const |
bool | operator== (const raw_t *) const |
bool | operator!= (const dbm_t &) const |
bool | operator!= (const fed_t &) const |
bool | operator!= (const raw_t *) const |
bool | operator< (const dbm_t &) const |
bool | operator< (const fed_t &) const |
bool | operator< (const raw_t *) const |
bool | operator> (const dbm_t &) const |
bool | operator> (const fed_t &) const |
bool | operator> (const raw_t *) const |
bool | operator<= (const dbm_t &) const |
bool | operator<= (const fed_t &) const |
bool | operator<= (const raw_t *) const |
bool | operator>= (const dbm_t &) const |
bool | operator>= (const fed_t &) const |
bool | operator>= (const raw_t *) const |
relation_t | relation (const dbm_t &arg) const |
| Relation (wrt inclusion, approximate only for fed_t).
|
relation_t | relation (const fed_t &arg) const |
relation_t | relation (const raw_t *arg, cindex_t dim) const |
bool | lt (const fed_t &arg) const |
| Exact (expensive) relations (for fed_t only).
|
bool | gt (const fed_t &arg) const |
bool | le (const fed_t &arg) const |
bool | ge (const fed_t &arg) const |
bool | eq (const fed_t &arg) const |
relation_t | exactRelation (const fed_t &arg) const |
dbm_t & | setZero () |
| Set this zone to zero (origin).
|
dbm_t & | setInit () |
| (re-)initialize the DBM with no constraint.
|
bool | isInit () const |
bool | isZero () const |
int32_t | getUpperMinimumCost (int32_t cost) const |
| Computes the biggest lower cost in the zone.
|
int32_t | getInfimum () const |
| Only for compatibility with priced DBMs.
|
dbm_t & | operator+= (const dbm_t &) |
| Convex union operator (+).
|
dbm_t & | operator+= (const fed_t &) |
dbm_t & | operator+= (const raw_t *) |
dbm_t & | operator &= (const dbm_t &) |
| Intersection and constraint operator (&).
|
dbm_t & | operator &= (const raw_t *) |
dbm_t & | operator &= (const constraint_t &) |
dbm_t & | operator &= (const base::pointer_t< constraint_t > &) |
dbm_t & | operator &= (const std::vector< constraint_t > &) |
bool | constrain (cindex_t i, int32_t value) |
| Methods for constraining: with one or more constraints.
|
bool | constrain (cindex_t i, cindex_t j, raw_t c) |
bool | constrain (cindex_t i, cindex_t j, int32_t b, strictness_t s) |
bool | constrain (cindex_t i, cindex_t j, int32_t b, bool isStrict) |
bool | constrain (const constraint_t &c) |
bool | constrain (const constraint_t *c, size_t n) |
bool | constrain (const cindex_t *table, const constraint_t *c, size_t n) |
bool | constrain (const cindex_t *table, const base::pointer_t< constraint_t > &) |
bool | constrain (const cindex_t *table, const std::vector< constraint_t > &) |
bool | intersects (const dbm_t &) const |
bool | intersects (const fed_t &) const |
bool | intersects (const raw_t *, cindex_t dim) const |
dbm_t & | up () |
| Delay (strongest post-condition).
|
dbm_t & | down () |
| Inverse delay (weakest pre-condition).
|
dbm_t & | freeClock (cindex_t clock) |
| Free clock (unconstrain).
|
dbm_t & | freeUp (cindex_t clock) |
| Free upper or lower bounds only for a particular clock or for all clocks.
|
dbm_t & | freeDown (cindex_t clock) |
dbm_t & | freeAllUp () |
dbm_t & | freeAllDown () |
void | updateValue (cindex_t x, int32_t v) |
| Update methods where x & y are clocks, v an integer value.
|
void | updateClock (cindex_t x, cindex_t y) |
void | updateIncrement (cindex_t x, int32_t v) |
void | update (cindex_t x, cindex_t y, int32_t v) |
bool | satisfies (cindex_t i, cindex_t j, raw_t c) const |
| Check if the DBM satisfies a constraint c_ij.
|
bool | satisfies (const constraint_t &c) const |
bool | operator && (const constraint_t &c) const |
bool | isUnbounded () const |
dbm_t & | relaxUp () |
| Make upper or lower finite bounds non strict.
|
dbm_t & | relaxDown () |
dbm_t & | relaxUpClock (cindex_t clock) |
| Similar for all bounds of a particular clock.
|
dbm_t & | relaxDownClock (cindex_t clock) |
dbm_t & | relaxAll () |
| Make all constraints (except infinity) non strict.
|
bool | contains (const IntValuation &point) const |
| Test point inclusion.
|
bool | contains (const int32_t *point, cindex_t dim) const |
bool | contains (const DoubleValuation &point) const |
bool | contains (const double *point, cindex_t dim) const |
bool | delay (const DoubleValuation &point, double *t) const |
| Compute the 'almost min' necessary delay from a point to enter this federation.
|
bool | delay (const double *point, cindex_t dim, double *t) const |
void | extrapolateMaxBounds (const int32_t *max) |
| Extrapolations:.
|
void | diagonalExtrapolateMaxBounds (const int32_t *max) |
void | extrapolateLUBounds (const int32_t *lower, const int32_t *upper) |
void | diagonalExtrapolateLUBounds (const int32_t *lower, const int32_t *upper) |
void | resize (const uint32_t *bitSrc, const uint32_t *bitDst, size_t bitSize, cindex_t *table) |
| Resize this DBM: bitSrc marks the subset of clocks (out from a larger total set) that are in this DBM and bitDst marks the subset of clocks we want to change to.
|
void | changeClocks (const cindex_t *target, cindex_t newDim) |
| Resize and change clocks of this DBM.
|
void | swapClocks (cindex_t x, cindex_t y) |
| Swap clocks x and y.
|
DoubleValuation & | getValuation (DoubleValuation &cval, bool *freeC=NULL) const throw (std::out_of_range) |
| Get a clock valuation and change only the clocks that are marked free.
|
| dbm_t (const ClockOperation< dbm_t > &op) |
| Special constructor to copy the result of a pending operation.
|
ClockOperation< dbm_t > | operator() (cindex_t clk) |
bool | isSubtractionEmpty (const raw_t *arg, cindex_t dim) const |
bool | isSubtractionEmpty (const fed_t &arg) const |
bool | isSubtractionEmpty (const dbm_t &arg) const |
void | newCopy (const raw_t *arg, cindex_t dim) |
| Simplified copy with.
|
void | newCopy (const dbm_t &arg) |
| Simplified copy with.
|
void | updateCopy (const raw_t *arg, cindex_t dim) |
| Simplified copy with.
|
void | updateCopy (const dbm_t &arg) |
| Simplified copy with.
|
const idbm_t * | const_idbmt () const |
| Const access to its idbm_t,.
|
idbm_t * | idbmt () |
const raw_t * | const_dbm () const |
| Explicit const access to the DBM matrix.
|
raw_t * | dbm () |
| Mutable access to the DBM matrix.
|
cindex_t | edim () const |
cindex_t | pdim () const |
bool | isMutable () const |
raw_t * | getNew () |
| Set and return a new writable DBM,.
|
raw_t * | getCopy () |
| Set and return a writable copy of this DBM,.
|
Static Public Member Functions |
static size_t | getSizeOfMinDBM (cindex_t dim, mingraph_t) |
| Wrapper for dbm_getSizeOfMinDBM.
|
static dbm_t | readFromMinDBM (cindex_t dim, mingraph_t) |
| Construct a dbm_t from a mingraph_t.
|
Private Member Functions |
uintptr_t | uval () const |
void | incRef () const |
| Wrapper for idbmPtr.
|
void | decRef () const |
| Wrapper for idbmPtr.
|
void | empty (cindex_t dim) |
| Specialized versions to remove idbmPtr and setEmpty(dim),.
|
void | emptyImmutable (cindex_t dim) |
void | emptyMutable (cindex_t dim) |
void | setEmpty (cindex_t dim) |
| Set idbmPtr to empty with dimension dim.
|
void | setPtr (idbm_t *ptr) |
| Set a pointer for idbmPtr.
|
bool | tryMutable () |
| Check and try to make idbmPtr mutable cheaply (eg if reference counter is equal to 1 and the DBM is in the hash, then it is cheap).
|
raw_t * | setNew (cindex_t dim) |
| Set idbmPtr to a newly allocated DBM with explicit dimension.
|
raw_t * | inew (cindex_t dim) |
| Allocate new DBM and return the matrix.
|
raw_t * | icopy (cindex_t dim) |
| Copy its DBM and return the matrix.
|
void | ptr_intern () |
| Implementations of previous methods with.
|
dbm_t & | ptr_convexUnion (const raw_t *arg, cindex_t dim) |
bool | ptr_intersectionIsArg (const raw_t *arg, cindex_t dim) |
bool | ptr_constrain (cindex_t i, cindex_t j, raw_t c) |
bool | ptr_constrain (cindex_t k, int32_t value) |
bool | ptr_constrain (const constraint_t *cnstr, size_t n) |
bool | ptr_constrain (const cindex_t *table, const constraint_t *cnstr, size_t n) |
void | ptr_up () |
void | ptr_down () |
void | ptr_freeClock (cindex_t k) |
void | ptr_updateValue (cindex_t i, int32_t v) |
void | ptr_updateClock (cindex_t i, cindex_t j) |
void | ptr_update (cindex_t i, cindex_t j, int32_t v) |
void | ptr_freeUp (cindex_t k) |
void | ptr_freeDown (cindex_t k) |
void | ptr_freeAllUp () |
void | ptr_freeAllDown () |
void | ptr_relaxDownClock (cindex_t k) |
void | ptr_relaxUpClock (cindex_t k) |
void | ptr_relaxAll () |
bool | ptr_getValuation (DoubleValuation &cval, bool *freeC) const |
void | ptr_swapClocks (cindex_t x, cindex_t y) |
Private Attributes |
idbm_t * | idbmPtr |
| Internal pointer or special coding for empty.
|
Friends |
class | fed_t |
class | dbmlist_t |