module Debian.Dpkg.Types where
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'versionrevision = C'versionrevision{
c'versionrevision'epoch :: CInt,
c'versionrevision'version :: CString,
c'versionrevision'revision :: CString
} deriving (Eq,Show)
p'versionrevision'epoch p = plusPtr p 0
p'versionrevision'epoch :: Ptr (C'versionrevision) -> Ptr (CInt)
p'versionrevision'version p = plusPtr p 4
p'versionrevision'version :: Ptr (C'versionrevision) -> Ptr (CString)
p'versionrevision'revision p = plusPtr p 8
p'versionrevision'revision :: Ptr (C'versionrevision) -> Ptr (CString)
instance Storable C'versionrevision where
sizeOf _ = 12
alignment = sizeOf
peek p = do
v0 <- peekByteOff p 0
v1 <- peekByteOff p 4
v2 <- peekByteOff p 8
return $ C'versionrevision v0 v1 v2
poke p (C'versionrevision v0 v1 v2) = do
pokeByteOff p 0 v0
pokeByteOff p 4 v1
pokeByteOff p 8 v2
return ()
data C'filedetails = C'filedetails{
c'filedetails'next :: Ptr C'filedetails,
c'filedetails'name :: CString,
c'filedetails'msdosname :: CString,
c'filedetails'size :: CString,
c'filedetails'md5sum :: CString
} deriving (Eq,Show)
p'filedetails'next p = plusPtr p 0
p'filedetails'next :: Ptr (C'filedetails) -> Ptr (Ptr C'filedetails)
p'filedetails'name p = plusPtr p 4
p'filedetails'name :: Ptr (C'filedetails) -> Ptr (CString)
p'filedetails'msdosname p = plusPtr p 8
p'filedetails'msdosname :: Ptr (C'filedetails) -> Ptr (CString)
p'filedetails'size p = plusPtr p 12
p'filedetails'size :: Ptr (C'filedetails) -> Ptr (CString)
p'filedetails'md5sum p = plusPtr p 16
p'filedetails'md5sum :: Ptr (C'filedetails) -> Ptr (CString)
instance Storable C'filedetails where
sizeOf _ = 20
alignment = sizeOf
peek p = do
v0 <- peekByteOff p 0
v1 <- peekByteOff p 4
v2 <- peekByteOff p 8
v3 <- peekByteOff p 12
v4 <- peekByteOff p 16
return $ C'filedetails v0 v1 v2 v3 v4
poke p (C'filedetails v0 v1 v2 v3 v4) = do
pokeByteOff p 0 v0
pokeByteOff p 4 v1
pokeByteOff p 8 v2
pokeByteOff p 12 v3
pokeByteOff p 16 v4
return ()
data C'pkgbin = C'pkgbin{
} deriving (Eq,Show)
instance Storable C'pkgbin where
sizeOf _ = 60
alignment = sizeOf
peek p = do
return $ C'pkgbin
poke p (C'pkgbin) = do
return ()
data C'perpackagestate = C'perpackagestate
type C'pkgwant = CUInt
type C'pkgeflag = CUInt
type C'pkgstatus = CUInt
type C'pkgpriority = CInt
data C'pkgiterator = C'pkgiterator
data C'pkginfo = C'pkginfo{
c'pkginfo'next :: Ptr C'pkginfo,
c'pkginfo'name :: CString,
c'pkginfo'want :: C'pkgwant,
c'pkginfo'eflag :: C'pkgeflag,
c'pkginfo'status :: C'pkgstatus,
c'pkginfo'priority :: C'pkgpriority,
c'pkginfo'otherpriority :: CString,
c'pkginfo'section :: CString,
c'pkginfo'configversion :: C'versionrevision,
c'pkginfo'files :: Ptr C'filedetails,
c'pkginfo'installed :: C'pkgbin,
c'pkginfo'available :: C'pkgbin,
c'pkginfo'clientdata :: Ptr C'perpackagestate
} deriving (Eq,Show)
p'pkginfo'next p = plusPtr p 0
p'pkginfo'next :: Ptr (C'pkginfo) -> Ptr (Ptr C'pkginfo)
p'pkginfo'name p = plusPtr p 4
p'pkginfo'name :: Ptr (C'pkginfo) -> Ptr (CString)
p'pkginfo'want p = plusPtr p 8
p'pkginfo'want :: Ptr (C'pkginfo) -> Ptr (C'pkgwant)
p'pkginfo'eflag p = plusPtr p 12
p'pkginfo'eflag :: Ptr (C'pkginfo) -> Ptr (C'pkgeflag)
p'pkginfo'status p = plusPtr p 16
p'pkginfo'status :: Ptr (C'pkginfo) -> Ptr (C'pkgstatus)
p'pkginfo'priority p = plusPtr p 20
p'pkginfo'priority :: Ptr (C'pkginfo) -> Ptr (C'pkgpriority)
p'pkginfo'otherpriority p = plusPtr p 24
p'pkginfo'otherpriority :: Ptr (C'pkginfo) -> Ptr (CString)
p'pkginfo'section p = plusPtr p 28
p'pkginfo'section :: Ptr (C'pkginfo) -> Ptr (CString)
p'pkginfo'configversion p = plusPtr p 32
p'pkginfo'configversion :: Ptr (C'pkginfo) -> Ptr (C'versionrevision)
p'pkginfo'files p = plusPtr p 44
p'pkginfo'files :: Ptr (C'pkginfo) -> Ptr (Ptr C'filedetails)
p'pkginfo'installed p = plusPtr p 48
p'pkginfo'installed :: Ptr (C'pkginfo) -> Ptr (C'pkgbin)
p'pkginfo'available p = plusPtr p 108
p'pkginfo'available :: Ptr (C'pkginfo) -> Ptr (C'pkgbin)
p'pkginfo'clientdata p = plusPtr p 168
p'pkginfo'clientdata :: Ptr (C'pkginfo) -> Ptr (Ptr C'perpackagestate)
instance Storable C'pkginfo where
sizeOf _ = 188
alignment = sizeOf
peek p = do
v0 <- peekByteOff p 0
v1 <- peekByteOff p 4
v2 <- peekByteOff p 8
v3 <- peekByteOff p 12
v4 <- peekByteOff p 16
v5 <- peekByteOff p 20
v6 <- peekByteOff p 24
v7 <- peekByteOff p 28
v8 <- peekByteOff p 32
v9 <- peekByteOff p 44
v10 <- peekByteOff p 48
v11 <- peekByteOff p 108
v12 <- peekByteOff p 168
return $ C'pkginfo v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12
poke p (C'pkginfo v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12) = do
pokeByteOff p 0 v0
pokeByteOff p 4 v1
pokeByteOff p 8 v2
pokeByteOff p 12 v3
pokeByteOff p 16 v4
pokeByteOff p 20 v5
pokeByteOff p 24 v6
pokeByteOff p 28 v7
pokeByteOff p 32 v8
pokeByteOff p 44 v9
pokeByteOff p 48 v10
pokeByteOff p 108 v11
pokeByteOff p 168 v12
return ()