never executed always true always false
    1 {-# language CPP #-}
    2 {-# language ConstraintKinds #-}
    3 {-# language MultiParamTypeClasses #-}
    4 {-# language UndecidableInstances #-}
    5 
    6 #ifndef ENABLE_INTERNAL_DOCUMENTATION
    7 {-# OPTIONS_HADDOCK hide #-}
    8 #endif
    9 
   10 module OpenCV.Internal.Core.Types.Size
   11   ( Size(..)
   12   , IsSize(..)
   13   ) where
   14 
   15 import "base" Foreign.ForeignPtr ( ForeignPtr, withForeignPtr )
   16 import "linear" Linear ( V2 )
   17 import "this" OpenCV.Internal.C.Types
   18 
   19 --------------------------------------------------------------------------------
   20 
   21 newtype Size (depth :: *)
   22       = Size {unSize :: ForeignPtr (C'Size depth)}
   23 
   24 type instance C (Size depth) = C'Size depth
   25 
   26 instance WithPtr (Size depth) where
   27     withPtr = withForeignPtr . unSize
   28 
   29 class IsSize (p :: * -> *) (depth :: *)  where
   30     toSize   :: p depth -> Size depth
   31     fromSize :: Size depth -> p depth
   32 
   33     toSizeIO :: p depth -> IO (Size depth)
   34     toSizeIO = pure . toSize
   35 
   36 --------------------------------------------------------------------------------
   37 
   38 instance (IsSize V2 a, Show a)
   39       => Show (Size a) where
   40     showsPrec prec size =
   41         showParen (prec >= 10)
   42         $ showString "toSize "
   43         . showParen True (shows v2)
   44       where
   45         v2 :: V2 a
   46         v2 = fromSize size