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
import Data.ByteString as BS
data C'dpkg_version = C'dpkg_version{
c'dpkg_version'epoch :: CInt,
c'dpkg_version'version :: CString,
c'dpkg_version'revision :: CString
} deriving (Eq,Show)
p'dpkg_version'epoch p = plusPtr p 0
p'dpkg_version'epoch :: Ptr (C'dpkg_version) -> Ptr (CInt)
p'dpkg_version'version p = plusPtr p 4
p'dpkg_version'version :: Ptr (C'dpkg_version) -> Ptr (CString)
p'dpkg_version'revision p = plusPtr p 8
p'dpkg_version'revision :: Ptr (C'dpkg_version) -> Ptr (CString)
instance Storable C'dpkg_version where
sizeOf _ = 12
alignment = sizeOf
peek p = do
v0 <- peekByteOff p 0
v1 <- peekByteOff p 4
v2 <- peekByteOff p 8
return $ C'dpkg_version v0 v1 v2
poke p (C'dpkg_version 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 _ = 64
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'set :: Ptr C'pkgset,
c'pkginfo'arch_next :: Ptr C'pkginfo,
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'dpkg_version,
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'set p = plusPtr p 0
p'pkginfo'set :: Ptr (C'pkginfo) -> Ptr (Ptr C'pkgset)
p'pkginfo'arch_next p = plusPtr p 4
p'pkginfo'arch_next :: Ptr (C'pkginfo) -> Ptr (Ptr C'pkginfo)
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'dpkg_version)
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 112
p'pkginfo'available :: Ptr (C'pkginfo) -> Ptr (C'pkgbin)
p'pkginfo'clientdata p = plusPtr p 176
p'pkginfo'clientdata :: Ptr (C'pkginfo) -> Ptr (Ptr C'perpackagestate)
instance Storable C'pkginfo where
sizeOf _ = 196
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 112
v12 <- peekByteOff p 176
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 112 v11
pokeByteOff p 176 v12
return ()
data C'pkgset = C'pkgset{
c'pkgset'next :: Ptr C'pkgset,
c'pkgset'name :: CString,
c'pkgset'pkg :: C'pkginfo
} deriving (Eq,Show)
p'pkgset'next p = plusPtr p 0
p'pkgset'next :: Ptr (C'pkgset) -> Ptr (Ptr C'pkgset)
p'pkgset'name p = plusPtr p 4
p'pkgset'name :: Ptr (C'pkgset) -> Ptr (CString)
p'pkgset'pkg p = plusPtr p 8
p'pkgset'pkg :: Ptr (C'pkgset) -> Ptr (C'pkginfo)
instance Storable C'pkgset where
sizeOf _ = 216
alignment = sizeOf
peek p = do
v0 <- peekByteOff p 0
v1 <- peekByteOff p 4
v2 <- peekByteOff p 8
return $ C'pkgset v0 v1 v2
poke p (C'pkgset v0 v1 v2) = do
pokeByteOff p 0 v0
pokeByteOff p 4 v1
pokeByteOff p 8 v2
return ()
type C'dpkg_msg_type = CUInt
data C'dpkg_error = C'dpkg_error{
c'dpkg_error'type :: C'dpkg_msg_type,
c'dpkg_error'str :: CString
} deriving (Eq,Show)
p'dpkg_error'type p = plusPtr p 0
p'dpkg_error'type :: Ptr (C'dpkg_error) -> Ptr (C'dpkg_msg_type)
p'dpkg_error'str p = plusPtr p 4
p'dpkg_error'str :: Ptr (C'dpkg_error) -> Ptr (CString)
instance Storable C'dpkg_error where
sizeOf _ = 8
alignment = sizeOf
peek p = do
v0 <- peekByteOff p 0
v1 <- peekByteOff p 4
return $ C'dpkg_error v0 v1
poke p (C'dpkg_error v0 v1) = do
pokeByteOff p 0 v0
pokeByteOff p 4 v1
return ()