void pdbm_updateValue(PDBM &pdbm, cindex_t dim, cindex_t clock, int32_t value) { assert(value >= 0); assert(pdbm && dim && clock < dim); assert(pdbm_getRate(pdbm, dim, clock) == 0); pdbm_prepare(pdbm, dim); dbm_updateValue(pdbm_matrix(pdbm), dim, clock, value); assertx(pdbm_isValid(pdbm, dim)); }
void pdbm_updateValueZero(PDBM &pdbm, cindex_t dim, cindex_t clock, int32_t value, cindex_t zero) { assert(value >= 0); assert(pdbm && dim && clock < dim && zero < dim); assert(pdbm_areOnZeroCycle(pdbm, dim, clock, zero)); pdbm_prepare(pdbm, dim); int32_t *rates = pdbm_rates(pdbm); if (zero) { rates[zero] += rates[clock]; } rates[clock] = 0; dbm_updateValue(pdbm_matrix(pdbm), dim, clock, value); assertx(pdbm_isValid(pdbm, dim)); }
void Clocks::set( unsigned int id, int32_t value ) { ASSERT( value >= 0); ASSERT( id + 1 < dim ); dbm_updateValue( data, dim, id + 1, value ); }