{-# LINE 1 "src/Codec/Archive/Types/Foreign.chs" #-}
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DeriveGeneric #-}
module Codec.Archive.Types.Foreign (
ArchiveReadCallback
, ArchiveSkipCallback
, ArchiveSeekCallback
, ArchiveWriteCallback
, ArchiveCloseCallbackRaw
, ArchiveOpenCallbackRaw
, ArchiveSwitchCallbackRaw
, ArchivePassphraseCallback
, Archive
, ArchiveEntry
, Stat
, LinkResolver
, ArchiveResult (..)
, FileType (..)
, Symlink (..)
, Flags (..)
, ArchiveFilter (..)
, ArchiveFormat (..)
, ArchiveCapabilities (..)
, ReadDiskFlags (..)
, TimeFlag (..)
, EntryACL (..)
, LaInt64
, LaSSize
) where
import qualified Foreign.C.Types as C2HSImp
import Control.DeepSeq (NFData)
import Control.Exception (Exception)
import Data.Bits (Bits (..))
import Foreign.C.String (CString)
import Foreign.C.Types (CInt, CSize)
import Foreign.Ptr (Ptr)
import GHC.Generics (Generic)
type LaInt64 = (C2HSImp.CLong)
{-# LINE 46 "src/Codec/Archive/Types/Foreign.chs" #-}
type LaSSize = (C2HSImp.CLong)
{-# LINE 47 "src/Codec/Archive/Types/Foreign.chs" #-}
data ArchiveResult = ArchiveFatal
| ArchiveFailed
| ArchiveWarn
| ArchiveRetry
| ArchiveOk
| ArchiveEOF
deriving (Eq,Show,Generic,NFData,Exception)
instance Enum ArchiveResult where
succ :: ArchiveResult -> ArchiveResult
succ ArchiveFatal = ArchiveResult
ArchiveFailed
succ ArchiveFailed = ArchiveResult
ArchiveWarn
succ ArchiveWarn = ArchiveResult
ArchiveRetry
succ ArchiveRetry = ArchiveResult
ArchiveOk
succ ArchiveOk = ArchiveResult
ArchiveEOF
succ ArchiveEOF = String -> ArchiveResult
forall a. HasCallStack => String -> a
error "ArchiveResult.succ: ArchiveEOF has no successor"
pred :: ArchiveResult -> ArchiveResult
pred ArchiveFailed = ArchiveResult
ArchiveFatal
pred ArchiveWarn = ArchiveResult
ArchiveFailed
pred ArchiveRetry = ArchiveResult
ArchiveWarn
pred ArchiveOk = ArchiveResult
ArchiveRetry
pred ArchiveEOF = ArchiveResult
ArchiveOk
pred ArchiveFatal = String -> ArchiveResult
forall a. HasCallStack => String -> a
error "ArchiveResult.pred: ArchiveFatal has no predecessor"
enumFromTo :: ArchiveResult -> ArchiveResult -> [ArchiveResult]
enumFromTo from :: ArchiveResult
from to :: ArchiveResult
to = ArchiveResult -> [ArchiveResult]
forall t. Enum t => t -> [t]
go ArchiveResult
from
where
end :: Int
end = ArchiveResult -> Int
forall a. Enum a => a -> Int
fromEnum ArchiveResult
to
go :: t -> [t]
go v :: t
v = case Int -> Int -> Ordering
forall a. Ord a => a -> a -> Ordering
compare (t -> Int
forall a. Enum a => a -> Int
fromEnum t
v) Int
end of
LT -> t
v t -> [t] -> [t]
forall a. a -> [a] -> [a]
: t -> [t]
go (t -> t
forall a. Enum a => a -> a
succ t
v)
EQ -> [t
v]
GT -> []
enumFrom :: ArchiveResult -> [ArchiveResult]
enumFrom from :: ArchiveResult
from = ArchiveResult -> ArchiveResult -> [ArchiveResult]
forall a. Enum a => a -> a -> [a]
enumFromTo ArchiveResult
from ArchiveResult
ArchiveEOF
fromEnum :: ArchiveResult -> Int
fromEnum ArchiveFatal = (-30)
fromEnum ArchiveFailed = (-25)
fromEnum ArchiveWarn = (-20)
fromEnum ArchiveRetry = (-10)
fromEnum ArchiveOk = 0
fromEnum ArchiveEOF = 1
toEnum :: Int -> ArchiveResult
toEnum (-30) = ArchiveResult
ArchiveFatal
toEnum (-25) = ArchiveResult
ArchiveFailed
toEnum (-20) = ArchiveResult
ArchiveWarn
toEnum (-10) = ArchiveResult
ArchiveRetry
toEnum 0 = ArchiveResult
ArchiveOk
toEnum 1 = ArchiveResult
ArchiveEOF
toEnum unmatched = error ("ArchiveResult.toEnum: Cannot match " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Int -> String
forall a. Show a => a -> String
show Int
unmatched)
{-# LINE 56 "src/Codec/Archive/Types/Foreign.chs" #-}
data FileType = FtFifo
| FtCharacter
| FtDirectory
| FtBlock
| FtRegular
| FtLink
| FtSocket
deriving (Eq,Ord)
instance Enum FileType where
succ FtFifo = FtCharacter
succ FtCharacter = FtDirectory
succ FtDirectory = FtBlock
succ FtBlock = FtRegular
succ FtRegular = FtLink
succ FtLink = FtSocket
succ FtSocket = error "FileType.succ: FtSocket has no successor"
pred FtCharacter = FtFifo
pred FtDirectory = FtCharacter
pred FtBlock = FtDirectory
pred FtRegular = FtBlock
pred FtLink = FtRegular
pred FtSocket = FtLink
pred FtFifo = error "FileType.pred: FtFifo has no predecessor"
enumFromTo from to = go from
where
end = fromEnum to
go v = case compare (fromEnum v) end of
LT -> v : go (succ v)
EQ -> [v]
GT -> []
enumFrom from = enumFromTo from FtSocket
fromEnum FtFifo = 4096
fromEnum FtCharacter = 8192
fromEnum FtDirectory = 16384
fromEnum FtBlock = 24576
fromEnum FtRegular = 32768
fromEnum FtLink = 40960
fromEnum FtSocket = 49152
toEnum 4096 = FtFifo
toEnum 8192 = FtCharacter
toEnum 16384 = FtDirectory
toEnum 24576 = FtBlock
toEnum 32768 = FtRegular
toEnum 40960 = FtLink
toEnum 49152 = FtSocket
toEnum unmatched = error ("FileType.toEnum: Cannot match " ++ show unmatched)
{-# LINE 66 "src/Codec/Archive/Types/Foreign.chs" #-}
data Symlink = SymlinkUndefined
| SymlinkFile
| SymlinkDirectory
deriving (Show,Eq,Ord)
instance Enum Symlink where
succ SymlinkUndefined = SymlinkFile
succ SymlinkFile = SymlinkDirectory
succ SymlinkDirectory = error "Symlink.succ: SymlinkDirectory has no successor"
pred SymlinkFile = SymlinkUndefined
pred SymlinkDirectory = SymlinkFile
pred SymlinkUndefined = error "Symlink.pred: SymlinkUndefined has no predecessor"
enumFromTo from to = go from
where
end = fromEnum to
go v = case compare (fromEnum v) end of
LT -> v : go (succ v)
EQ -> [v]
GT -> []
enumFrom from = enumFromTo from SymlinkDirectory
fromEnum SymlinkUndefined = 0
fromEnum SymlinkFile = 1
fromEnum SymlinkDirectory = 2
toEnum 0 = SymlinkUndefined
toEnum 1 = SymlinkFile
toEnum 2 = SymlinkDirectory
toEnum unmatched = error ("Symlink.toEnum: Cannot match " ++ show unmatched)
{-# LINE 72 "src/Codec/Archive/Types/Foreign.chs" #-}
data ArchiveFilter = ArchiveFilterNone
| ArchiveFilterGzip
| ArchiveFilterBzip2
| ArchiveFilterCompress
| ArchiveFilterProgram
| ArchiveFilterLzma
| ArchiveFilterXz
| ArchiveFilterUu
| ArchiveFilterRpm
| ArchiveFilterLzip
| ArchiveFilterLrzip
| ArchiveFilterLzop
| ArchiveFilterGrzip
| ArchiveFilterLz4
| ArchiveFilterZstd
instance Enum ArchiveFilter where
succ ArchiveFilterNone = ArchiveFilterGzip
succ ArchiveFilterGzip = ArchiveFilterBzip2
succ ArchiveFilterBzip2 = ArchiveFilterCompress
succ ArchiveFilterCompress = ArchiveFilterProgram
succ ArchiveFilterProgram = ArchiveFilterLzma
succ ArchiveFilterLzma = ArchiveFilterXz
succ ArchiveFilterXz = ArchiveFilterUu
succ ArchiveFilterUu = ArchiveFilterRpm
succ ArchiveFilterRpm = ArchiveFilterLzip
succ ArchiveFilterLzip = ArchiveFilterLrzip
succ ArchiveFilterLrzip = ArchiveFilterLzop
succ ArchiveFilterLzop = ArchiveFilterGrzip
succ ArchiveFilterGrzip = ArchiveFilterLz4
succ ArchiveFilterLz4 = ArchiveFilterZstd
succ ArchiveFilterZstd = error "ArchiveFilter.succ: ArchiveFilterZstd has no successor"
pred ArchiveFilterGzip = ArchiveFilterNone
pred ArchiveFilterBzip2 = ArchiveFilterGzip
pred ArchiveFilterCompress = ArchiveFilterBzip2
pred ArchiveFilterProgram = ArchiveFilterCompress
pred ArchiveFilterLzma = ArchiveFilterProgram
pred ArchiveFilterXz = ArchiveFilterLzma
pred ArchiveFilterUu = ArchiveFilterXz
pred ArchiveFilterRpm = ArchiveFilterUu
pred ArchiveFilterLzip = ArchiveFilterRpm
pred ArchiveFilterLrzip = ArchiveFilterLzip
pred ArchiveFilterLzop = ArchiveFilterLrzip
pred ArchiveFilterGrzip = ArchiveFilterLzop
pred ArchiveFilterLz4 = ArchiveFilterGrzip
pred ArchiveFilterZstd = ArchiveFilterLz4
pred ArchiveFilterNone = error "ArchiveFilter.pred: ArchiveFilterNone has no predecessor"
enumFromTo :: ArchiveFilter -> ArchiveFilter -> [ArchiveFilter]
enumFromTo from :: ArchiveFilter
from to :: ArchiveFilter
to = ArchiveFilter -> [ArchiveFilter]
forall t. Enum t => t -> [t]
go ArchiveFilter
from
where
end :: Int
end = ArchiveFilter -> Int
forall a. Enum a => a -> Int
fromEnum ArchiveFilter
to
go :: t -> [t]
go v :: t
v = case Int -> Int -> Ordering
forall a. Ord a => a -> a -> Ordering
compare (t -> Int
forall a. Enum a => a -> Int
fromEnum t
v) Int
end of
LT -> t
v t -> [t] -> [t]
forall a. a -> [a] -> [a]
: t -> [t]
go (t -> t
forall a. Enum a => a -> a
succ t
v)
EQ -> [t
v]
GT -> []
enumFrom :: ArchiveFilter -> [ArchiveFilter]
enumFrom from :: ArchiveFilter
from = ArchiveFilter -> ArchiveFilter -> [ArchiveFilter]
forall a. Enum a => a -> a -> [a]
enumFromTo ArchiveFilter
from ArchiveFilter
ArchiveFilterZstd
fromEnum :: ArchiveFilter -> Int
fromEnum ArchiveFilterNone = 0
fromEnum ArchiveFilterGzip = 1
fromEnum ArchiveFilterBzip2 = 2
fromEnum ArchiveFilterCompress = 3
fromEnum ArchiveFilterProgram = 4
fromEnum ArchiveFilterLzma = 5
fromEnum ArchiveFilterXz = 6
fromEnum ArchiveFilterUu = 7
fromEnum ArchiveFilterRpm = 8
fromEnum ArchiveFilterLzip = 9
fromEnum ArchiveFilterLrzip = 10
fromEnum ArchiveFilterLzop = 11
fromEnum ArchiveFilterGrzip = 12
fromEnum ArchiveFilterLz4 = 13
fromEnum ArchiveFilterZstd = 14
toEnum 0 = ArchiveFilterNone
toEnum 1 = ArchiveFilterGzip
toEnum 2 = ArchiveFilterBzip2
toEnum 3 = ArchiveFilterCompress
toEnum 4 = ArchiveFilterProgram
toEnum 5 = ArchiveFilterLzma
toEnum 6 = ArchiveFilterXz
toEnum 7 = ArchiveFilterUu
toEnum 8 = ArchiveFilterRpm
toEnum 9 = ArchiveFilterLzip
toEnum 10 = ArchiveFilterLrzip
toEnum 11 = ArchiveFilterLzop
toEnum 12 = ArchiveFilterGrzip
toEnum 13 = ArchiveFilterLz4
toEnum 14 = ArchiveFilterZstd
toEnum unmatched = error ("ArchiveFilter.toEnum: Cannot match " ++ show unmatched)
{-# LINE 90 "src/Codec/Archive/Types/Foreign.chs" #-}
data ArchiveFormat = ArchiveFormatCpio
| ArchiveFormatCpioPosix
| ArchiveFormatCpioBinLe
| ArchiveFormatCpioBinBe
| ArchiveFormatCpioSvr4Nocrc
| ArchiveFormatCpioSvr4Crc
| ArchiveFormatCpioAfioLarge
| ArchiveFormatShar
| ArchiveFormatSharBase
| ArchiveFormatSharDump
| ArchiveFormatTar
| ArchiveFormatTarUstar
| ArchiveFormatTarPaxInterchange
| ArchiveFormatTarPaxRestricted
| ArchiveFormatTarGnutar
| ArchiveFormatIso9660
| ArchiveFormatIso9660Rockridge
| ArchiveFormatZip
| ArchiveFormatEmpty
| ArchiveFormatAr
| ArchiveFormatArGnu
| ArchiveFormatArBsd
| ArchiveFormatMtree
| ArchiveFormatRaw
| ArchiveFormatXar
| ArchiveFormatLha
| ArchiveFormatCab
| ArchiveFormatRar
| ArchiveFormat7zip
| ArchiveFormatWarc
| ArchiveFormatRarV5
deriving (Eq)
instance Enum ArchiveFormat where
succ ArchiveFormatCpio = ArchiveFormatCpioPosix
succ ArchiveFormatCpioPosix = ArchiveFormatCpioBinLe
succ ArchiveFormatCpioBinLe = ArchiveFormatCpioBinBe
succ ArchiveFormatCpioBinBe = ArchiveFormatCpioSvr4Nocrc
succ ArchiveFormatCpioSvr4Nocrc = ArchiveFormatCpioSvr4Crc
succ ArchiveFormatCpioSvr4Crc = ArchiveFormatCpioAfioLarge
succ ArchiveFormatCpioAfioLarge = ArchiveFormatShar
succ ArchiveFormatShar = ArchiveFormatSharBase
succ ArchiveFormatSharBase = ArchiveFormatSharDump
succ ArchiveFormatSharDump = ArchiveFormatTar
succ ArchiveFormatTar = ArchiveFormatTarUstar
succ ArchiveFormatTarUstar = ArchiveFormatTarPaxInterchange
succ ArchiveFormatTarPaxInterchange = ArchiveFormatTarPaxRestricted
succ ArchiveFormatTarPaxRestricted = ArchiveFormatTarGnutar
succ ArchiveFormatTarGnutar = ArchiveFormatIso9660
succ ArchiveFormatIso9660 = ArchiveFormatIso9660Rockridge
succ ArchiveFormatIso9660Rockridge = ArchiveFormatZip
succ ArchiveFormatZip = ArchiveFormatEmpty
succ ArchiveFormatEmpty = ArchiveFormatAr
succ ArchiveFormatAr = ArchiveFormatArGnu
succ ArchiveFormatArGnu = ArchiveFormatArBsd
succ ArchiveFormatArBsd = ArchiveFormatMtree
succ ArchiveFormatMtree = ArchiveFormatRaw
succ ArchiveFormatRaw = ArchiveFormatXar
succ ArchiveFormatXar = ArchiveFormatLha
succ ArchiveFormatLha = ArchiveFormatCab
succ ArchiveFormatCab = ArchiveFormatRar
succ ArchiveFormatRar = ArchiveFormat7zip
succ ArchiveFormat7zip = ArchiveFormatWarc
succ ArchiveFormatWarc = ArchiveFormatRarV5
succ ArchiveFormatRarV5 = error "ArchiveFormat.succ: ArchiveFormatRarV5 has no successor"
pred ArchiveFormatCpioPosix = ArchiveFormatCpio
pred ArchiveFormatCpioBinLe = ArchiveFormatCpioPosix
pred ArchiveFormatCpioBinBe = ArchiveFormatCpioBinLe
pred ArchiveFormatCpioSvr4Nocrc = ArchiveFormatCpioBinBe
pred ArchiveFormatCpioSvr4Crc = ArchiveFormatCpioSvr4Nocrc
pred ArchiveFormatCpioAfioLarge = ArchiveFormatCpioSvr4Crc
pred ArchiveFormatShar = ArchiveFormatCpioAfioLarge
pred ArchiveFormatSharBase = ArchiveFormatShar
pred ArchiveFormatSharDump = ArchiveFormatSharBase
pred ArchiveFormatTar = ArchiveFormatSharDump
pred ArchiveFormatTarUstar = ArchiveFormatTar
pred ArchiveFormatTarPaxInterchange = ArchiveFormatTarUstar
pred ArchiveFormatTarPaxRestricted = ArchiveFormatTarPaxInterchange
pred ArchiveFormatTarGnutar = ArchiveFormatTarPaxRestricted
pred ArchiveFormatIso9660 = ArchiveFormatTarGnutar
pred ArchiveFormatIso9660Rockridge = ArchiveFormatIso9660
pred ArchiveFormatZip = ArchiveFormatIso9660Rockridge
pred ArchiveFormatEmpty = ArchiveFormatZip
pred ArchiveFormatAr = ArchiveFormatEmpty
pred ArchiveFormatArGnu = ArchiveFormatAr
pred ArchiveFormatArBsd = ArchiveFormatArGnu
pred ArchiveFormatMtree = ArchiveFormatArBsd
pred ArchiveFormatRaw = ArchiveFormatMtree
pred ArchiveFormatXar = ArchiveFormatRaw
pred ArchiveFormatLha = ArchiveFormatXar
pred ArchiveFormatCab = ArchiveFormatLha
pred ArchiveFormatRar = ArchiveFormatCab
pred ArchiveFormat7zip = ArchiveFormatRar
pred ArchiveFormatWarc = ArchiveFormat7zip
pred ArchiveFormatRarV5 = ArchiveFormatWarc
pred ArchiveFormatCpio = error "ArchiveFormat.pred: ArchiveFormatCpio has no predecessor"
enumFromTo :: ArchiveFormat -> ArchiveFormat -> [ArchiveFormat]
enumFromTo from :: ArchiveFormat
from to :: ArchiveFormat
to = ArchiveFormat -> [ArchiveFormat]
forall t. Enum t => t -> [t]
go ArchiveFormat
from
where
end :: Int
end = ArchiveFormat -> Int
forall a. Enum a => a -> Int
fromEnum ArchiveFormat
to
go :: t -> [t]
go v :: t
v = case Int -> Int -> Ordering
forall a. Ord a => a -> a -> Ordering
compare (t -> Int
forall a. Enum a => a -> Int
fromEnum t
v) Int
end of
LT -> t
v t -> [t] -> [t]
forall a. a -> [a] -> [a]
: t -> [t]
go (t -> t
forall a. Enum a => a -> a
succ t
v)
EQ -> [t
v]
GT -> []
enumFrom :: ArchiveFormat -> [ArchiveFormat]
enumFrom from :: ArchiveFormat
from = ArchiveFormat -> ArchiveFormat -> [ArchiveFormat]
forall a. Enum a => a -> a -> [a]
enumFromTo ArchiveFormat
from ArchiveFormat
ArchiveFormatRarV5
fromEnum :: ArchiveFormat -> Int
fromEnum ArchiveFormatCpio = 65536
fromEnum ArchiveFormatCpioPosix = 65537
fromEnum ArchiveFormatCpioBinLe = 65538
fromEnum ArchiveFormatCpioBinBe = 65539
fromEnum ArchiveFormatCpioSvr4Nocrc = 65540
fromEnum ArchiveFormatCpioSvr4Crc = 65541
fromEnum ArchiveFormatCpioAfioLarge = 65542
fromEnum ArchiveFormatShar = 131072
fromEnum ArchiveFormatSharBase = 131073
fromEnum ArchiveFormatSharDump = 131074
fromEnum ArchiveFormatTar = 196608
fromEnum ArchiveFormatTarUstar = 196609
fromEnum ArchiveFormatTarPaxInterchange = 196610
fromEnum ArchiveFormatTarPaxRestricted = 196611
fromEnum ArchiveFormatTarGnutar = 196612
fromEnum ArchiveFormatIso9660 = 262144
fromEnum ArchiveFormatIso9660Rockridge = 262145
fromEnum ArchiveFormatZip = 327680
fromEnum ArchiveFormatEmpty = 393216
fromEnum ArchiveFormatAr = 458752
fromEnum ArchiveFormatArGnu = 458753
fromEnum ArchiveFormatArBsd = 458754
fromEnum ArchiveFormatMtree = 524288
fromEnum ArchiveFormatRaw = 589824
fromEnum ArchiveFormatXar = 655360
fromEnum ArchiveFormatLha = 720896
fromEnum ArchiveFormatCab = 786432
fromEnum ArchiveFormatRar = 851968
fromEnum ArchiveFormat7zip = 917504
fromEnum ArchiveFormatWarc = 983040
fromEnum ArchiveFormatRarV5 = 1048576
toEnum :: Int -> ArchiveFormat
toEnum 65536 = ArchiveFormat
ArchiveFormatCpio
toEnum 65537 = ArchiveFormat
ArchiveFormatCpioPosix
toEnum 65538 = ArchiveFormat
ArchiveFormatCpioBinLe
toEnum 65539 = ArchiveFormat
ArchiveFormatCpioBinBe
toEnum 65540 = ArchiveFormat
ArchiveFormatCpioSvr4Nocrc
toEnum 65541 = ArchiveFormat
ArchiveFormatCpioSvr4Crc
toEnum 65542 = ArchiveFormat
ArchiveFormatCpioAfioLarge
toEnum 131072 = ArchiveFormat
ArchiveFormatShar
toEnum 131073 = ArchiveFormat
ArchiveFormatSharBase
toEnum 131074 = ArchiveFormat
ArchiveFormatSharDump
toEnum 196608 = ArchiveFormat
ArchiveFormatTar
toEnum 196609 = ArchiveFormat
ArchiveFormatTarUstar
toEnum 196610 = ArchiveFormat
ArchiveFormatTarPaxInterchange
toEnum 196611 = ArchiveFormat
ArchiveFormatTarPaxRestricted
toEnum 196612 = ArchiveFormat
ArchiveFormatTarGnutar
toEnum 262144 = ArchiveFormat
ArchiveFormatIso9660
toEnum 262145 = ArchiveFormat
ArchiveFormatIso9660Rockridge
toEnum 327680 = ArchiveFormat
ArchiveFormatZip
toEnum 393216 = ArchiveFormat
ArchiveFormatEmpty
toEnum 458752 = ArchiveFormat
ArchiveFormatAr
toEnum 458753 = ArchiveFormat
ArchiveFormatArGnu
toEnum 458754 = ArchiveFormat
ArchiveFormatArBsd
toEnum 524288 = ArchiveFormat
ArchiveFormatMtree
toEnum 589824 = ArchiveFormat
ArchiveFormatRaw
toEnum 655360 = ArchiveFormat
ArchiveFormatXar
toEnum 720896 = ArchiveFormat
ArchiveFormatLha
toEnum 786432 = ArchiveFormat
ArchiveFormatCab
toEnum 851968 = ArchiveFormat
ArchiveFormatRar
toEnum 917504 = ArchiveFormat
ArchiveFormat7zip
toEnum 983040 = ArchiveFormat
ArchiveFormatWarc
toEnum 1048576 = ArchiveFormat
ArchiveFormatRarV5
toEnum unmatched :: Int
unmatched = String -> ArchiveFormat
forall a. HasCallStack => String -> a
error ("ArchiveFormat.toEnum: Cannot match " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Int -> String
forall a. Show a => a -> String
show Int
unmatched)
{-# LINE 124 "src/Codec/Archive/Types/Foreign.chs" #-}
data Archive
data ArchiveEntry
data Stat
data LinkResolver
type ArchiveReadCallback a b = Ptr Archive -> Ptr a -> Ptr (Ptr b) -> IO LaSSize
type ArchiveSkipCallback a = Ptr Archive -> Ptr a -> LaInt64 -> IO LaInt64
type ArchiveSeekCallback a = Ptr Archive -> Ptr a -> LaInt64 -> CInt -> IO LaInt64
type ArchiveWriteCallback a b = Ptr Archive -> Ptr a -> Ptr b -> CSize -> IO LaSSize
type ArchiveOpenCallbackRaw a = Ptr Archive -> Ptr a -> IO CInt
type ArchiveCloseCallbackRaw a = Ptr Archive -> Ptr a -> IO CInt
type ArchiveSwitchCallbackRaw a b = Ptr Archive -> Ptr a -> Ptr b -> IO CInt
type ArchivePassphraseCallback a = Ptr Archive -> Ptr a -> IO CString
newtype Flags = Flags CInt
newtype ReadDiskFlags = ReadDiskFlags CInt
newtype TimeFlag = TimeFlag CInt
newtype EntryACL = EntryACL CInt
newtype ArchiveCapabilities = ArchiveCapabilities CInt
deriving (Eq)
instance Semigroup ArchiveCapabilities where
(<>) (ArchiveCapabilities x) (ArchiveCapabilities y) = ArchiveCapabilities (x .|. y)
instance Monoid ArchiveCapabilities where
mempty = ArchiveCapabilities 0
mappend = (<>)
instance Semigroup ReadDiskFlags where
(<>) (ReadDiskFlags x) (ReadDiskFlags y) = ReadDiskFlags (x .|. y)
instance Semigroup Flags where
(<>) (Flags x) (Flags y) = Flags (x .|. y)
instance Monoid Flags where
mempty = Flags 0
mappend = (<>)
instance Semigroup EntryACL where
(<>) (EntryACL x) (EntryACL y) = EntryACL (x .|. y)