#ifndef ENABLE_INTERNAL_DOCUMENTATION
#endif
module OpenCV.Internal.Core.Types.Matx
( Matx(..)
, MatxDimR
, MatxDimC
, IsMatx(..)
) where
import "base" Foreign.ForeignPtr ( ForeignPtr, withForeignPtr )
import "base" GHC.TypeLits
import "this" OpenCV.Internal.C.Types
newtype Matx (dimR :: Nat) (dimC :: Nat) (depth :: *)
= Matx {unMatx :: ForeignPtr (C'Matx dimR dimC depth)}
type instance C (Matx dimR dimC depth) = C'Matx dimR dimC depth
instance WithPtr (Matx dimR dimC depth) where
withPtr = withForeignPtr . unMatx
type family MatxDimR (m :: * -> *) :: Nat
type family MatxDimC (m :: * -> *) :: Nat
type instance MatxDimR (Matx dimR dimC) = dimR
type instance MatxDimC (Matx dimR dimC) = dimC
class IsMatx (m :: * -> *) depth where
toMatx :: m depth -> Matx (MatxDimR m) (MatxDimC m) depth
fromMatx :: Matx (MatxDimR m) (MatxDimC m) depth -> m depth
toMatxIO :: m depth -> IO (Matx (MatxDimR m) (MatxDimC m) depth)
toMatxIO = pure . toMatx