{-# 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 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.CLLong)
{-# LINE 45 "src/Codec/Archive/Types/Foreign.chs" #-}
type LaSSize = (C2HSImp.CLong)
{-# LINE 46 "src/Codec/Archive/Types/Foreign.chs" #-}
data ArchiveResult = ArchiveFatal
| ArchiveFailed
| ArchiveWarn
| ArchiveRetry
| ArchiveOk
| ArchiveEOF
deriving (Eq,Show,Generic,NFData)
instance Enum ArchiveResult where
succ ArchiveFatal = ArchiveFailed
succ ArchiveFailed = ArchiveWarn
succ ArchiveWarn = ArchiveRetry
succ ArchiveRetry = ArchiveOk
succ ArchiveOk = ArchiveEOF
succ ArchiveEOF = error "ArchiveResult.succ: ArchiveEOF has no successor"
pred ArchiveFailed = ArchiveFatal
pred ArchiveWarn = ArchiveFailed
pred ArchiveRetry = ArchiveWarn
pred ArchiveOk = ArchiveRetry
pred ArchiveEOF = ArchiveOk
pred ArchiveFatal = error "ArchiveResult.pred: ArchiveFatal 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 ArchiveEOF
fromEnum ArchiveFatal = (-30)
fromEnum ArchiveFailed = (-25)
fromEnum ArchiveWarn = (-20)
fromEnum ArchiveRetry = (-10)
fromEnum ArchiveOk = 0
fromEnum ArchiveEOF = 1
toEnum (-30) = ArchiveFatal
toEnum (-25) = ArchiveFailed
toEnum (-20) = ArchiveWarn
toEnum (-10) = ArchiveRetry
toEnum 0 = ArchiveOk
toEnum 1 = ArchiveEOF
toEnum unmatched = error ("ArchiveResult.toEnum: Cannot match " ++ show unmatched)
{-# LINE 55 "src/Codec/Archive/Types/Foreign.chs" #-}
data FileType = FtFifo
| FtCharacter
| FtDirectory
| FtBlock
| FtRegular
| FtLink
| FtSocket
deriving (Eq)
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 65 "src/Codec/Archive/Types/Foreign.chs" #-}
data Symlink = SymlinkUndefined
| SymlinkFile
| SymlinkDirectory
deriving (Eq)
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 71 "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 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 ArchiveFilterZstd
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 89 "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 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 ArchiveFormatRarV5
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 65536 = ArchiveFormatCpio
toEnum 65537 = ArchiveFormatCpioPosix
toEnum 65538 = ArchiveFormatCpioBinLe
toEnum 65539 = ArchiveFormatCpioBinBe
toEnum 65540 = ArchiveFormatCpioSvr4Nocrc
toEnum 65541 = ArchiveFormatCpioSvr4Crc
toEnum 65542 = ArchiveFormatCpioAfioLarge
toEnum 131072 = ArchiveFormatShar
toEnum 131073 = ArchiveFormatSharBase
toEnum 131074 = ArchiveFormatSharDump
toEnum 196608 = ArchiveFormatTar
toEnum 196609 = ArchiveFormatTarUstar
toEnum 196610 = ArchiveFormatTarPaxInterchange
toEnum 196611 = ArchiveFormatTarPaxRestricted
toEnum 196612 = ArchiveFormatTarGnutar
toEnum 262144 = ArchiveFormatIso9660
toEnum 262145 = ArchiveFormatIso9660Rockridge
toEnum 327680 = ArchiveFormatZip
toEnum 393216 = ArchiveFormatEmpty
toEnum 458752 = ArchiveFormatAr
toEnum 458753 = ArchiveFormatArGnu
toEnum 458754 = ArchiveFormatArBsd
toEnum 524288 = ArchiveFormatMtree
toEnum 589824 = ArchiveFormatRaw
toEnum 655360 = ArchiveFormatXar
toEnum 720896 = ArchiveFormatLha
toEnum 786432 = ArchiveFormatCab
toEnum 851968 = ArchiveFormatRar
toEnum 917504 = ArchiveFormat7zip
toEnum 983040 = ArchiveFormatWarc
toEnum 1048576 = ArchiveFormatRarV5
toEnum unmatched = error ("ArchiveFormat.toEnum: Cannot match " ++ show unmatched)
{-# LINE 123 "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)