never executed always true always false
1 {-# language CPP #-}
2
3 #ifndef ENABLE_INTERNAL_DOCUMENTATION
4 {-# OPTIONS_HADDOCK hide #-}
5 #endif
6
7 module OpenCV.Internal.Mutable
8 ( Mut(..)
9 , Mutable
10 , FreezeThaw(..)
11 ) where
12
13 import "primitive" Control.Monad.Primitive ( PrimMonad, PrimState )
14
15 -- | Wrapper for mutable values
16 newtype Mut a s = Mut { unMut :: a }
17
18 type family Mutable (a :: *) :: * -> *
19
20 class FreezeThaw a where
21 freeze :: (PrimMonad m) => Mutable a (PrimState m) -> m a
22 thaw :: (PrimMonad m) => a -> m (Mutable a (PrimState m))
23
24 unsafeFreeze :: (PrimMonad m) => Mutable a (PrimState m) -> m a
25 unsafeThaw :: (PrimMonad m) => a -> m (Mutable a (PrimState m))