module CV.Bindings.Matrix where
import Data.Word
import Foreign.C.Types
import Foreign.Ptr (Ptr,FunPtr,plusPtr)
import Foreign.Ptr (wordPtrToPtr,castPtrToFunPtr)
import Foreign.Storable
import Foreign.C.Types
import Foreign.C.String (CString,CStringLen,CWString,CWStringLen)
import Foreign.Marshal.Alloc (alloca)
import Foreign.Marshal.Array (peekArray,pokeArray)
import Data.Int
import Data.Word
data C'CvMat = C'CvMat{
c'CvMat'type :: CInt,
c'CvMat'step :: CInt,
c'CvMat'refcount :: Ptr CInt,
c'CvMat'data'ptr :: Ptr CUChar,
c'CvMat'data's :: Ptr CShort,
c'CvMat'data'i :: Ptr CInt,
c'CvMat'data'fl :: Ptr CFloat,
c'CvMat'data'db :: Ptr CDouble,
c'CvMat'rows :: CInt,
c'CvMat'cols :: CInt
} deriving (Eq,Show)
p'CvMat'type p = plusPtr p 0
p'CvMat'type :: Ptr (C'CvMat) -> Ptr (CInt)
p'CvMat'step p = plusPtr p 4
p'CvMat'step :: Ptr (C'CvMat) -> Ptr (CInt)
p'CvMat'refcount p = plusPtr p 8
p'CvMat'refcount :: Ptr (C'CvMat) -> Ptr (Ptr CInt)
p'CvMat'data'ptr p = plusPtr p 16
p'CvMat'data'ptr :: Ptr (C'CvMat) -> Ptr (Ptr CUChar)
p'CvMat'data's p = plusPtr p 16
p'CvMat'data's :: Ptr (C'CvMat) -> Ptr (Ptr CShort)
p'CvMat'data'i p = plusPtr p 16
p'CvMat'data'i :: Ptr (C'CvMat) -> Ptr (Ptr CInt)
p'CvMat'data'fl p = plusPtr p 16
p'CvMat'data'fl :: Ptr (C'CvMat) -> Ptr (Ptr CFloat)
p'CvMat'data'db p = plusPtr p 16
p'CvMat'data'db :: Ptr (C'CvMat) -> Ptr (Ptr CDouble)
p'CvMat'rows p = plusPtr p 20
p'CvMat'rows :: Ptr (C'CvMat) -> Ptr (CInt)
p'CvMat'cols p = plusPtr p 24
p'CvMat'cols :: Ptr (C'CvMat) -> Ptr (CInt)
u'CvMat'data'ptr :: C'CvMat -> Ptr CUChar -> IO C'CvMat
u'CvMat'data'ptr v vf = alloca $ \p -> do
poke p v
pokeByteOff p 16 vf
vu <- peek p
return $ v
{c'CvMat'data'ptr = c'CvMat'data'ptr vu}
{c'CvMat'data's = c'CvMat'data's vu}
{c'CvMat'data'i = c'CvMat'data'i vu}
{c'CvMat'data'fl = c'CvMat'data'fl vu}
{c'CvMat'data'db = c'CvMat'data'db vu}
u'CvMat'data's :: C'CvMat -> Ptr CShort -> IO C'CvMat
u'CvMat'data's v vf = alloca $ \p -> do
poke p v
pokeByteOff p 16 vf
vu <- peek p
return $ v
{c'CvMat'data'ptr = c'CvMat'data'ptr vu}
{c'CvMat'data's = c'CvMat'data's vu}
{c'CvMat'data'i = c'CvMat'data'i vu}
{c'CvMat'data'fl = c'CvMat'data'fl vu}
{c'CvMat'data'db = c'CvMat'data'db vu}
u'CvMat'data'i :: C'CvMat -> Ptr CInt -> IO C'CvMat
u'CvMat'data'i v vf = alloca $ \p -> do
poke p v
pokeByteOff p 16 vf
vu <- peek p
return $ v
{c'CvMat'data'ptr = c'CvMat'data'ptr vu}
{c'CvMat'data's = c'CvMat'data's vu}
{c'CvMat'data'i = c'CvMat'data'i vu}
{c'CvMat'data'fl = c'CvMat'data'fl vu}
{c'CvMat'data'db = c'CvMat'data'db vu}
u'CvMat'data'fl :: C'CvMat -> Ptr CFloat -> IO C'CvMat
u'CvMat'data'fl v vf = alloca $ \p -> do
poke p v
pokeByteOff p 16 vf
vu <- peek p
return $ v
{c'CvMat'data'ptr = c'CvMat'data'ptr vu}
{c'CvMat'data's = c'CvMat'data's vu}
{c'CvMat'data'i = c'CvMat'data'i vu}
{c'CvMat'data'fl = c'CvMat'data'fl vu}
{c'CvMat'data'db = c'CvMat'data'db vu}
u'CvMat'data'db :: C'CvMat -> Ptr CDouble -> IO C'CvMat
u'CvMat'data'db v vf = alloca $ \p -> do
poke p v
pokeByteOff p 16 vf
vu <- peek p
return $ v
{c'CvMat'data'ptr = c'CvMat'data'ptr vu}
{c'CvMat'data's = c'CvMat'data's vu}
{c'CvMat'data'i = c'CvMat'data'i vu}
{c'CvMat'data'fl = c'CvMat'data'fl vu}
{c'CvMat'data'db = c'CvMat'data'db vu}
instance Storable C'CvMat where
sizeOf _ = 28
alignment _ = 4
peek p = do
v0 <- peekByteOff p 0
v1 <- peekByteOff p 4
v2 <- peekByteOff p 8
v3 <- peekByteOff p 16
v4 <- peekByteOff p 16
v5 <- peekByteOff p 16
v6 <- peekByteOff p 16
v7 <- peekByteOff p 16
v8 <- peekByteOff p 20
v9 <- peekByteOff p 24
return $ C'CvMat v0 v1 v2 v3 v4 v5 v6 v7 v8 v9
poke p (C'CvMat v0 v1 v2 v3 v4 v5 v6 v7 v8 v9) = do
pokeByteOff p 0 v0
pokeByteOff p 4 v1
pokeByteOff p 8 v2
pokeByteOff p 16 v3
pokeByteOff p 16 v4
pokeByteOff p 16 v5
pokeByteOff p 16 v6
pokeByteOff p 16 v7
pokeByteOff p 20 v8
pokeByteOff p 24 v9
return ()
foreign import ccall "cvCreateMat" c'cvCreateMat
:: Int -> Int -> Int -> IO (Ptr C'CvMat)
foreign import ccall "&cvCreateMat" p'cvCreateMat
:: FunPtr (Int -> Int -> Int -> IO (Ptr C'CvMat))
foreign import ccall "cvReleaseMat" c'cvReleaseMat
:: Ptr (Ptr C'CvMat) -> IO ()
foreign import ccall "&cvReleaseMat" p'cvReleaseMat
:: FunPtr (Ptr (Ptr C'CvMat) -> IO ())
foreign import ccall "cvTranspose" c'cvTranspose
:: Ptr C'CvMat -> Ptr C'CvMat -> IO ()
foreign import ccall "&cvTranspose" p'cvTranspose
:: FunPtr (Ptr C'CvMat -> Ptr C'CvMat -> IO ())
foreign import ccall "cvInvert" c'cvInvert
:: Ptr C'CvMat -> Ptr C'CvMat -> CInt -> IO ()
foreign import ccall "&cvInvert" p'cvInvert
:: FunPtr (Ptr C'CvMat -> Ptr C'CvMat -> CInt -> IO ())
foreign import ccall "cvGEMM" c'cvGEMM
:: Ptr C'CvMat -> Ptr C'CvMat -> Double -> Ptr C'CvMat -> Double -> Ptr C'CvMat -> Int -> IO ()
foreign import ccall "&cvGEMM" p'cvGEMM
:: FunPtr (Ptr C'CvMat -> Ptr C'CvMat -> Double -> Ptr C'CvMat -> Double -> Ptr C'CvMat -> Int -> IO ())
foreign import ccall "cvRodrigues2" c'cvRodrigues2
:: Ptr C'CvMat -> Ptr C'CvMat -> Ptr C'CvMat -> IO Int
foreign import ccall "&cvRodrigues2" p'cvRodrigues2
:: FunPtr (Ptr C'CvMat -> Ptr C'CvMat -> Ptr C'CvMat -> IO Int)
c'CV_LU = 0
c'CV_LU :: (Num a) => a
c'CV_SVD = 1
c'CV_SVD :: (Num a) => a
c'CV_SVD_SYM = 2
c'CV_SVD_SYM :: (Num a) => a
c'CV_GEMM_A_T = 1
c'CV_GEMM_A_T :: (Num a) => a
c'CV_GEMM_B_T = 2
c'CV_GEMM_B_T :: (Num a) => a
c'CV_GEMM_C_T = 4
c'CV_GEMM_C_T :: (Num a) => a