{- |
Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
License    : LGPL-2.1
Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)

Zlib decompression
-}

#define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \
       && !defined(__HADDOCK_VERSION__))

module GI.Gio.Objects.ZlibCompressor
    (

-- * Exported types
    ZlibCompressor(..)                      ,
    IsZlibCompressor                        ,
    toZlibCompressor                        ,
    noZlibCompressor                        ,


 -- * Methods
-- ** getFileInfo #method:getFileInfo#

#if ENABLE_OVERLOADING
    ZlibCompressorGetFileInfoMethodInfo     ,
#endif
    zlibCompressorGetFileInfo               ,


-- ** new #method:new#

    zlibCompressorNew                       ,


-- ** setFileInfo #method:setFileInfo#

#if ENABLE_OVERLOADING
    ZlibCompressorSetFileInfoMethodInfo     ,
#endif
    zlibCompressorSetFileInfo               ,




 -- * Properties
-- ** fileInfo #attr:fileInfo#
{- | If set to a non-'Nothing' 'GI.Gio.Objects.FileInfo.FileInfo' object, and 'GI.Gio.Objects.ZlibCompressor.ZlibCompressor':@/format/@ is
'GI.Gio.Enums.ZlibCompressorFormatGzip', the compressor will write the file name
and modification time from the file info to the GZIP header.

/Since: 2.26/
-}
#if ENABLE_OVERLOADING
    ZlibCompressorFileInfoPropertyInfo      ,
#endif
    clearZlibCompressorFileInfo             ,
    constructZlibCompressorFileInfo         ,
    getZlibCompressorFileInfo               ,
    setZlibCompressorFileInfo               ,
#if ENABLE_OVERLOADING
    zlibCompressorFileInfo                  ,
#endif


-- ** format #attr:format#
{- | /No description available in the introspection data./
-}
#if ENABLE_OVERLOADING
    ZlibCompressorFormatPropertyInfo        ,
#endif
    constructZlibCompressorFormat           ,
    getZlibCompressorFormat                 ,
#if ENABLE_OVERLOADING
    zlibCompressorFormat                    ,
#endif


-- ** level #attr:level#
{- | /No description available in the introspection data./
-}
#if ENABLE_OVERLOADING
    ZlibCompressorLevelPropertyInfo         ,
#endif
    constructZlibCompressorLevel            ,
    getZlibCompressorLevel                  ,
#if ENABLE_OVERLOADING
    zlibCompressorLevel                     ,
#endif




    ) where

import Data.GI.Base.ShortPrelude
import qualified Data.GI.Base.ShortPrelude as SP
import qualified Data.GI.Base.Overloading as O
import qualified Prelude as P

import qualified Data.GI.Base.Attributes as GI.Attributes
import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr
import qualified Data.GI.Base.GError as B.GError
import qualified Data.GI.Base.GVariant as B.GVariant
import qualified Data.GI.Base.GValue as B.GValue
import qualified Data.GI.Base.GParamSpec as B.GParamSpec
import qualified Data.GI.Base.CallStack as B.CallStack
import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map
import qualified Foreign.Ptr as FP

import qualified GI.GObject.Objects.Object as GObject.Object
import {-# SOURCE #-} qualified GI.Gio.Enums as Gio.Enums
import {-# SOURCE #-} qualified GI.Gio.Interfaces.Converter as Gio.Converter
import {-# SOURCE #-} qualified GI.Gio.Objects.FileInfo as Gio.FileInfo

-- | Memory-managed wrapper type.
newtype ZlibCompressor = ZlibCompressor (ManagedPtr ZlibCompressor)
foreign import ccall "g_zlib_compressor_get_type"
    c_g_zlib_compressor_get_type :: IO GType

instance GObject ZlibCompressor where
    gobjectType _ = c_g_zlib_compressor_get_type


-- | Type class for types which can be safely cast to `ZlibCompressor`, for instance with `toZlibCompressor`.
class GObject o => IsZlibCompressor o
#if MIN_VERSION_base(4,9,0)
instance {-# OVERLAPPABLE #-} (GObject a, O.UnknownAncestorError ZlibCompressor a) =>
    IsZlibCompressor a
#endif
instance IsZlibCompressor ZlibCompressor
instance GObject.Object.IsObject ZlibCompressor
instance Gio.Converter.IsConverter ZlibCompressor

-- | Cast to `ZlibCompressor`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`.
toZlibCompressor :: (MonadIO m, IsZlibCompressor o) => o -> m ZlibCompressor
toZlibCompressor = liftIO . unsafeCastTo ZlibCompressor

-- | A convenience alias for `Nothing` :: `Maybe` `ZlibCompressor`.
noZlibCompressor :: Maybe ZlibCompressor
noZlibCompressor = Nothing

#if ENABLE_OVERLOADING
type family ResolveZlibCompressorMethod (t :: Symbol) (o :: *) :: * where
    ResolveZlibCompressorMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolveZlibCompressorMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolveZlibCompressorMethod "convert" o = Gio.Converter.ConverterConvertMethodInfo
    ResolveZlibCompressorMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolveZlibCompressorMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolveZlibCompressorMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
    ResolveZlibCompressorMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolveZlibCompressorMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolveZlibCompressorMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolveZlibCompressorMethod "ref" o = GObject.Object.ObjectRefMethodInfo
    ResolveZlibCompressorMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolveZlibCompressorMethod "reset" o = Gio.Converter.ConverterResetMethodInfo
    ResolveZlibCompressorMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
    ResolveZlibCompressorMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
    ResolveZlibCompressorMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
    ResolveZlibCompressorMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
    ResolveZlibCompressorMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
    ResolveZlibCompressorMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
    ResolveZlibCompressorMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
    ResolveZlibCompressorMethod "getFileInfo" o = ZlibCompressorGetFileInfoMethodInfo
    ResolveZlibCompressorMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolveZlibCompressorMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolveZlibCompressorMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolveZlibCompressorMethod "setFileInfo" o = ZlibCompressorSetFileInfoMethodInfo
    ResolveZlibCompressorMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveZlibCompressorMethod l o = O.MethodResolutionFailed l o

instance (info ~ ResolveZlibCompressorMethod t ZlibCompressor, O.MethodInfo info ZlibCompressor p) => O.IsLabelProxy t (ZlibCompressor -> p) where
    fromLabelProxy _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)

#if MIN_VERSION_base(4,9,0)
instance (info ~ ResolveZlibCompressorMethod t ZlibCompressor, O.MethodInfo info ZlibCompressor p) => O.IsLabel t (ZlibCompressor -> p) where
#if MIN_VERSION_base(4,10,0)
    fromLabel = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)
#else
    fromLabel _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)
#endif
#endif

#endif

-- VVV Prop "file-info"
   -- Type: TInterface (Name {namespace = "Gio", name = "FileInfo"})
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Just False,Just True)

{- |
Get the value of the “@file-info@” property.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

@
'Data.GI.Base.Attributes.get' zlibCompressor #fileInfo
@
-}
getZlibCompressorFileInfo :: (MonadIO m, IsZlibCompressor o) => o -> m Gio.FileInfo.FileInfo
getZlibCompressorFileInfo obj = liftIO $ checkUnexpectedNothing "getZlibCompressorFileInfo" $ getObjectPropertyObject obj "file-info" Gio.FileInfo.FileInfo

{- |
Set the value of the “@file-info@” property.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

@
'Data.GI.Base.Attributes.set' zlibCompressor [ #fileInfo 'Data.GI.Base.Attributes.:=' value ]
@
-}
setZlibCompressorFileInfo :: (MonadIO m, IsZlibCompressor o, Gio.FileInfo.IsFileInfo a) => o -> a -> m ()
setZlibCompressorFileInfo obj val = liftIO $ setObjectPropertyObject obj "file-info" (Just val)

{- |
Construct a `GValueConstruct` with valid value for the “@file-info@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
-}
constructZlibCompressorFileInfo :: (IsZlibCompressor o, Gio.FileInfo.IsFileInfo a) => a -> IO (GValueConstruct o)
constructZlibCompressorFileInfo val = constructObjectPropertyObject "file-info" (Just val)

{- |
Set the value of the “@file-info@” property to `Nothing`.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

@
'Data.GI.Base.Attributes.clear' #fileInfo
@
-}
clearZlibCompressorFileInfo :: (MonadIO m, IsZlibCompressor o) => o -> m ()
clearZlibCompressorFileInfo obj = liftIO $ setObjectPropertyObject obj "file-info" (Nothing :: Maybe Gio.FileInfo.FileInfo)

#if ENABLE_OVERLOADING
data ZlibCompressorFileInfoPropertyInfo
instance AttrInfo ZlibCompressorFileInfoPropertyInfo where
    type AttrAllowedOps ZlibCompressorFileInfoPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint ZlibCompressorFileInfoPropertyInfo = Gio.FileInfo.IsFileInfo
    type AttrBaseTypeConstraint ZlibCompressorFileInfoPropertyInfo = IsZlibCompressor
    type AttrGetType ZlibCompressorFileInfoPropertyInfo = Gio.FileInfo.FileInfo
    type AttrLabel ZlibCompressorFileInfoPropertyInfo = "file-info"
    type AttrOrigin ZlibCompressorFileInfoPropertyInfo = ZlibCompressor
    attrGet _ = getZlibCompressorFileInfo
    attrSet _ = setZlibCompressorFileInfo
    attrConstruct _ = constructZlibCompressorFileInfo
    attrClear _ = clearZlibCompressorFileInfo
#endif

-- VVV Prop "format"
   -- Type: TInterface (Name {namespace = "Gio", name = "ZlibCompressorFormat"})
   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
   -- Nullable: (Nothing,Nothing)

{- |
Get the value of the “@format@” property.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

@
'Data.GI.Base.Attributes.get' zlibCompressor #format
@
-}
getZlibCompressorFormat :: (MonadIO m, IsZlibCompressor o) => o -> m Gio.Enums.ZlibCompressorFormat
getZlibCompressorFormat obj = liftIO $ getObjectPropertyEnum obj "format"

{- |
Construct a `GValueConstruct` with valid value for the “@format@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
-}
constructZlibCompressorFormat :: (IsZlibCompressor o) => Gio.Enums.ZlibCompressorFormat -> IO (GValueConstruct o)
constructZlibCompressorFormat val = constructObjectPropertyEnum "format" val

#if ENABLE_OVERLOADING
data ZlibCompressorFormatPropertyInfo
instance AttrInfo ZlibCompressorFormatPropertyInfo where
    type AttrAllowedOps ZlibCompressorFormatPropertyInfo = '[ 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint ZlibCompressorFormatPropertyInfo = (~) Gio.Enums.ZlibCompressorFormat
    type AttrBaseTypeConstraint ZlibCompressorFormatPropertyInfo = IsZlibCompressor
    type AttrGetType ZlibCompressorFormatPropertyInfo = Gio.Enums.ZlibCompressorFormat
    type AttrLabel ZlibCompressorFormatPropertyInfo = "format"
    type AttrOrigin ZlibCompressorFormatPropertyInfo = ZlibCompressor
    attrGet _ = getZlibCompressorFormat
    attrSet _ = undefined
    attrConstruct _ = constructZlibCompressorFormat
    attrClear _ = undefined
#endif

-- VVV Prop "level"
   -- Type: TBasicType TInt
   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
   -- Nullable: (Nothing,Nothing)

{- |
Get the value of the “@level@” property.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

@
'Data.GI.Base.Attributes.get' zlibCompressor #level
@
-}
getZlibCompressorLevel :: (MonadIO m, IsZlibCompressor o) => o -> m Int32
getZlibCompressorLevel obj = liftIO $ getObjectPropertyInt32 obj "level"

{- |
Construct a `GValueConstruct` with valid value for the “@level@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
-}
constructZlibCompressorLevel :: (IsZlibCompressor o) => Int32 -> IO (GValueConstruct o)
constructZlibCompressorLevel val = constructObjectPropertyInt32 "level" val

#if ENABLE_OVERLOADING
data ZlibCompressorLevelPropertyInfo
instance AttrInfo ZlibCompressorLevelPropertyInfo where
    type AttrAllowedOps ZlibCompressorLevelPropertyInfo = '[ 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint ZlibCompressorLevelPropertyInfo = (~) Int32
    type AttrBaseTypeConstraint ZlibCompressorLevelPropertyInfo = IsZlibCompressor
    type AttrGetType ZlibCompressorLevelPropertyInfo = Int32
    type AttrLabel ZlibCompressorLevelPropertyInfo = "level"
    type AttrOrigin ZlibCompressorLevelPropertyInfo = ZlibCompressor
    attrGet _ = getZlibCompressorLevel
    attrSet _ = undefined
    attrConstruct _ = constructZlibCompressorLevel
    attrClear _ = undefined
#endif

#if ENABLE_OVERLOADING
instance O.HasAttributeList ZlibCompressor
type instance O.AttributeList ZlibCompressor = ZlibCompressorAttributeList
type ZlibCompressorAttributeList = ('[ '("fileInfo", ZlibCompressorFileInfoPropertyInfo), '("format", ZlibCompressorFormatPropertyInfo), '("level", ZlibCompressorLevelPropertyInfo)] :: [(Symbol, *)])
#endif

#if ENABLE_OVERLOADING
zlibCompressorFileInfo :: AttrLabelProxy "fileInfo"
zlibCompressorFileInfo = AttrLabelProxy

zlibCompressorFormat :: AttrLabelProxy "format"
zlibCompressorFormat = AttrLabelProxy

zlibCompressorLevel :: AttrLabelProxy "level"
zlibCompressorLevel = AttrLabelProxy

#endif

#if ENABLE_OVERLOADING
type instance O.SignalList ZlibCompressor = ZlibCompressorSignalList
type ZlibCompressorSignalList = ('[ '("notify", GObject.Object.ObjectNotifySignalInfo)] :: [(Symbol, *)])

#endif

-- method ZlibCompressor::new
-- method type : Constructor
-- Args : [Arg {argCName = "format", argType = TInterface (Name {namespace = "Gio", name = "ZlibCompressorFormat"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The format to use for the compressed data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "level", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "compression level (0-9), -1 for default", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Gio", name = "ZlibCompressor"}))
-- throws : False
-- Skip return : False

foreign import ccall "g_zlib_compressor_new" g_zlib_compressor_new ::
    CUInt ->                                -- format : TInterface (Name {namespace = "Gio", name = "ZlibCompressorFormat"})
    Int32 ->                                -- level : TBasicType TInt
    IO (Ptr ZlibCompressor)

{- |
Creates a new 'GI.Gio.Objects.ZlibCompressor.ZlibCompressor'.

/Since: 2.24/
-}
zlibCompressorNew ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    Gio.Enums.ZlibCompressorFormat
    {- ^ /@format@/: The format to use for the compressed data -}
    -> Int32
    {- ^ /@level@/: compression level (0-9), -1 for default -}
    -> m ZlibCompressor
    {- ^ __Returns:__ a new 'GI.Gio.Objects.ZlibCompressor.ZlibCompressor' -}
zlibCompressorNew format level = liftIO $ do
    let format' = (fromIntegral . fromEnum) format
    result <- g_zlib_compressor_new format' level
    checkUnexpectedReturnNULL "zlibCompressorNew" result
    result' <- (wrapObject ZlibCompressor) result
    return result'

#if ENABLE_OVERLOADING
#endif

-- method ZlibCompressor::get_file_info
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "compressor", argType = TInterface (Name {namespace = "Gio", name = "ZlibCompressor"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GZlibCompressor", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Gio", name = "FileInfo"}))
-- throws : False
-- Skip return : False

foreign import ccall "g_zlib_compressor_get_file_info" g_zlib_compressor_get_file_info ::
    Ptr ZlibCompressor ->                   -- compressor : TInterface (Name {namespace = "Gio", name = "ZlibCompressor"})
    IO (Ptr Gio.FileInfo.FileInfo)

{- |
Returns the 'GI.Gio.Objects.ZlibCompressor.ZlibCompressor':@/file-info/@ property.

/Since: 2.26/
-}
zlibCompressorGetFileInfo ::
    (B.CallStack.HasCallStack, MonadIO m, IsZlibCompressor a) =>
    a
    {- ^ /@compressor@/: a 'GI.Gio.Objects.ZlibCompressor.ZlibCompressor' -}
    -> m Gio.FileInfo.FileInfo
    {- ^ __Returns:__ a 'GI.Gio.Objects.FileInfo.FileInfo', or 'Nothing' -}
zlibCompressorGetFileInfo compressor = liftIO $ do
    compressor' <- unsafeManagedPtrCastPtr compressor
    result <- g_zlib_compressor_get_file_info compressor'
    checkUnexpectedReturnNULL "zlibCompressorGetFileInfo" result
    result' <- (newObject Gio.FileInfo.FileInfo) result
    touchManagedPtr compressor
    return result'

#if ENABLE_OVERLOADING
data ZlibCompressorGetFileInfoMethodInfo
instance (signature ~ (m Gio.FileInfo.FileInfo), MonadIO m, IsZlibCompressor a) => O.MethodInfo ZlibCompressorGetFileInfoMethodInfo a signature where
    overloadedMethod _ = zlibCompressorGetFileInfo

#endif

-- method ZlibCompressor::set_file_info
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "compressor", argType = TInterface (Name {namespace = "Gio", name = "ZlibCompressor"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GZlibCompressor", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "file_info", argType = TInterface (Name {namespace = "Gio", name = "FileInfo"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "a #GFileInfo", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "g_zlib_compressor_set_file_info" g_zlib_compressor_set_file_info ::
    Ptr ZlibCompressor ->                   -- compressor : TInterface (Name {namespace = "Gio", name = "ZlibCompressor"})
    Ptr Gio.FileInfo.FileInfo ->            -- file_info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    IO ()

{- |
Sets /@fileInfo@/ in /@compressor@/. If non-'Nothing', and /@compressor@/\'s
'GI.Gio.Objects.ZlibCompressor.ZlibCompressor':@/format/@ property is 'GI.Gio.Enums.ZlibCompressorFormatGzip',
it will be used to set the file name and modification time in
the GZIP header of the compressed data.

Note: it is an error to call this function while a compression is in
progress; it may only be called immediately after creation of /@compressor@/,
or after resetting it with 'GI.Gio.Interfaces.Converter.converterReset'.

/Since: 2.26/
-}
zlibCompressorSetFileInfo ::
    (B.CallStack.HasCallStack, MonadIO m, IsZlibCompressor a, Gio.FileInfo.IsFileInfo b) =>
    a
    {- ^ /@compressor@/: a 'GI.Gio.Objects.ZlibCompressor.ZlibCompressor' -}
    -> Maybe (b)
    {- ^ /@fileInfo@/: a 'GI.Gio.Objects.FileInfo.FileInfo' -}
    -> m ()
zlibCompressorSetFileInfo compressor fileInfo = liftIO $ do
    compressor' <- unsafeManagedPtrCastPtr compressor
    maybeFileInfo <- case fileInfo of
        Nothing -> return nullPtr
        Just jFileInfo -> do
            jFileInfo' <- unsafeManagedPtrCastPtr jFileInfo
            return jFileInfo'
    g_zlib_compressor_set_file_info compressor' maybeFileInfo
    touchManagedPtr compressor
    whenJust fileInfo touchManagedPtr
    return ()

#if ENABLE_OVERLOADING
data ZlibCompressorSetFileInfoMethodInfo
instance (signature ~ (Maybe (b) -> m ()), MonadIO m, IsZlibCompressor a, Gio.FileInfo.IsFileInfo b) => O.MethodInfo ZlibCompressorSetFileInfoMethodInfo a signature where
    overloadedMethod _ = zlibCompressorSetFileInfo

#endif