plutus-core
Safe HaskellNone
LanguageHaskell2010

UntypedPlutusCore.Evaluation.Machine.Cek.StepCounter

Synopsis

Documentation

newtype StepCounter (n :: Nat) s Source #

A set of Word8 counters that is used in the CEK machine to count steps.

Constructors

StepCounter (MutablePrimArray s Word8) 

newCounter :: forall (n :: Nat) m. (KnownNat n, PrimMonad m) => Proxy n -> m (StepCounter n (PrimState m)) Source #

Make a new StepCounter with the given number of counters.

resetCounter :: forall (n :: Nat) m. (KnownNat n, PrimMonad m) => StepCounter n (PrimState m) -> m () Source #

Reset all the counters in the given StepCounter to zero.

readCounter :: forall m (n :: Nat). PrimMonad m => StepCounter n (PrimState m) -> Int -> m Word8 Source #

Read the value of a counter.

writeCounter :: forall m (n :: Nat). PrimMonad m => StepCounter n (PrimState m) -> Int -> Word8 -> m () Source #

Write to a counter.

modifyCounter :: forall m (n :: Nat). PrimMonad m => Int -> (Word8 -> Word8) -> StepCounter n (PrimState m) -> m Word8 Source #

Modify the value of a counter. Returns the modified value.

itraverseCounter_ :: forall (n :: Nat) m. (UpwardsM m (NatToPeano n), PrimMonad m) => (Int -> Word8 -> m ()) -> StepCounter n (PrimState m) -> m () Source #

Traverse the counters with an effectful function.

iforCounter_ :: forall m (n :: Nat). (UpwardsM m (NatToPeano n), PrimMonad m) => StepCounter n (PrimState m) -> (Int -> Word8 -> m ()) -> m () Source #

Traverse the counters with an effectful function.