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

Functionality for manipulating basic metadata for files. 'GI.Gio.Objects.FileInfo.FileInfo'
implements methods for getting information that all files should
contain, and allows for manipulation of extended attributes.

See [GFileAttribute][gio-GFileAttribute] for more information on how
GIO handles file attributes.

To obtain a 'GI.Gio.Objects.FileInfo.FileInfo' for a 'GI.Gio.Interfaces.File.File', use 'GI.Gio.Interfaces.File.fileQueryInfo' (or its
async variant). To obtain a 'GI.Gio.Objects.FileInfo.FileInfo' for a file input or output
stream, use 'GI.Gio.Objects.FileInputStream.fileInputStreamQueryInfo' or
'GI.Gio.Objects.FileOutputStream.fileOutputStreamQueryInfo' (or their async variants).

To change the actual attributes of a file, you should then set the
attribute in the 'GI.Gio.Objects.FileInfo.FileInfo' and call 'GI.Gio.Interfaces.File.fileSetAttributesFromInfo'
or 'GI.Gio.Interfaces.File.fileSetAttributesAsync' on a GFile.

However, not all attributes can be changed in the file. For instance,
the actual size of a file cannot be changed via 'GI.Gio.Objects.FileInfo.fileInfoSetSize'.
You may call 'GI.Gio.Interfaces.File.fileQuerySettableAttributes' and
'GI.Gio.Interfaces.File.fileQueryWritableNamespaces' to discover the settable attributes
of a particular file at runtime.

'GI.Gio.Structs.FileAttributeMatcher.FileAttributeMatcher' allows for searching through a 'GI.Gio.Objects.FileInfo.FileInfo' for
attributes.
-}

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

module GI.Gio.Objects.FileInfo
    (

-- * Exported types
    FileInfo(..)                            ,
    IsFileInfo                              ,
    toFileInfo                              ,
    noFileInfo                              ,


 -- * Methods
-- ** clearStatus #method:clearStatus#

#if ENABLE_OVERLOADING
    FileInfoClearStatusMethodInfo           ,
#endif
    fileInfoClearStatus                     ,


-- ** copyInto #method:copyInto#

#if ENABLE_OVERLOADING
    FileInfoCopyIntoMethodInfo              ,
#endif
    fileInfoCopyInto                        ,


-- ** dup #method:dup#

#if ENABLE_OVERLOADING
    FileInfoDupMethodInfo                   ,
#endif
    fileInfoDup                             ,


-- ** getAttributeAsString #method:getAttributeAsString#

#if ENABLE_OVERLOADING
    FileInfoGetAttributeAsStringMethodInfo  ,
#endif
    fileInfoGetAttributeAsString            ,


-- ** getAttributeBoolean #method:getAttributeBoolean#

#if ENABLE_OVERLOADING
    FileInfoGetAttributeBooleanMethodInfo   ,
#endif
    fileInfoGetAttributeBoolean             ,


-- ** getAttributeByteString #method:getAttributeByteString#

#if ENABLE_OVERLOADING
    FileInfoGetAttributeByteStringMethodInfo,
#endif
    fileInfoGetAttributeByteString          ,


-- ** getAttributeData #method:getAttributeData#

#if ENABLE_OVERLOADING
    FileInfoGetAttributeDataMethodInfo      ,
#endif
    fileInfoGetAttributeData                ,


-- ** getAttributeInt32 #method:getAttributeInt32#

#if ENABLE_OVERLOADING
    FileInfoGetAttributeInt32MethodInfo     ,
#endif
    fileInfoGetAttributeInt32               ,


-- ** getAttributeInt64 #method:getAttributeInt64#

#if ENABLE_OVERLOADING
    FileInfoGetAttributeInt64MethodInfo     ,
#endif
    fileInfoGetAttributeInt64               ,


-- ** getAttributeObject #method:getAttributeObject#

#if ENABLE_OVERLOADING
    FileInfoGetAttributeObjectMethodInfo    ,
#endif
    fileInfoGetAttributeObject              ,


-- ** getAttributeStatus #method:getAttributeStatus#

#if ENABLE_OVERLOADING
    FileInfoGetAttributeStatusMethodInfo    ,
#endif
    fileInfoGetAttributeStatus              ,


-- ** getAttributeString #method:getAttributeString#

#if ENABLE_OVERLOADING
    FileInfoGetAttributeStringMethodInfo    ,
#endif
    fileInfoGetAttributeString              ,


-- ** getAttributeStringv #method:getAttributeStringv#

#if ENABLE_OVERLOADING
    FileInfoGetAttributeStringvMethodInfo   ,
#endif
    fileInfoGetAttributeStringv             ,


-- ** getAttributeType #method:getAttributeType#

#if ENABLE_OVERLOADING
    FileInfoGetAttributeTypeMethodInfo      ,
#endif
    fileInfoGetAttributeType                ,


-- ** getAttributeUint32 #method:getAttributeUint32#

#if ENABLE_OVERLOADING
    FileInfoGetAttributeUint32MethodInfo    ,
#endif
    fileInfoGetAttributeUint32              ,


-- ** getAttributeUint64 #method:getAttributeUint64#

#if ENABLE_OVERLOADING
    FileInfoGetAttributeUint64MethodInfo    ,
#endif
    fileInfoGetAttributeUint64              ,


-- ** getContentType #method:getContentType#

#if ENABLE_OVERLOADING
    FileInfoGetContentTypeMethodInfo        ,
#endif
    fileInfoGetContentType                  ,


-- ** getDeletionDate #method:getDeletionDate#

#if ENABLE_OVERLOADING
    FileInfoGetDeletionDateMethodInfo       ,
#endif
    fileInfoGetDeletionDate                 ,


-- ** getDisplayName #method:getDisplayName#

#if ENABLE_OVERLOADING
    FileInfoGetDisplayNameMethodInfo        ,
#endif
    fileInfoGetDisplayName                  ,


-- ** getEditName #method:getEditName#

#if ENABLE_OVERLOADING
    FileInfoGetEditNameMethodInfo           ,
#endif
    fileInfoGetEditName                     ,


-- ** getEtag #method:getEtag#

#if ENABLE_OVERLOADING
    FileInfoGetEtagMethodInfo               ,
#endif
    fileInfoGetEtag                         ,


-- ** getFileType #method:getFileType#

#if ENABLE_OVERLOADING
    FileInfoGetFileTypeMethodInfo           ,
#endif
    fileInfoGetFileType                     ,


-- ** getIcon #method:getIcon#

#if ENABLE_OVERLOADING
    FileInfoGetIconMethodInfo               ,
#endif
    fileInfoGetIcon                         ,


-- ** getIsBackup #method:getIsBackup#

#if ENABLE_OVERLOADING
    FileInfoGetIsBackupMethodInfo           ,
#endif
    fileInfoGetIsBackup                     ,


-- ** getIsHidden #method:getIsHidden#

#if ENABLE_OVERLOADING
    FileInfoGetIsHiddenMethodInfo           ,
#endif
    fileInfoGetIsHidden                     ,


-- ** getIsSymlink #method:getIsSymlink#

#if ENABLE_OVERLOADING
    FileInfoGetIsSymlinkMethodInfo          ,
#endif
    fileInfoGetIsSymlink                    ,


-- ** getModificationTime #method:getModificationTime#

#if ENABLE_OVERLOADING
    FileInfoGetModificationTimeMethodInfo   ,
#endif
    fileInfoGetModificationTime             ,


-- ** getName #method:getName#

#if ENABLE_OVERLOADING
    FileInfoGetNameMethodInfo               ,
#endif
    fileInfoGetName                         ,


-- ** getSize #method:getSize#

#if ENABLE_OVERLOADING
    FileInfoGetSizeMethodInfo               ,
#endif
    fileInfoGetSize                         ,


-- ** getSortOrder #method:getSortOrder#

#if ENABLE_OVERLOADING
    FileInfoGetSortOrderMethodInfo          ,
#endif
    fileInfoGetSortOrder                    ,


-- ** getSymbolicIcon #method:getSymbolicIcon#

#if ENABLE_OVERLOADING
    FileInfoGetSymbolicIconMethodInfo       ,
#endif
    fileInfoGetSymbolicIcon                 ,


-- ** getSymlinkTarget #method:getSymlinkTarget#

#if ENABLE_OVERLOADING
    FileInfoGetSymlinkTargetMethodInfo      ,
#endif
    fileInfoGetSymlinkTarget                ,


-- ** hasAttribute #method:hasAttribute#

#if ENABLE_OVERLOADING
    FileInfoHasAttributeMethodInfo          ,
#endif
    fileInfoHasAttribute                    ,


-- ** hasNamespace #method:hasNamespace#

#if ENABLE_OVERLOADING
    FileInfoHasNamespaceMethodInfo          ,
#endif
    fileInfoHasNamespace                    ,


-- ** listAttributes #method:listAttributes#

#if ENABLE_OVERLOADING
    FileInfoListAttributesMethodInfo        ,
#endif
    fileInfoListAttributes                  ,


-- ** new #method:new#

    fileInfoNew                             ,


-- ** removeAttribute #method:removeAttribute#

#if ENABLE_OVERLOADING
    FileInfoRemoveAttributeMethodInfo       ,
#endif
    fileInfoRemoveAttribute                 ,


-- ** setAttribute #method:setAttribute#

#if ENABLE_OVERLOADING
    FileInfoSetAttributeMethodInfo          ,
#endif
    fileInfoSetAttribute                    ,


-- ** setAttributeBoolean #method:setAttributeBoolean#

#if ENABLE_OVERLOADING
    FileInfoSetAttributeBooleanMethodInfo   ,
#endif
    fileInfoSetAttributeBoolean             ,


-- ** setAttributeByteString #method:setAttributeByteString#

#if ENABLE_OVERLOADING
    FileInfoSetAttributeByteStringMethodInfo,
#endif
    fileInfoSetAttributeByteString          ,


-- ** setAttributeInt32 #method:setAttributeInt32#

#if ENABLE_OVERLOADING
    FileInfoSetAttributeInt32MethodInfo     ,
#endif
    fileInfoSetAttributeInt32               ,


-- ** setAttributeInt64 #method:setAttributeInt64#

#if ENABLE_OVERLOADING
    FileInfoSetAttributeInt64MethodInfo     ,
#endif
    fileInfoSetAttributeInt64               ,


-- ** setAttributeMask #method:setAttributeMask#

#if ENABLE_OVERLOADING
    FileInfoSetAttributeMaskMethodInfo      ,
#endif
    fileInfoSetAttributeMask                ,


-- ** setAttributeObject #method:setAttributeObject#

#if ENABLE_OVERLOADING
    FileInfoSetAttributeObjectMethodInfo    ,
#endif
    fileInfoSetAttributeObject              ,


-- ** setAttributeStatus #method:setAttributeStatus#

#if ENABLE_OVERLOADING
    FileInfoSetAttributeStatusMethodInfo    ,
#endif
    fileInfoSetAttributeStatus              ,


-- ** setAttributeString #method:setAttributeString#

#if ENABLE_OVERLOADING
    FileInfoSetAttributeStringMethodInfo    ,
#endif
    fileInfoSetAttributeString              ,


-- ** setAttributeStringv #method:setAttributeStringv#

#if ENABLE_OVERLOADING
    FileInfoSetAttributeStringvMethodInfo   ,
#endif
    fileInfoSetAttributeStringv             ,


-- ** setAttributeUint32 #method:setAttributeUint32#

#if ENABLE_OVERLOADING
    FileInfoSetAttributeUint32MethodInfo    ,
#endif
    fileInfoSetAttributeUint32              ,


-- ** setAttributeUint64 #method:setAttributeUint64#

#if ENABLE_OVERLOADING
    FileInfoSetAttributeUint64MethodInfo    ,
#endif
    fileInfoSetAttributeUint64              ,


-- ** setContentType #method:setContentType#

#if ENABLE_OVERLOADING
    FileInfoSetContentTypeMethodInfo        ,
#endif
    fileInfoSetContentType                  ,


-- ** setDisplayName #method:setDisplayName#

#if ENABLE_OVERLOADING
    FileInfoSetDisplayNameMethodInfo        ,
#endif
    fileInfoSetDisplayName                  ,


-- ** setEditName #method:setEditName#

#if ENABLE_OVERLOADING
    FileInfoSetEditNameMethodInfo           ,
#endif
    fileInfoSetEditName                     ,


-- ** setFileType #method:setFileType#

#if ENABLE_OVERLOADING
    FileInfoSetFileTypeMethodInfo           ,
#endif
    fileInfoSetFileType                     ,


-- ** setIcon #method:setIcon#

#if ENABLE_OVERLOADING
    FileInfoSetIconMethodInfo               ,
#endif
    fileInfoSetIcon                         ,


-- ** setIsHidden #method:setIsHidden#

#if ENABLE_OVERLOADING
    FileInfoSetIsHiddenMethodInfo           ,
#endif
    fileInfoSetIsHidden                     ,


-- ** setIsSymlink #method:setIsSymlink#

#if ENABLE_OVERLOADING
    FileInfoSetIsSymlinkMethodInfo          ,
#endif
    fileInfoSetIsSymlink                    ,


-- ** setModificationTime #method:setModificationTime#

#if ENABLE_OVERLOADING
    FileInfoSetModificationTimeMethodInfo   ,
#endif
    fileInfoSetModificationTime             ,


-- ** setName #method:setName#

#if ENABLE_OVERLOADING
    FileInfoSetNameMethodInfo               ,
#endif
    fileInfoSetName                         ,


-- ** setSize #method:setSize#

#if ENABLE_OVERLOADING
    FileInfoSetSizeMethodInfo               ,
#endif
    fileInfoSetSize                         ,


-- ** setSortOrder #method:setSortOrder#

#if ENABLE_OVERLOADING
    FileInfoSetSortOrderMethodInfo          ,
#endif
    fileInfoSetSortOrder                    ,


-- ** setSymbolicIcon #method:setSymbolicIcon#

#if ENABLE_OVERLOADING
    FileInfoSetSymbolicIconMethodInfo       ,
#endif
    fileInfoSetSymbolicIcon                 ,


-- ** setSymlinkTarget #method:setSymlinkTarget#

#if ENABLE_OVERLOADING
    FileInfoSetSymlinkTargetMethodInfo      ,
#endif
    fileInfoSetSymlinkTarget                ,


-- ** unsetAttributeMask #method:unsetAttributeMask#

#if ENABLE_OVERLOADING
    FileInfoUnsetAttributeMaskMethodInfo    ,
#endif
    fileInfoUnsetAttributeMask              ,




    ) 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.GClosure as B.GClosure
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.GI.Base.Properties as B.Properties
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 GHC.OverloadedLabels as OL

import qualified GI.GLib.Structs.DateTime as GLib.DateTime
import qualified GI.GLib.Structs.TimeVal as GLib.TimeVal
import qualified GI.GObject.Objects.Object as GObject.Object
import {-# SOURCE #-} qualified GI.Gio.Enums as Gio.Enums
import {-# SOURCE #-} qualified GI.Gio.Interfaces.Icon as Gio.Icon
import {-# SOURCE #-} qualified GI.Gio.Structs.FileAttributeMatcher as Gio.FileAttributeMatcher

-- | Memory-managed wrapper type.
newtype FileInfo = FileInfo (ManagedPtr FileInfo)
foreign import ccall "g_file_info_get_type"
    c_g_file_info_get_type :: IO GType

instance GObject FileInfo where
    gobjectType = c_g_file_info_get_type


-- | Type class for types which can be safely cast to `FileInfo`, for instance with `toFileInfo`.
class (GObject o, O.IsDescendantOf FileInfo o) => IsFileInfo o
instance (GObject o, O.IsDescendantOf FileInfo o) => IsFileInfo o

instance O.HasParentTypes FileInfo
type instance O.ParentTypes FileInfo = '[GObject.Object.Object]

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

-- | A convenience alias for `Nothing` :: `Maybe` `FileInfo`.
noFileInfo :: Maybe FileInfo
noFileInfo = Nothing

#if ENABLE_OVERLOADING
type family ResolveFileInfoMethod (t :: Symbol) (o :: *) :: * where
    ResolveFileInfoMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolveFileInfoMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolveFileInfoMethod "clearStatus" o = FileInfoClearStatusMethodInfo
    ResolveFileInfoMethod "copyInto" o = FileInfoCopyIntoMethodInfo
    ResolveFileInfoMethod "dup" o = FileInfoDupMethodInfo
    ResolveFileInfoMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolveFileInfoMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolveFileInfoMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
    ResolveFileInfoMethod "hasAttribute" o = FileInfoHasAttributeMethodInfo
    ResolveFileInfoMethod "hasNamespace" o = FileInfoHasNamespaceMethodInfo
    ResolveFileInfoMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolveFileInfoMethod "listAttributes" o = FileInfoListAttributesMethodInfo
    ResolveFileInfoMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolveFileInfoMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolveFileInfoMethod "ref" o = GObject.Object.ObjectRefMethodInfo
    ResolveFileInfoMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolveFileInfoMethod "removeAttribute" o = FileInfoRemoveAttributeMethodInfo
    ResolveFileInfoMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
    ResolveFileInfoMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
    ResolveFileInfoMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
    ResolveFileInfoMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
    ResolveFileInfoMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
    ResolveFileInfoMethod "unsetAttributeMask" o = FileInfoUnsetAttributeMaskMethodInfo
    ResolveFileInfoMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
    ResolveFileInfoMethod "getAttributeAsString" o = FileInfoGetAttributeAsStringMethodInfo
    ResolveFileInfoMethod "getAttributeBoolean" o = FileInfoGetAttributeBooleanMethodInfo
    ResolveFileInfoMethod "getAttributeByteString" o = FileInfoGetAttributeByteStringMethodInfo
    ResolveFileInfoMethod "getAttributeData" o = FileInfoGetAttributeDataMethodInfo
    ResolveFileInfoMethod "getAttributeInt32" o = FileInfoGetAttributeInt32MethodInfo
    ResolveFileInfoMethod "getAttributeInt64" o = FileInfoGetAttributeInt64MethodInfo
    ResolveFileInfoMethod "getAttributeObject" o = FileInfoGetAttributeObjectMethodInfo
    ResolveFileInfoMethod "getAttributeStatus" o = FileInfoGetAttributeStatusMethodInfo
    ResolveFileInfoMethod "getAttributeString" o = FileInfoGetAttributeStringMethodInfo
    ResolveFileInfoMethod "getAttributeStringv" o = FileInfoGetAttributeStringvMethodInfo
    ResolveFileInfoMethod "getAttributeType" o = FileInfoGetAttributeTypeMethodInfo
    ResolveFileInfoMethod "getAttributeUint32" o = FileInfoGetAttributeUint32MethodInfo
    ResolveFileInfoMethod "getAttributeUint64" o = FileInfoGetAttributeUint64MethodInfo
    ResolveFileInfoMethod "getContentType" o = FileInfoGetContentTypeMethodInfo
    ResolveFileInfoMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
    ResolveFileInfoMethod "getDeletionDate" o = FileInfoGetDeletionDateMethodInfo
    ResolveFileInfoMethod "getDisplayName" o = FileInfoGetDisplayNameMethodInfo
    ResolveFileInfoMethod "getEditName" o = FileInfoGetEditNameMethodInfo
    ResolveFileInfoMethod "getEtag" o = FileInfoGetEtagMethodInfo
    ResolveFileInfoMethod "getFileType" o = FileInfoGetFileTypeMethodInfo
    ResolveFileInfoMethod "getIcon" o = FileInfoGetIconMethodInfo
    ResolveFileInfoMethod "getIsBackup" o = FileInfoGetIsBackupMethodInfo
    ResolveFileInfoMethod "getIsHidden" o = FileInfoGetIsHiddenMethodInfo
    ResolveFileInfoMethod "getIsSymlink" o = FileInfoGetIsSymlinkMethodInfo
    ResolveFileInfoMethod "getModificationTime" o = FileInfoGetModificationTimeMethodInfo
    ResolveFileInfoMethod "getName" o = FileInfoGetNameMethodInfo
    ResolveFileInfoMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolveFileInfoMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolveFileInfoMethod "getSize" o = FileInfoGetSizeMethodInfo
    ResolveFileInfoMethod "getSortOrder" o = FileInfoGetSortOrderMethodInfo
    ResolveFileInfoMethod "getSymbolicIcon" o = FileInfoGetSymbolicIconMethodInfo
    ResolveFileInfoMethod "getSymlinkTarget" o = FileInfoGetSymlinkTargetMethodInfo
    ResolveFileInfoMethod "setAttribute" o = FileInfoSetAttributeMethodInfo
    ResolveFileInfoMethod "setAttributeBoolean" o = FileInfoSetAttributeBooleanMethodInfo
    ResolveFileInfoMethod "setAttributeByteString" o = FileInfoSetAttributeByteStringMethodInfo
    ResolveFileInfoMethod "setAttributeInt32" o = FileInfoSetAttributeInt32MethodInfo
    ResolveFileInfoMethod "setAttributeInt64" o = FileInfoSetAttributeInt64MethodInfo
    ResolveFileInfoMethod "setAttributeMask" o = FileInfoSetAttributeMaskMethodInfo
    ResolveFileInfoMethod "setAttributeObject" o = FileInfoSetAttributeObjectMethodInfo
    ResolveFileInfoMethod "setAttributeStatus" o = FileInfoSetAttributeStatusMethodInfo
    ResolveFileInfoMethod "setAttributeString" o = FileInfoSetAttributeStringMethodInfo
    ResolveFileInfoMethod "setAttributeStringv" o = FileInfoSetAttributeStringvMethodInfo
    ResolveFileInfoMethod "setAttributeUint32" o = FileInfoSetAttributeUint32MethodInfo
    ResolveFileInfoMethod "setAttributeUint64" o = FileInfoSetAttributeUint64MethodInfo
    ResolveFileInfoMethod "setContentType" o = FileInfoSetContentTypeMethodInfo
    ResolveFileInfoMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolveFileInfoMethod "setDataFull" o = GObject.Object.ObjectSetDataFullMethodInfo
    ResolveFileInfoMethod "setDisplayName" o = FileInfoSetDisplayNameMethodInfo
    ResolveFileInfoMethod "setEditName" o = FileInfoSetEditNameMethodInfo
    ResolveFileInfoMethod "setFileType" o = FileInfoSetFileTypeMethodInfo
    ResolveFileInfoMethod "setIcon" o = FileInfoSetIconMethodInfo
    ResolveFileInfoMethod "setIsHidden" o = FileInfoSetIsHiddenMethodInfo
    ResolveFileInfoMethod "setIsSymlink" o = FileInfoSetIsSymlinkMethodInfo
    ResolveFileInfoMethod "setModificationTime" o = FileInfoSetModificationTimeMethodInfo
    ResolveFileInfoMethod "setName" o = FileInfoSetNameMethodInfo
    ResolveFileInfoMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveFileInfoMethod "setSize" o = FileInfoSetSizeMethodInfo
    ResolveFileInfoMethod "setSortOrder" o = FileInfoSetSortOrderMethodInfo
    ResolveFileInfoMethod "setSymbolicIcon" o = FileInfoSetSymbolicIconMethodInfo
    ResolveFileInfoMethod "setSymlinkTarget" o = FileInfoSetSymlinkTargetMethodInfo
    ResolveFileInfoMethod l o = O.MethodResolutionFailed l o

instance (info ~ ResolveFileInfoMethod t FileInfo, O.MethodInfo info FileInfo p) => OL.IsLabel t (FileInfo -> 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

#if ENABLE_OVERLOADING
instance O.HasAttributeList FileInfo
type instance O.AttributeList FileInfo = FileInfoAttributeList
type FileInfoAttributeList = ('[ ] :: [(Symbol, *)])
#endif

#if ENABLE_OVERLOADING
#endif

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

#endif

-- method FileInfo::new
-- method type : Constructor
-- Args : []
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Gio", name = "FileInfo"}))
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_new" g_file_info_new ::
    IO (Ptr FileInfo)

{- |
Creates a new file info structure.
-}
fileInfoNew ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    m FileInfo
    {- ^ __Returns:__ a 'GI.Gio.Objects.FileInfo.FileInfo'. -}
fileInfoNew  = liftIO $ do
    result <- g_file_info_new
    checkUnexpectedReturnNULL "fileInfoNew" result
    result' <- (wrapObject FileInfo) result
    return result'

#if ENABLE_OVERLOADING
#endif

-- method FileInfo::clear_status
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "info", argType = TInterface (Name {namespace = "Gio", name = "FileInfo"}), direction = DirectionIn, mayBeNull = False, 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_file_info_clear_status" g_file_info_clear_status ::
    Ptr FileInfo ->                         -- info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    IO ()

{- |
Clears the status information from /@info@/.
-}
fileInfoClearStatus ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a) =>
    a
    {- ^ /@info@/: a 'GI.Gio.Objects.FileInfo.FileInfo'. -}
    -> m ()
fileInfoClearStatus info = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    g_file_info_clear_status info'
    touchManagedPtr info
    return ()

#if ENABLE_OVERLOADING
data FileInfoClearStatusMethodInfo
instance (signature ~ (m ()), MonadIO m, IsFileInfo a) => O.MethodInfo FileInfoClearStatusMethodInfo a signature where
    overloadedMethod _ = fileInfoClearStatus

#endif

-- method FileInfo::copy_into
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "src_info", argType = TInterface (Name {namespace = "Gio", name = "FileInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "source to copy attributes from.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "dest_info", argType = TInterface (Name {namespace = "Gio", name = "FileInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "destination to copy attributes to.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_copy_into" g_file_info_copy_into ::
    Ptr FileInfo ->                         -- src_info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    Ptr FileInfo ->                         -- dest_info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    IO ()

{- |
First clears all of the [GFileAttribute][gio-GFileAttribute] of /@destInfo@/,
and then copies all of the file attributes from /@srcInfo@/ to /@destInfo@/.
-}
fileInfoCopyInto ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a, IsFileInfo b) =>
    a
    {- ^ /@srcInfo@/: source to copy attributes from. -}
    -> b
    {- ^ /@destInfo@/: destination to copy attributes to. -}
    -> m ()
fileInfoCopyInto srcInfo destInfo = liftIO $ do
    srcInfo' <- unsafeManagedPtrCastPtr srcInfo
    destInfo' <- unsafeManagedPtrCastPtr destInfo
    g_file_info_copy_into srcInfo' destInfo'
    touchManagedPtr srcInfo
    touchManagedPtr destInfo
    return ()

#if ENABLE_OVERLOADING
data FileInfoCopyIntoMethodInfo
instance (signature ~ (b -> m ()), MonadIO m, IsFileInfo a, IsFileInfo b) => O.MethodInfo FileInfoCopyIntoMethodInfo a signature where
    overloadedMethod _ = fileInfoCopyInto

#endif

-- method FileInfo::dup
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "other", argType = TInterface (Name {namespace = "Gio", name = "FileInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GFileInfo.", 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_file_info_dup" g_file_info_dup ::
    Ptr FileInfo ->                         -- other : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    IO (Ptr FileInfo)

{- |
Duplicates a file info structure.
-}
fileInfoDup ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a) =>
    a
    {- ^ /@other@/: a 'GI.Gio.Objects.FileInfo.FileInfo'. -}
    -> m FileInfo
    {- ^ __Returns:__ a duplicate 'GI.Gio.Objects.FileInfo.FileInfo' of /@other@/. -}
fileInfoDup other = liftIO $ do
    other' <- unsafeManagedPtrCastPtr other
    result <- g_file_info_dup other'
    checkUnexpectedReturnNULL "fileInfoDup" result
    result' <- (wrapObject FileInfo) result
    touchManagedPtr other
    return result'

#if ENABLE_OVERLOADING
data FileInfoDupMethodInfo
instance (signature ~ (m FileInfo), MonadIO m, IsFileInfo a) => O.MethodInfo FileInfoDupMethodInfo a signature where
    overloadedMethod _ = fileInfoDup

#endif

-- method FileInfo::get_attribute_as_string
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "info", argType = TInterface (Name {namespace = "Gio", name = "FileInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GFileInfo.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a file attribute key.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TUTF8)
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_get_attribute_as_string" g_file_info_get_attribute_as_string ::
    Ptr FileInfo ->                         -- info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    CString ->                              -- attribute : TBasicType TUTF8
    IO CString

{- |
Gets the value of a attribute, formated as a string.
This escapes things as needed to make the string valid
utf8.
-}
fileInfoGetAttributeAsString ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a) =>
    a
    {- ^ /@info@/: a 'GI.Gio.Objects.FileInfo.FileInfo'. -}
    -> T.Text
    {- ^ /@attribute@/: a file attribute key. -}
    -> m T.Text
    {- ^ __Returns:__ a UTF-8 string associated with the given /@attribute@/.
   When you\'re done with the string it must be freed with 'GI.GLib.Functions.free'. -}
fileInfoGetAttributeAsString info attribute = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    attribute' <- textToCString attribute
    result <- g_file_info_get_attribute_as_string info' attribute'
    checkUnexpectedReturnNULL "fileInfoGetAttributeAsString" result
    result' <- cstringToText result
    freeMem result
    touchManagedPtr info
    freeMem attribute'
    return result'

#if ENABLE_OVERLOADING
data FileInfoGetAttributeAsStringMethodInfo
instance (signature ~ (T.Text -> m T.Text), MonadIO m, IsFileInfo a) => O.MethodInfo FileInfoGetAttributeAsStringMethodInfo a signature where
    overloadedMethod _ = fileInfoGetAttributeAsString

#endif

-- method FileInfo::get_attribute_boolean
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "info", argType = TInterface (Name {namespace = "Gio", name = "FileInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GFileInfo.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a file attribute key.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_get_attribute_boolean" g_file_info_get_attribute_boolean ::
    Ptr FileInfo ->                         -- info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    CString ->                              -- attribute : TBasicType TUTF8
    IO CInt

{- |
Gets the value of a boolean attribute. If the attribute does not
contain a boolean value, 'False' will be returned.
-}
fileInfoGetAttributeBoolean ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a) =>
    a
    {- ^ /@info@/: a 'GI.Gio.Objects.FileInfo.FileInfo'. -}
    -> T.Text
    {- ^ /@attribute@/: a file attribute key. -}
    -> m Bool
    {- ^ __Returns:__ the boolean value contained within the attribute. -}
fileInfoGetAttributeBoolean info attribute = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    attribute' <- textToCString attribute
    result <- g_file_info_get_attribute_boolean info' attribute'
    let result' = (/= 0) result
    touchManagedPtr info
    freeMem attribute'
    return result'

#if ENABLE_OVERLOADING
data FileInfoGetAttributeBooleanMethodInfo
instance (signature ~ (T.Text -> m Bool), MonadIO m, IsFileInfo a) => O.MethodInfo FileInfoGetAttributeBooleanMethodInfo a signature where
    overloadedMethod _ = fileInfoGetAttributeBoolean

#endif

-- method FileInfo::get_attribute_byte_string
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "info", argType = TInterface (Name {namespace = "Gio", name = "FileInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GFileInfo.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a file attribute key.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TUTF8)
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_get_attribute_byte_string" g_file_info_get_attribute_byte_string ::
    Ptr FileInfo ->                         -- info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    CString ->                              -- attribute : TBasicType TUTF8
    IO CString

{- |
Gets the value of a byte string attribute. If the attribute does
not contain a byte string, 'Nothing' will be returned.
-}
fileInfoGetAttributeByteString ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a) =>
    a
    {- ^ /@info@/: a 'GI.Gio.Objects.FileInfo.FileInfo'. -}
    -> T.Text
    {- ^ /@attribute@/: a file attribute key. -}
    -> m T.Text
    {- ^ __Returns:__ the contents of the /@attribute@/ value as a byte string, or
'Nothing' otherwise. -}
fileInfoGetAttributeByteString info attribute = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    attribute' <- textToCString attribute
    result <- g_file_info_get_attribute_byte_string info' attribute'
    checkUnexpectedReturnNULL "fileInfoGetAttributeByteString" result
    result' <- cstringToText result
    touchManagedPtr info
    freeMem attribute'
    return result'

#if ENABLE_OVERLOADING
data FileInfoGetAttributeByteStringMethodInfo
instance (signature ~ (T.Text -> m T.Text), MonadIO m, IsFileInfo a) => O.MethodInfo FileInfoGetAttributeByteStringMethodInfo a signature where
    overloadedMethod _ = fileInfoGetAttributeByteString

#endif

-- method FileInfo::get_attribute_data
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "info", argType = TInterface (Name {namespace = "Gio", name = "FileInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GFileInfo", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a file attribute key", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "type", argType = TInterface (Name {namespace = "Gio", name = "FileAttributeType"}), direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "return location for the attribute type, or %NULL", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "value_pp", argType = TBasicType TPtr, direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "return location for the\n   attribute value, or %NULL; the attribute value will not be %NULL", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "status", argType = TInterface (Name {namespace = "Gio", name = "FileAttributeStatus"}), direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "return location for the attribute status, or %NULL", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_get_attribute_data" g_file_info_get_attribute_data ::
    Ptr FileInfo ->                         -- info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    CString ->                              -- attribute : TBasicType TUTF8
    Ptr CUInt ->                            -- type : TInterface (Name {namespace = "Gio", name = "FileAttributeType"})
    Ptr (Ptr ()) ->                         -- value_pp : TBasicType TPtr
    Ptr CUInt ->                            -- status : TInterface (Name {namespace = "Gio", name = "FileAttributeStatus"})
    IO CInt

{- |
Gets the attribute type, value and status for an attribute key.
-}
fileInfoGetAttributeData ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a) =>
    a
    {- ^ /@info@/: a 'GI.Gio.Objects.FileInfo.FileInfo' -}
    -> T.Text
    {- ^ /@attribute@/: a file attribute key -}
    -> m ((Bool, Gio.Enums.FileAttributeType, Ptr (), Gio.Enums.FileAttributeStatus))
    {- ^ __Returns:__ 'True' if /@info@/ has an attribute named /@attribute@/,
     'False' otherwise. -}
fileInfoGetAttributeData info attribute = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    attribute' <- textToCString attribute
    type_ <- allocMem :: IO (Ptr CUInt)
    valuePp <- allocMem :: IO (Ptr (Ptr ()))
    status <- allocMem :: IO (Ptr CUInt)
    result <- g_file_info_get_attribute_data info' attribute' type_ valuePp status
    let result' = (/= 0) result
    type_' <- peek type_
    let type_'' = (toEnum . fromIntegral) type_'
    valuePp' <- peek valuePp
    status' <- peek status
    let status'' = (toEnum . fromIntegral) status'
    touchManagedPtr info
    freeMem attribute'
    freeMem type_
    freeMem valuePp
    freeMem status
    return (result', type_'', valuePp', status'')

#if ENABLE_OVERLOADING
data FileInfoGetAttributeDataMethodInfo
instance (signature ~ (T.Text -> m ((Bool, Gio.Enums.FileAttributeType, Ptr (), Gio.Enums.FileAttributeStatus))), MonadIO m, IsFileInfo a) => O.MethodInfo FileInfoGetAttributeDataMethodInfo a signature where
    overloadedMethod _ = fileInfoGetAttributeData

#endif

-- method FileInfo::get_attribute_int32
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "info", argType = TInterface (Name {namespace = "Gio", name = "FileInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GFileInfo.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a file attribute key.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TInt32)
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_get_attribute_int32" g_file_info_get_attribute_int32 ::
    Ptr FileInfo ->                         -- info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    CString ->                              -- attribute : TBasicType TUTF8
    IO Int32

{- |
Gets a signed 32-bit integer contained within the attribute. If the
attribute does not contain a signed 32-bit integer, or is invalid,
0 will be returned.
-}
fileInfoGetAttributeInt32 ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a) =>
    a
    {- ^ /@info@/: a 'GI.Gio.Objects.FileInfo.FileInfo'. -}
    -> T.Text
    {- ^ /@attribute@/: a file attribute key. -}
    -> m Int32
    {- ^ __Returns:__ a signed 32-bit integer from the attribute. -}
fileInfoGetAttributeInt32 info attribute = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    attribute' <- textToCString attribute
    result <- g_file_info_get_attribute_int32 info' attribute'
    touchManagedPtr info
    freeMem attribute'
    return result

#if ENABLE_OVERLOADING
data FileInfoGetAttributeInt32MethodInfo
instance (signature ~ (T.Text -> m Int32), MonadIO m, IsFileInfo a) => O.MethodInfo FileInfoGetAttributeInt32MethodInfo a signature where
    overloadedMethod _ = fileInfoGetAttributeInt32

#endif

-- method FileInfo::get_attribute_int64
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "info", argType = TInterface (Name {namespace = "Gio", name = "FileInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GFileInfo.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a file attribute key.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TInt64)
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_get_attribute_int64" g_file_info_get_attribute_int64 ::
    Ptr FileInfo ->                         -- info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    CString ->                              -- attribute : TBasicType TUTF8
    IO Int64

{- |
Gets a signed 64-bit integer contained within the attribute. If the
attribute does not contain an signed 64-bit integer, or is invalid,
0 will be returned.
-}
fileInfoGetAttributeInt64 ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a) =>
    a
    {- ^ /@info@/: a 'GI.Gio.Objects.FileInfo.FileInfo'. -}
    -> T.Text
    {- ^ /@attribute@/: a file attribute key. -}
    -> m Int64
    {- ^ __Returns:__ a signed 64-bit integer from the attribute. -}
fileInfoGetAttributeInt64 info attribute = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    attribute' <- textToCString attribute
    result <- g_file_info_get_attribute_int64 info' attribute'
    touchManagedPtr info
    freeMem attribute'
    return result

#if ENABLE_OVERLOADING
data FileInfoGetAttributeInt64MethodInfo
instance (signature ~ (T.Text -> m Int64), MonadIO m, IsFileInfo a) => O.MethodInfo FileInfoGetAttributeInt64MethodInfo a signature where
    overloadedMethod _ = fileInfoGetAttributeInt64

#endif

-- method FileInfo::get_attribute_object
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "info", argType = TInterface (Name {namespace = "Gio", name = "FileInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GFileInfo.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a file attribute key.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "GObject", name = "Object"}))
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_get_attribute_object" g_file_info_get_attribute_object ::
    Ptr FileInfo ->                         -- info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    CString ->                              -- attribute : TBasicType TUTF8
    IO (Ptr GObject.Object.Object)

{- |
Gets the value of a 'GI.GObject.Objects.Object.Object' attribute. If the attribute does
not contain a 'GI.GObject.Objects.Object.Object', 'Nothing' will be returned.
-}
fileInfoGetAttributeObject ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a) =>
    a
    {- ^ /@info@/: a 'GI.Gio.Objects.FileInfo.FileInfo'. -}
    -> T.Text
    {- ^ /@attribute@/: a file attribute key. -}
    -> m GObject.Object.Object
    {- ^ __Returns:__ a 'GI.GObject.Objects.Object.Object' associated with the given /@attribute@/, or
'Nothing' otherwise. -}
fileInfoGetAttributeObject info attribute = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    attribute' <- textToCString attribute
    result <- g_file_info_get_attribute_object info' attribute'
    checkUnexpectedReturnNULL "fileInfoGetAttributeObject" result
    result' <- (newObject GObject.Object.Object) result
    touchManagedPtr info
    freeMem attribute'
    return result'

#if ENABLE_OVERLOADING
data FileInfoGetAttributeObjectMethodInfo
instance (signature ~ (T.Text -> m GObject.Object.Object), MonadIO m, IsFileInfo a) => O.MethodInfo FileInfoGetAttributeObjectMethodInfo a signature where
    overloadedMethod _ = fileInfoGetAttributeObject

#endif

-- method FileInfo::get_attribute_status
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "info", argType = TInterface (Name {namespace = "Gio", name = "FileInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GFileInfo", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a file attribute key", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Gio", name = "FileAttributeStatus"}))
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_get_attribute_status" g_file_info_get_attribute_status ::
    Ptr FileInfo ->                         -- info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    CString ->                              -- attribute : TBasicType TUTF8
    IO CUInt

{- |
Gets the attribute status for an attribute key.
-}
fileInfoGetAttributeStatus ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a) =>
    a
    {- ^ /@info@/: a 'GI.Gio.Objects.FileInfo.FileInfo' -}
    -> T.Text
    {- ^ /@attribute@/: a file attribute key -}
    -> m Gio.Enums.FileAttributeStatus
    {- ^ __Returns:__ a 'GI.Gio.Enums.FileAttributeStatus' for the given /@attribute@/, or
   'GI.Gio.Enums.FileAttributeStatusUnset' if the key is invalid. -}
fileInfoGetAttributeStatus info attribute = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    attribute' <- textToCString attribute
    result <- g_file_info_get_attribute_status info' attribute'
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr info
    freeMem attribute'
    return result'

#if ENABLE_OVERLOADING
data FileInfoGetAttributeStatusMethodInfo
instance (signature ~ (T.Text -> m Gio.Enums.FileAttributeStatus), MonadIO m, IsFileInfo a) => O.MethodInfo FileInfoGetAttributeStatusMethodInfo a signature where
    overloadedMethod _ = fileInfoGetAttributeStatus

#endif

-- method FileInfo::get_attribute_string
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "info", argType = TInterface (Name {namespace = "Gio", name = "FileInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GFileInfo.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a file attribute key.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TUTF8)
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_get_attribute_string" g_file_info_get_attribute_string ::
    Ptr FileInfo ->                         -- info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    CString ->                              -- attribute : TBasicType TUTF8
    IO CString

{- |
Gets the value of a string attribute. If the attribute does
not contain a string, 'Nothing' will be returned.
-}
fileInfoGetAttributeString ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a) =>
    a
    {- ^ /@info@/: a 'GI.Gio.Objects.FileInfo.FileInfo'. -}
    -> T.Text
    {- ^ /@attribute@/: a file attribute key. -}
    -> m T.Text
    {- ^ __Returns:__ the contents of the /@attribute@/ value as a UTF-8 string, or
'Nothing' otherwise. -}
fileInfoGetAttributeString info attribute = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    attribute' <- textToCString attribute
    result <- g_file_info_get_attribute_string info' attribute'
    checkUnexpectedReturnNULL "fileInfoGetAttributeString" result
    result' <- cstringToText result
    touchManagedPtr info
    freeMem attribute'
    return result'

#if ENABLE_OVERLOADING
data FileInfoGetAttributeStringMethodInfo
instance (signature ~ (T.Text -> m T.Text), MonadIO m, IsFileInfo a) => O.MethodInfo FileInfoGetAttributeStringMethodInfo a signature where
    overloadedMethod _ = fileInfoGetAttributeString

#endif

-- method FileInfo::get_attribute_stringv
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "info", argType = TInterface (Name {namespace = "Gio", name = "FileInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GFileInfo.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a file attribute key.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TCArray True (-1) (-1) (TBasicType TUTF8))
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_get_attribute_stringv" g_file_info_get_attribute_stringv ::
    Ptr FileInfo ->                         -- info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    CString ->                              -- attribute : TBasicType TUTF8
    IO (Ptr CString)

{- |
Gets the value of a stringv attribute. If the attribute does
not contain a stringv, 'Nothing' will be returned.

/Since: 2.22/
-}
fileInfoGetAttributeStringv ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a) =>
    a
    {- ^ /@info@/: a 'GI.Gio.Objects.FileInfo.FileInfo'. -}
    -> T.Text
    {- ^ /@attribute@/: a file attribute key. -}
    -> m [T.Text]
    {- ^ __Returns:__ the contents of the /@attribute@/ value as a stringv, or
'Nothing' otherwise. Do not free. These returned strings are UTF-8. -}
fileInfoGetAttributeStringv info attribute = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    attribute' <- textToCString attribute
    result <- g_file_info_get_attribute_stringv info' attribute'
    checkUnexpectedReturnNULL "fileInfoGetAttributeStringv" result
    result' <- unpackZeroTerminatedUTF8CArray result
    touchManagedPtr info
    freeMem attribute'
    return result'

#if ENABLE_OVERLOADING
data FileInfoGetAttributeStringvMethodInfo
instance (signature ~ (T.Text -> m [T.Text]), MonadIO m, IsFileInfo a) => O.MethodInfo FileInfoGetAttributeStringvMethodInfo a signature where
    overloadedMethod _ = fileInfoGetAttributeStringv

#endif

-- method FileInfo::get_attribute_type
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "info", argType = TInterface (Name {namespace = "Gio", name = "FileInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GFileInfo.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a file attribute key.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Gio", name = "FileAttributeType"}))
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_get_attribute_type" g_file_info_get_attribute_type ::
    Ptr FileInfo ->                         -- info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    CString ->                              -- attribute : TBasicType TUTF8
    IO CUInt

{- |
Gets the attribute type for an attribute key.
-}
fileInfoGetAttributeType ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a) =>
    a
    {- ^ /@info@/: a 'GI.Gio.Objects.FileInfo.FileInfo'. -}
    -> T.Text
    {- ^ /@attribute@/: a file attribute key. -}
    -> m Gio.Enums.FileAttributeType
    {- ^ __Returns:__ a 'GI.Gio.Enums.FileAttributeType' for the given /@attribute@/, or
'GI.Gio.Enums.FileAttributeTypeInvalid' if the key is not set. -}
fileInfoGetAttributeType info attribute = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    attribute' <- textToCString attribute
    result <- g_file_info_get_attribute_type info' attribute'
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr info
    freeMem attribute'
    return result'

#if ENABLE_OVERLOADING
data FileInfoGetAttributeTypeMethodInfo
instance (signature ~ (T.Text -> m Gio.Enums.FileAttributeType), MonadIO m, IsFileInfo a) => O.MethodInfo FileInfoGetAttributeTypeMethodInfo a signature where
    overloadedMethod _ = fileInfoGetAttributeType

#endif

-- method FileInfo::get_attribute_uint32
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "info", argType = TInterface (Name {namespace = "Gio", name = "FileInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GFileInfo.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a file attribute key.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TUInt32)
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_get_attribute_uint32" g_file_info_get_attribute_uint32 ::
    Ptr FileInfo ->                         -- info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    CString ->                              -- attribute : TBasicType TUTF8
    IO Word32

{- |
Gets an unsigned 32-bit integer contained within the attribute. If the
attribute does not contain an unsigned 32-bit integer, or is invalid,
0 will be returned.
-}
fileInfoGetAttributeUint32 ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a) =>
    a
    {- ^ /@info@/: a 'GI.Gio.Objects.FileInfo.FileInfo'. -}
    -> T.Text
    {- ^ /@attribute@/: a file attribute key. -}
    -> m Word32
    {- ^ __Returns:__ an unsigned 32-bit integer from the attribute. -}
fileInfoGetAttributeUint32 info attribute = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    attribute' <- textToCString attribute
    result <- g_file_info_get_attribute_uint32 info' attribute'
    touchManagedPtr info
    freeMem attribute'
    return result

#if ENABLE_OVERLOADING
data FileInfoGetAttributeUint32MethodInfo
instance (signature ~ (T.Text -> m Word32), MonadIO m, IsFileInfo a) => O.MethodInfo FileInfoGetAttributeUint32MethodInfo a signature where
    overloadedMethod _ = fileInfoGetAttributeUint32

#endif

-- method FileInfo::get_attribute_uint64
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "info", argType = TInterface (Name {namespace = "Gio", name = "FileInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GFileInfo.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a file attribute key.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TUInt64)
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_get_attribute_uint64" g_file_info_get_attribute_uint64 ::
    Ptr FileInfo ->                         -- info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    CString ->                              -- attribute : TBasicType TUTF8
    IO Word64

{- |
Gets a unsigned 64-bit integer contained within the attribute. If the
attribute does not contain an unsigned 64-bit integer, or is invalid,
0 will be returned.
-}
fileInfoGetAttributeUint64 ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a) =>
    a
    {- ^ /@info@/: a 'GI.Gio.Objects.FileInfo.FileInfo'. -}
    -> T.Text
    {- ^ /@attribute@/: a file attribute key. -}
    -> m Word64
    {- ^ __Returns:__ a unsigned 64-bit integer from the attribute. -}
fileInfoGetAttributeUint64 info attribute = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    attribute' <- textToCString attribute
    result <- g_file_info_get_attribute_uint64 info' attribute'
    touchManagedPtr info
    freeMem attribute'
    return result

#if ENABLE_OVERLOADING
data FileInfoGetAttributeUint64MethodInfo
instance (signature ~ (T.Text -> m Word64), MonadIO m, IsFileInfo a) => O.MethodInfo FileInfoGetAttributeUint64MethodInfo a signature where
    overloadedMethod _ = fileInfoGetAttributeUint64

#endif

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

foreign import ccall "g_file_info_get_content_type" g_file_info_get_content_type ::
    Ptr FileInfo ->                         -- info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    IO CString

{- |
Gets the file\'s content type.
-}
fileInfoGetContentType ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a) =>
    a
    {- ^ /@info@/: a 'GI.Gio.Objects.FileInfo.FileInfo'. -}
    -> m T.Text
    {- ^ __Returns:__ a string containing the file\'s content type. -}
fileInfoGetContentType info = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    result <- g_file_info_get_content_type info'
    checkUnexpectedReturnNULL "fileInfoGetContentType" result
    result' <- cstringToText result
    touchManagedPtr info
    return result'

#if ENABLE_OVERLOADING
data FileInfoGetContentTypeMethodInfo
instance (signature ~ (m T.Text), MonadIO m, IsFileInfo a) => O.MethodInfo FileInfoGetContentTypeMethodInfo a signature where
    overloadedMethod _ = fileInfoGetContentType

#endif

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

foreign import ccall "g_file_info_get_deletion_date" g_file_info_get_deletion_date ::
    Ptr FileInfo ->                         -- info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    IO (Ptr GLib.DateTime.DateTime)

{- |
Returns the 'GI.GLib.Structs.DateTime.DateTime' representing the deletion date of the file, as
available in G_FILE_ATTRIBUTE_TRASH_DELETION_DATE. If the
G_FILE_ATTRIBUTE_TRASH_DELETION_DATE attribute is unset, 'Nothing' is returned.

/Since: 2.36/
-}
fileInfoGetDeletionDate ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a) =>
    a
    {- ^ /@info@/: a 'GI.Gio.Objects.FileInfo.FileInfo'. -}
    -> m GLib.DateTime.DateTime
    {- ^ __Returns:__ a 'GI.GLib.Structs.DateTime.DateTime', or 'Nothing'. -}
fileInfoGetDeletionDate info = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    result <- g_file_info_get_deletion_date info'
    checkUnexpectedReturnNULL "fileInfoGetDeletionDate" result
    result' <- (wrapBoxed GLib.DateTime.DateTime) result
    touchManagedPtr info
    return result'

#if ENABLE_OVERLOADING
data FileInfoGetDeletionDateMethodInfo
instance (signature ~ (m GLib.DateTime.DateTime), MonadIO m, IsFileInfo a) => O.MethodInfo FileInfoGetDeletionDateMethodInfo a signature where
    overloadedMethod _ = fileInfoGetDeletionDate

#endif

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

foreign import ccall "g_file_info_get_display_name" g_file_info_get_display_name ::
    Ptr FileInfo ->                         -- info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    IO CString

{- |
Gets a display name for a file.
-}
fileInfoGetDisplayName ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a) =>
    a
    {- ^ /@info@/: a 'GI.Gio.Objects.FileInfo.FileInfo'. -}
    -> m T.Text
    {- ^ __Returns:__ a string containing the display name. -}
fileInfoGetDisplayName info = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    result <- g_file_info_get_display_name info'
    checkUnexpectedReturnNULL "fileInfoGetDisplayName" result
    result' <- cstringToText result
    touchManagedPtr info
    return result'

#if ENABLE_OVERLOADING
data FileInfoGetDisplayNameMethodInfo
instance (signature ~ (m T.Text), MonadIO m, IsFileInfo a) => O.MethodInfo FileInfoGetDisplayNameMethodInfo a signature where
    overloadedMethod _ = fileInfoGetDisplayName

#endif

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

foreign import ccall "g_file_info_get_edit_name" g_file_info_get_edit_name ::
    Ptr FileInfo ->                         -- info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    IO CString

{- |
Gets the edit name for a file.
-}
fileInfoGetEditName ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a) =>
    a
    {- ^ /@info@/: a 'GI.Gio.Objects.FileInfo.FileInfo'. -}
    -> m T.Text
    {- ^ __Returns:__ a string containing the edit name. -}
fileInfoGetEditName info = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    result <- g_file_info_get_edit_name info'
    checkUnexpectedReturnNULL "fileInfoGetEditName" result
    result' <- cstringToText result
    touchManagedPtr info
    return result'

#if ENABLE_OVERLOADING
data FileInfoGetEditNameMethodInfo
instance (signature ~ (m T.Text), MonadIO m, IsFileInfo a) => O.MethodInfo FileInfoGetEditNameMethodInfo a signature where
    overloadedMethod _ = fileInfoGetEditName

#endif

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

foreign import ccall "g_file_info_get_etag" g_file_info_get_etag ::
    Ptr FileInfo ->                         -- info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    IO CString

{- |
Gets the [entity tag][gfile-etag] for a given
'GI.Gio.Objects.FileInfo.FileInfo'. See 'GI.Gio.Constants.FILE_ATTRIBUTE_ETAG_VALUE'.
-}
fileInfoGetEtag ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a) =>
    a
    {- ^ /@info@/: a 'GI.Gio.Objects.FileInfo.FileInfo'. -}
    -> m T.Text
    {- ^ __Returns:__ a string containing the value of the \"etag:value\" attribute. -}
fileInfoGetEtag info = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    result <- g_file_info_get_etag info'
    checkUnexpectedReturnNULL "fileInfoGetEtag" result
    result' <- cstringToText result
    touchManagedPtr info
    return result'

#if ENABLE_OVERLOADING
data FileInfoGetEtagMethodInfo
instance (signature ~ (m T.Text), MonadIO m, IsFileInfo a) => O.MethodInfo FileInfoGetEtagMethodInfo a signature where
    overloadedMethod _ = fileInfoGetEtag

#endif

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

foreign import ccall "g_file_info_get_file_type" g_file_info_get_file_type ::
    Ptr FileInfo ->                         -- info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    IO CUInt

{- |
Gets a file\'s type (whether it is a regular file, symlink, etc).
This is different from the file\'s content type, see 'GI.Gio.Objects.FileInfo.fileInfoGetContentType'.
-}
fileInfoGetFileType ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a) =>
    a
    {- ^ /@info@/: a 'GI.Gio.Objects.FileInfo.FileInfo'. -}
    -> m Gio.Enums.FileType
    {- ^ __Returns:__ a 'GI.Gio.Enums.FileType' for the given file. -}
fileInfoGetFileType info = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    result <- g_file_info_get_file_type info'
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr info
    return result'

#if ENABLE_OVERLOADING
data FileInfoGetFileTypeMethodInfo
instance (signature ~ (m Gio.Enums.FileType), MonadIO m, IsFileInfo a) => O.MethodInfo FileInfoGetFileTypeMethodInfo a signature where
    overloadedMethod _ = fileInfoGetFileType

#endif

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

foreign import ccall "g_file_info_get_icon" g_file_info_get_icon ::
    Ptr FileInfo ->                         -- info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    IO (Ptr Gio.Icon.Icon)

{- |
Gets the icon for a file.
-}
fileInfoGetIcon ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a) =>
    a
    {- ^ /@info@/: a 'GI.Gio.Objects.FileInfo.FileInfo'. -}
    -> m Gio.Icon.Icon
    {- ^ __Returns:__ 'GI.Gio.Interfaces.Icon.Icon' for the given /@info@/. -}
fileInfoGetIcon info = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    result <- g_file_info_get_icon info'
    checkUnexpectedReturnNULL "fileInfoGetIcon" result
    result' <- (newObject Gio.Icon.Icon) result
    touchManagedPtr info
    return result'

#if ENABLE_OVERLOADING
data FileInfoGetIconMethodInfo
instance (signature ~ (m Gio.Icon.Icon), MonadIO m, IsFileInfo a) => O.MethodInfo FileInfoGetIconMethodInfo a signature where
    overloadedMethod _ = fileInfoGetIcon

#endif

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

foreign import ccall "g_file_info_get_is_backup" g_file_info_get_is_backup ::
    Ptr FileInfo ->                         -- info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    IO CInt

{- |
Checks if a file is a backup file.
-}
fileInfoGetIsBackup ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a) =>
    a
    {- ^ /@info@/: a 'GI.Gio.Objects.FileInfo.FileInfo'. -}
    -> m Bool
    {- ^ __Returns:__ 'True' if file is a backup file, 'False' otherwise. -}
fileInfoGetIsBackup info = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    result <- g_file_info_get_is_backup info'
    let result' = (/= 0) result
    touchManagedPtr info
    return result'

#if ENABLE_OVERLOADING
data FileInfoGetIsBackupMethodInfo
instance (signature ~ (m Bool), MonadIO m, IsFileInfo a) => O.MethodInfo FileInfoGetIsBackupMethodInfo a signature where
    overloadedMethod _ = fileInfoGetIsBackup

#endif

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

foreign import ccall "g_file_info_get_is_hidden" g_file_info_get_is_hidden ::
    Ptr FileInfo ->                         -- info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    IO CInt

{- |
Checks if a file is hidden.
-}
fileInfoGetIsHidden ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a) =>
    a
    {- ^ /@info@/: a 'GI.Gio.Objects.FileInfo.FileInfo'. -}
    -> m Bool
    {- ^ __Returns:__ 'True' if the file is a hidden file, 'False' otherwise. -}
fileInfoGetIsHidden info = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    result <- g_file_info_get_is_hidden info'
    let result' = (/= 0) result
    touchManagedPtr info
    return result'

#if ENABLE_OVERLOADING
data FileInfoGetIsHiddenMethodInfo
instance (signature ~ (m Bool), MonadIO m, IsFileInfo a) => O.MethodInfo FileInfoGetIsHiddenMethodInfo a signature where
    overloadedMethod _ = fileInfoGetIsHidden

#endif

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

foreign import ccall "g_file_info_get_is_symlink" g_file_info_get_is_symlink ::
    Ptr FileInfo ->                         -- info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    IO CInt

{- |
Checks if a file is a symlink.
-}
fileInfoGetIsSymlink ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a) =>
    a
    {- ^ /@info@/: a 'GI.Gio.Objects.FileInfo.FileInfo'. -}
    -> m Bool
    {- ^ __Returns:__ 'True' if the given /@info@/ is a symlink. -}
fileInfoGetIsSymlink info = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    result <- g_file_info_get_is_symlink info'
    let result' = (/= 0) result
    touchManagedPtr info
    return result'

#if ENABLE_OVERLOADING
data FileInfoGetIsSymlinkMethodInfo
instance (signature ~ (m Bool), MonadIO m, IsFileInfo a) => O.MethodInfo FileInfoGetIsSymlinkMethodInfo a signature where
    overloadedMethod _ = fileInfoGetIsSymlink

#endif

-- method FileInfo::get_modification_time
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "info", argType = TInterface (Name {namespace = "Gio", name = "FileInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GFileInfo.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "result", argType = TInterface (Name {namespace = "GLib", name = "TimeVal"}), direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GTimeVal.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_get_modification_time" g_file_info_get_modification_time ::
    Ptr FileInfo ->                         -- info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    Ptr GLib.TimeVal.TimeVal ->             -- result : TInterface (Name {namespace = "GLib", name = "TimeVal"})
    IO ()

{- |
Gets the modification time of the current /@info@/ and sets it
in /@result@/.
-}
fileInfoGetModificationTime ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a) =>
    a
    {- ^ /@info@/: a 'GI.Gio.Objects.FileInfo.FileInfo'. -}
    -> m (GLib.TimeVal.TimeVal)
fileInfoGetModificationTime info = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    result_ <- callocBytes 16 :: IO (Ptr GLib.TimeVal.TimeVal)
    g_file_info_get_modification_time info' result_
    result_' <- (wrapPtr GLib.TimeVal.TimeVal) result_
    touchManagedPtr info
    return result_'

#if ENABLE_OVERLOADING
data FileInfoGetModificationTimeMethodInfo
instance (signature ~ (m (GLib.TimeVal.TimeVal)), MonadIO m, IsFileInfo a) => O.MethodInfo FileInfoGetModificationTimeMethodInfo a signature where
    overloadedMethod _ = fileInfoGetModificationTime

#endif

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

foreign import ccall "g_file_info_get_name" g_file_info_get_name ::
    Ptr FileInfo ->                         -- info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    IO CString

{- |
Gets the name for a file.
-}
fileInfoGetName ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a) =>
    a
    {- ^ /@info@/: a 'GI.Gio.Objects.FileInfo.FileInfo'. -}
    -> m [Char]
    {- ^ __Returns:__ a string containing the file name. -}
fileInfoGetName info = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    result <- g_file_info_get_name info'
    checkUnexpectedReturnNULL "fileInfoGetName" result
    result' <- cstringToString result
    touchManagedPtr info
    return result'

#if ENABLE_OVERLOADING
data FileInfoGetNameMethodInfo
instance (signature ~ (m [Char]), MonadIO m, IsFileInfo a) => O.MethodInfo FileInfoGetNameMethodInfo a signature where
    overloadedMethod _ = fileInfoGetName

#endif

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

foreign import ccall "g_file_info_get_size" g_file_info_get_size ::
    Ptr FileInfo ->                         -- info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    IO Int64

{- |
Gets the file\'s size.
-}
fileInfoGetSize ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a) =>
    a
    {- ^ /@info@/: a 'GI.Gio.Objects.FileInfo.FileInfo'. -}
    -> m Int64
    {- ^ __Returns:__ a @/goffset/@ containing the file\'s size. -}
fileInfoGetSize info = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    result <- g_file_info_get_size info'
    touchManagedPtr info
    return result

#if ENABLE_OVERLOADING
data FileInfoGetSizeMethodInfo
instance (signature ~ (m Int64), MonadIO m, IsFileInfo a) => O.MethodInfo FileInfoGetSizeMethodInfo a signature where
    overloadedMethod _ = fileInfoGetSize

#endif

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

foreign import ccall "g_file_info_get_sort_order" g_file_info_get_sort_order ::
    Ptr FileInfo ->                         -- info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    IO Int32

{- |
Gets the value of the sort_order attribute from the 'GI.Gio.Objects.FileInfo.FileInfo'.
See 'GI.Gio.Constants.FILE_ATTRIBUTE_STANDARD_SORT_ORDER'.
-}
fileInfoGetSortOrder ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a) =>
    a
    {- ^ /@info@/: a 'GI.Gio.Objects.FileInfo.FileInfo'. -}
    -> m Int32
    {- ^ __Returns:__ a @/gint32/@ containing the value of the \"standard::sort_order\" attribute. -}
fileInfoGetSortOrder info = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    result <- g_file_info_get_sort_order info'
    touchManagedPtr info
    return result

#if ENABLE_OVERLOADING
data FileInfoGetSortOrderMethodInfo
instance (signature ~ (m Int32), MonadIO m, IsFileInfo a) => O.MethodInfo FileInfoGetSortOrderMethodInfo a signature where
    overloadedMethod _ = fileInfoGetSortOrder

#endif

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

foreign import ccall "g_file_info_get_symbolic_icon" g_file_info_get_symbolic_icon ::
    Ptr FileInfo ->                         -- info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    IO (Ptr Gio.Icon.Icon)

{- |
Gets the symbolic icon for a file.

/Since: 2.34/
-}
fileInfoGetSymbolicIcon ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a) =>
    a
    {- ^ /@info@/: a 'GI.Gio.Objects.FileInfo.FileInfo'. -}
    -> m Gio.Icon.Icon
    {- ^ __Returns:__ 'GI.Gio.Interfaces.Icon.Icon' for the given /@info@/. -}
fileInfoGetSymbolicIcon info = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    result <- g_file_info_get_symbolic_icon info'
    checkUnexpectedReturnNULL "fileInfoGetSymbolicIcon" result
    result' <- (newObject Gio.Icon.Icon) result
    touchManagedPtr info
    return result'

#if ENABLE_OVERLOADING
data FileInfoGetSymbolicIconMethodInfo
instance (signature ~ (m Gio.Icon.Icon), MonadIO m, IsFileInfo a) => O.MethodInfo FileInfoGetSymbolicIconMethodInfo a signature where
    overloadedMethod _ = fileInfoGetSymbolicIcon

#endif

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

foreign import ccall "g_file_info_get_symlink_target" g_file_info_get_symlink_target ::
    Ptr FileInfo ->                         -- info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    IO CString

{- |
Gets the symlink target for a given 'GI.Gio.Objects.FileInfo.FileInfo'.
-}
fileInfoGetSymlinkTarget ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a) =>
    a
    {- ^ /@info@/: a 'GI.Gio.Objects.FileInfo.FileInfo'. -}
    -> m T.Text
    {- ^ __Returns:__ a string containing the symlink target. -}
fileInfoGetSymlinkTarget info = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    result <- g_file_info_get_symlink_target info'
    checkUnexpectedReturnNULL "fileInfoGetSymlinkTarget" result
    result' <- cstringToText result
    touchManagedPtr info
    return result'

#if ENABLE_OVERLOADING
data FileInfoGetSymlinkTargetMethodInfo
instance (signature ~ (m T.Text), MonadIO m, IsFileInfo a) => O.MethodInfo FileInfoGetSymlinkTargetMethodInfo a signature where
    overloadedMethod _ = fileInfoGetSymlinkTarget

#endif

-- method FileInfo::has_attribute
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "info", argType = TInterface (Name {namespace = "Gio", name = "FileInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GFileInfo.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a file attribute key.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_has_attribute" g_file_info_has_attribute ::
    Ptr FileInfo ->                         -- info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    CString ->                              -- attribute : TBasicType TUTF8
    IO CInt

{- |
Checks if a file info structure has an attribute named /@attribute@/.
-}
fileInfoHasAttribute ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a) =>
    a
    {- ^ /@info@/: a 'GI.Gio.Objects.FileInfo.FileInfo'. -}
    -> T.Text
    {- ^ /@attribute@/: a file attribute key. -}
    -> m Bool
    {- ^ __Returns:__ 'True' if /@ginfo@/ has an attribute named /@attribute@/,
    'False' otherwise. -}
fileInfoHasAttribute info attribute = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    attribute' <- textToCString attribute
    result <- g_file_info_has_attribute info' attribute'
    let result' = (/= 0) result
    touchManagedPtr info
    freeMem attribute'
    return result'

#if ENABLE_OVERLOADING
data FileInfoHasAttributeMethodInfo
instance (signature ~ (T.Text -> m Bool), MonadIO m, IsFileInfo a) => O.MethodInfo FileInfoHasAttributeMethodInfo a signature where
    overloadedMethod _ = fileInfoHasAttribute

#endif

-- method FileInfo::has_namespace
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "info", argType = TInterface (Name {namespace = "Gio", name = "FileInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GFileInfo.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "name_space", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a file attribute namespace.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_has_namespace" g_file_info_has_namespace ::
    Ptr FileInfo ->                         -- info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    CString ->                              -- name_space : TBasicType TUTF8
    IO CInt

{- |
Checks if a file info structure has an attribute in the
specified /@nameSpace@/.

/Since: 2.22/
-}
fileInfoHasNamespace ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a) =>
    a
    {- ^ /@info@/: a 'GI.Gio.Objects.FileInfo.FileInfo'. -}
    -> T.Text
    {- ^ /@nameSpace@/: a file attribute namespace. -}
    -> m Bool
    {- ^ __Returns:__ 'True' if /@ginfo@/ has an attribute in /@nameSpace@/,
    'False' otherwise. -}
fileInfoHasNamespace info nameSpace = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    nameSpace' <- textToCString nameSpace
    result <- g_file_info_has_namespace info' nameSpace'
    let result' = (/= 0) result
    touchManagedPtr info
    freeMem nameSpace'
    return result'

#if ENABLE_OVERLOADING
data FileInfoHasNamespaceMethodInfo
instance (signature ~ (T.Text -> m Bool), MonadIO m, IsFileInfo a) => O.MethodInfo FileInfoHasNamespaceMethodInfo a signature where
    overloadedMethod _ = fileInfoHasNamespace

#endif

-- method FileInfo::list_attributes
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "info", argType = TInterface (Name {namespace = "Gio", name = "FileInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GFileInfo.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "name_space", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "a file attribute key's namespace, or %NULL to list\n  all attributes.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TCArray True (-1) (-1) (TBasicType TUTF8))
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_list_attributes" g_file_info_list_attributes ::
    Ptr FileInfo ->                         -- info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    CString ->                              -- name_space : TBasicType TUTF8
    IO (Ptr CString)

{- |
Lists the file info structure\'s attributes.
-}
fileInfoListAttributes ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a) =>
    a
    {- ^ /@info@/: a 'GI.Gio.Objects.FileInfo.FileInfo'. -}
    -> Maybe (T.Text)
    {- ^ /@nameSpace@/: a file attribute key\'s namespace, or 'Nothing' to list
  all attributes. -}
    -> m (Maybe [T.Text])
    {- ^ __Returns:__ a
null-terminated array of strings of all of the possible attribute
types for the given /@nameSpace@/, or 'Nothing' on error. -}
fileInfoListAttributes info nameSpace = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    maybeNameSpace <- case nameSpace of
        Nothing -> return nullPtr
        Just jNameSpace -> do
            jNameSpace' <- textToCString jNameSpace
            return jNameSpace'
    result <- g_file_info_list_attributes info' maybeNameSpace
    maybeResult <- convertIfNonNull result $ \result' -> do
        result'' <- unpackZeroTerminatedUTF8CArray result'
        mapZeroTerminatedCArray freeMem result'
        freeMem result'
        return result''
    touchManagedPtr info
    freeMem maybeNameSpace
    return maybeResult

#if ENABLE_OVERLOADING
data FileInfoListAttributesMethodInfo
instance (signature ~ (Maybe (T.Text) -> m (Maybe [T.Text])), MonadIO m, IsFileInfo a) => O.MethodInfo FileInfoListAttributesMethodInfo a signature where
    overloadedMethod _ = fileInfoListAttributes

#endif

-- method FileInfo::remove_attribute
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "info", argType = TInterface (Name {namespace = "Gio", name = "FileInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GFileInfo.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a file attribute key.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_remove_attribute" g_file_info_remove_attribute ::
    Ptr FileInfo ->                         -- info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    CString ->                              -- attribute : TBasicType TUTF8
    IO ()

{- |
Removes all cases of /@attribute@/ from /@info@/ if it exists.
-}
fileInfoRemoveAttribute ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a) =>
    a
    {- ^ /@info@/: a 'GI.Gio.Objects.FileInfo.FileInfo'. -}
    -> T.Text
    {- ^ /@attribute@/: a file attribute key. -}
    -> m ()
fileInfoRemoveAttribute info attribute = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    attribute' <- textToCString attribute
    g_file_info_remove_attribute info' attribute'
    touchManagedPtr info
    freeMem attribute'
    return ()

#if ENABLE_OVERLOADING
data FileInfoRemoveAttributeMethodInfo
instance (signature ~ (T.Text -> m ()), MonadIO m, IsFileInfo a) => O.MethodInfo FileInfoRemoveAttributeMethodInfo a signature where
    overloadedMethod _ = fileInfoRemoveAttribute

#endif

-- method FileInfo::set_attribute
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "info", argType = TInterface (Name {namespace = "Gio", name = "FileInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GFileInfo.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a file attribute key.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "type", argType = TInterface (Name {namespace = "Gio", name = "FileAttributeType"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GFileAttributeType", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "value_p", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "pointer to the value", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_set_attribute" g_file_info_set_attribute ::
    Ptr FileInfo ->                         -- info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    CString ->                              -- attribute : TBasicType TUTF8
    CUInt ->                                -- type : TInterface (Name {namespace = "Gio", name = "FileAttributeType"})
    Ptr () ->                               -- value_p : TBasicType TPtr
    IO ()

{- |
Sets the /@attribute@/ to contain the given value, if possible. To unset the
attribute, use 'GI.Gio.Enums.FileAttributeTypeInvalid' for /@type@/.
-}
fileInfoSetAttribute ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a) =>
    a
    {- ^ /@info@/: a 'GI.Gio.Objects.FileInfo.FileInfo'. -}
    -> T.Text
    {- ^ /@attribute@/: a file attribute key. -}
    -> Gio.Enums.FileAttributeType
    {- ^ /@type@/: a 'GI.Gio.Enums.FileAttributeType' -}
    -> Ptr ()
    {- ^ /@valueP@/: pointer to the value -}
    -> m ()
fileInfoSetAttribute info attribute type_ valueP = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    attribute' <- textToCString attribute
    let type_' = (fromIntegral . fromEnum) type_
    g_file_info_set_attribute info' attribute' type_' valueP
    touchManagedPtr info
    freeMem attribute'
    return ()

#if ENABLE_OVERLOADING
data FileInfoSetAttributeMethodInfo
instance (signature ~ (T.Text -> Gio.Enums.FileAttributeType -> Ptr () -> m ()), MonadIO m, IsFileInfo a) => O.MethodInfo FileInfoSetAttributeMethodInfo a signature where
    overloadedMethod _ = fileInfoSetAttribute

#endif

-- method FileInfo::set_attribute_boolean
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "info", argType = TInterface (Name {namespace = "Gio", name = "FileInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GFileInfo.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a file attribute key.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "attr_value", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a boolean value.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_set_attribute_boolean" g_file_info_set_attribute_boolean ::
    Ptr FileInfo ->                         -- info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    CString ->                              -- attribute : TBasicType TUTF8
    CInt ->                                 -- attr_value : TBasicType TBoolean
    IO ()

{- |
Sets the /@attribute@/ to contain the given /@attrValue@/,
if possible.
-}
fileInfoSetAttributeBoolean ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a) =>
    a
    {- ^ /@info@/: a 'GI.Gio.Objects.FileInfo.FileInfo'. -}
    -> T.Text
    {- ^ /@attribute@/: a file attribute key. -}
    -> Bool
    {- ^ /@attrValue@/: a boolean value. -}
    -> m ()
fileInfoSetAttributeBoolean info attribute attrValue = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    attribute' <- textToCString attribute
    let attrValue' = (fromIntegral . fromEnum) attrValue
    g_file_info_set_attribute_boolean info' attribute' attrValue'
    touchManagedPtr info
    freeMem attribute'
    return ()

#if ENABLE_OVERLOADING
data FileInfoSetAttributeBooleanMethodInfo
instance (signature ~ (T.Text -> Bool -> m ()), MonadIO m, IsFileInfo a) => O.MethodInfo FileInfoSetAttributeBooleanMethodInfo a signature where
    overloadedMethod _ = fileInfoSetAttributeBoolean

#endif

-- method FileInfo::set_attribute_byte_string
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "info", argType = TInterface (Name {namespace = "Gio", name = "FileInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GFileInfo.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a file attribute key.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "attr_value", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a byte string.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_set_attribute_byte_string" g_file_info_set_attribute_byte_string ::
    Ptr FileInfo ->                         -- info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    CString ->                              -- attribute : TBasicType TUTF8
    CString ->                              -- attr_value : TBasicType TUTF8
    IO ()

{- |
Sets the /@attribute@/ to contain the given /@attrValue@/,
if possible.
-}
fileInfoSetAttributeByteString ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a) =>
    a
    {- ^ /@info@/: a 'GI.Gio.Objects.FileInfo.FileInfo'. -}
    -> T.Text
    {- ^ /@attribute@/: a file attribute key. -}
    -> T.Text
    {- ^ /@attrValue@/: a byte string. -}
    -> m ()
fileInfoSetAttributeByteString info attribute attrValue = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    attribute' <- textToCString attribute
    attrValue' <- textToCString attrValue
    g_file_info_set_attribute_byte_string info' attribute' attrValue'
    touchManagedPtr info
    freeMem attribute'
    freeMem attrValue'
    return ()

#if ENABLE_OVERLOADING
data FileInfoSetAttributeByteStringMethodInfo
instance (signature ~ (T.Text -> T.Text -> m ()), MonadIO m, IsFileInfo a) => O.MethodInfo FileInfoSetAttributeByteStringMethodInfo a signature where
    overloadedMethod _ = fileInfoSetAttributeByteString

#endif

-- method FileInfo::set_attribute_int32
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "info", argType = TInterface (Name {namespace = "Gio", name = "FileInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GFileInfo.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a file attribute key.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "attr_value", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a signed 32-bit integer", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_set_attribute_int32" g_file_info_set_attribute_int32 ::
    Ptr FileInfo ->                         -- info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    CString ->                              -- attribute : TBasicType TUTF8
    Int32 ->                                -- attr_value : TBasicType TInt32
    IO ()

{- |
Sets the /@attribute@/ to contain the given /@attrValue@/,
if possible.
-}
fileInfoSetAttributeInt32 ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a) =>
    a
    {- ^ /@info@/: a 'GI.Gio.Objects.FileInfo.FileInfo'. -}
    -> T.Text
    {- ^ /@attribute@/: a file attribute key. -}
    -> Int32
    {- ^ /@attrValue@/: a signed 32-bit integer -}
    -> m ()
fileInfoSetAttributeInt32 info attribute attrValue = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    attribute' <- textToCString attribute
    g_file_info_set_attribute_int32 info' attribute' attrValue
    touchManagedPtr info
    freeMem attribute'
    return ()

#if ENABLE_OVERLOADING
data FileInfoSetAttributeInt32MethodInfo
instance (signature ~ (T.Text -> Int32 -> m ()), MonadIO m, IsFileInfo a) => O.MethodInfo FileInfoSetAttributeInt32MethodInfo a signature where
    overloadedMethod _ = fileInfoSetAttributeInt32

#endif

-- method FileInfo::set_attribute_int64
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "info", argType = TInterface (Name {namespace = "Gio", name = "FileInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GFileInfo.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "attribute name to set.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "attr_value", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "int64 value to set attribute to.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_set_attribute_int64" g_file_info_set_attribute_int64 ::
    Ptr FileInfo ->                         -- info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    CString ->                              -- attribute : TBasicType TUTF8
    Int64 ->                                -- attr_value : TBasicType TInt64
    IO ()

{- |
Sets the /@attribute@/ to contain the given /@attrValue@/,
if possible.
-}
fileInfoSetAttributeInt64 ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a) =>
    a
    {- ^ /@info@/: a 'GI.Gio.Objects.FileInfo.FileInfo'. -}
    -> T.Text
    {- ^ /@attribute@/: attribute name to set. -}
    -> Int64
    {- ^ /@attrValue@/: int64 value to set attribute to. -}
    -> m ()
fileInfoSetAttributeInt64 info attribute attrValue = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    attribute' <- textToCString attribute
    g_file_info_set_attribute_int64 info' attribute' attrValue
    touchManagedPtr info
    freeMem attribute'
    return ()

#if ENABLE_OVERLOADING
data FileInfoSetAttributeInt64MethodInfo
instance (signature ~ (T.Text -> Int64 -> m ()), MonadIO m, IsFileInfo a) => O.MethodInfo FileInfoSetAttributeInt64MethodInfo a signature where
    overloadedMethod _ = fileInfoSetAttributeInt64

#endif

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

foreign import ccall "g_file_info_set_attribute_mask" g_file_info_set_attribute_mask ::
    Ptr FileInfo ->                         -- info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    Ptr Gio.FileAttributeMatcher.FileAttributeMatcher -> -- mask : TInterface (Name {namespace = "Gio", name = "FileAttributeMatcher"})
    IO ()

{- |
Sets /@mask@/ on /@info@/ to match specific attribute types.
-}
fileInfoSetAttributeMask ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a) =>
    a
    {- ^ /@info@/: a 'GI.Gio.Objects.FileInfo.FileInfo'. -}
    -> Gio.FileAttributeMatcher.FileAttributeMatcher
    {- ^ /@mask@/: a 'GI.Gio.Structs.FileAttributeMatcher.FileAttributeMatcher'. -}
    -> m ()
fileInfoSetAttributeMask info mask = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    mask' <- unsafeManagedPtrGetPtr mask
    g_file_info_set_attribute_mask info' mask'
    touchManagedPtr info
    touchManagedPtr mask
    return ()

#if ENABLE_OVERLOADING
data FileInfoSetAttributeMaskMethodInfo
instance (signature ~ (Gio.FileAttributeMatcher.FileAttributeMatcher -> m ()), MonadIO m, IsFileInfo a) => O.MethodInfo FileInfoSetAttributeMaskMethodInfo a signature where
    overloadedMethod _ = fileInfoSetAttributeMask

#endif

-- method FileInfo::set_attribute_object
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "info", argType = TInterface (Name {namespace = "Gio", name = "FileInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GFileInfo.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a file attribute key.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "attr_value", argType = TInterface (Name {namespace = "GObject", name = "Object"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GObject.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_set_attribute_object" g_file_info_set_attribute_object ::
    Ptr FileInfo ->                         -- info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    CString ->                              -- attribute : TBasicType TUTF8
    Ptr GObject.Object.Object ->            -- attr_value : TInterface (Name {namespace = "GObject", name = "Object"})
    IO ()

{- |
Sets the /@attribute@/ to contain the given /@attrValue@/,
if possible.
-}
fileInfoSetAttributeObject ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a, GObject.Object.IsObject b) =>
    a
    {- ^ /@info@/: a 'GI.Gio.Objects.FileInfo.FileInfo'. -}
    -> T.Text
    {- ^ /@attribute@/: a file attribute key. -}
    -> b
    {- ^ /@attrValue@/: a 'GI.GObject.Objects.Object.Object'. -}
    -> m ()
fileInfoSetAttributeObject info attribute attrValue = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    attribute' <- textToCString attribute
    attrValue' <- unsafeManagedPtrCastPtr attrValue
    g_file_info_set_attribute_object info' attribute' attrValue'
    touchManagedPtr info
    touchManagedPtr attrValue
    freeMem attribute'
    return ()

#if ENABLE_OVERLOADING
data FileInfoSetAttributeObjectMethodInfo
instance (signature ~ (T.Text -> b -> m ()), MonadIO m, IsFileInfo a, GObject.Object.IsObject b) => O.MethodInfo FileInfoSetAttributeObjectMethodInfo a signature where
    overloadedMethod _ = fileInfoSetAttributeObject

#endif

-- method FileInfo::set_attribute_status
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "info", argType = TInterface (Name {namespace = "Gio", name = "FileInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GFileInfo", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a file attribute key", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "status", argType = TInterface (Name {namespace = "Gio", name = "FileAttributeStatus"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GFileAttributeStatus", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_set_attribute_status" g_file_info_set_attribute_status ::
    Ptr FileInfo ->                         -- info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    CString ->                              -- attribute : TBasicType TUTF8
    CUInt ->                                -- status : TInterface (Name {namespace = "Gio", name = "FileAttributeStatus"})
    IO CInt

{- |
Sets the attribute status for an attribute key. This is only
needed by external code that implement 'GI.Gio.Interfaces.File.fileSetAttributesFromInfo'
or similar functions.

The attribute must exist in /@info@/ for this to work. Otherwise 'False'
is returned and /@info@/ is unchanged.

/Since: 2.22/
-}
fileInfoSetAttributeStatus ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a) =>
    a
    {- ^ /@info@/: a 'GI.Gio.Objects.FileInfo.FileInfo' -}
    -> T.Text
    {- ^ /@attribute@/: a file attribute key -}
    -> Gio.Enums.FileAttributeStatus
    {- ^ /@status@/: a 'GI.Gio.Enums.FileAttributeStatus' -}
    -> m Bool
    {- ^ __Returns:__ 'True' if the status was changed, 'False' if the key was not set. -}
fileInfoSetAttributeStatus info attribute status = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    attribute' <- textToCString attribute
    let status' = (fromIntegral . fromEnum) status
    result <- g_file_info_set_attribute_status info' attribute' status'
    let result' = (/= 0) result
    touchManagedPtr info
    freeMem attribute'
    return result'

#if ENABLE_OVERLOADING
data FileInfoSetAttributeStatusMethodInfo
instance (signature ~ (T.Text -> Gio.Enums.FileAttributeStatus -> m Bool), MonadIO m, IsFileInfo a) => O.MethodInfo FileInfoSetAttributeStatusMethodInfo a signature where
    overloadedMethod _ = fileInfoSetAttributeStatus

#endif

-- method FileInfo::set_attribute_string
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "info", argType = TInterface (Name {namespace = "Gio", name = "FileInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GFileInfo.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a file attribute key.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "attr_value", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a UTF-8 string.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_set_attribute_string" g_file_info_set_attribute_string ::
    Ptr FileInfo ->                         -- info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    CString ->                              -- attribute : TBasicType TUTF8
    CString ->                              -- attr_value : TBasicType TUTF8
    IO ()

{- |
Sets the /@attribute@/ to contain the given /@attrValue@/,
if possible.
-}
fileInfoSetAttributeString ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a) =>
    a
    {- ^ /@info@/: a 'GI.Gio.Objects.FileInfo.FileInfo'. -}
    -> T.Text
    {- ^ /@attribute@/: a file attribute key. -}
    -> T.Text
    {- ^ /@attrValue@/: a UTF-8 string. -}
    -> m ()
fileInfoSetAttributeString info attribute attrValue = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    attribute' <- textToCString attribute
    attrValue' <- textToCString attrValue
    g_file_info_set_attribute_string info' attribute' attrValue'
    touchManagedPtr info
    freeMem attribute'
    freeMem attrValue'
    return ()

#if ENABLE_OVERLOADING
data FileInfoSetAttributeStringMethodInfo
instance (signature ~ (T.Text -> T.Text -> m ()), MonadIO m, IsFileInfo a) => O.MethodInfo FileInfoSetAttributeStringMethodInfo a signature where
    overloadedMethod _ = fileInfoSetAttributeString

#endif

-- method FileInfo::set_attribute_stringv
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "info", argType = TInterface (Name {namespace = "Gio", name = "FileInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GFileInfo.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a file attribute key", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "attr_value", argType = TCArray True (-1) (-1) (TBasicType TUTF8), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a %NULL\n  terminated array of UTF-8 strings.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_set_attribute_stringv" g_file_info_set_attribute_stringv ::
    Ptr FileInfo ->                         -- info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    CString ->                              -- attribute : TBasicType TUTF8
    Ptr CString ->                          -- attr_value : TCArray True (-1) (-1) (TBasicType TUTF8)
    IO ()

{- |
Sets the /@attribute@/ to contain the given /@attrValue@/,
if possible.

Sinze: 2.22
-}
fileInfoSetAttributeStringv ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a) =>
    a
    {- ^ /@info@/: a 'GI.Gio.Objects.FileInfo.FileInfo'. -}
    -> T.Text
    {- ^ /@attribute@/: a file attribute key -}
    -> [T.Text]
    {- ^ /@attrValue@/: a 'Nothing'
  terminated array of UTF-8 strings. -}
    -> m ()
fileInfoSetAttributeStringv info attribute attrValue = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    attribute' <- textToCString attribute
    attrValue' <- packZeroTerminatedUTF8CArray attrValue
    g_file_info_set_attribute_stringv info' attribute' attrValue'
    touchManagedPtr info
    freeMem attribute'
    mapZeroTerminatedCArray freeMem attrValue'
    freeMem attrValue'
    return ()

#if ENABLE_OVERLOADING
data FileInfoSetAttributeStringvMethodInfo
instance (signature ~ (T.Text -> [T.Text] -> m ()), MonadIO m, IsFileInfo a) => O.MethodInfo FileInfoSetAttributeStringvMethodInfo a signature where
    overloadedMethod _ = fileInfoSetAttributeStringv

#endif

-- method FileInfo::set_attribute_uint32
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "info", argType = TInterface (Name {namespace = "Gio", name = "FileInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GFileInfo.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a file attribute key.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "attr_value", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "an unsigned 32-bit integer.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_set_attribute_uint32" g_file_info_set_attribute_uint32 ::
    Ptr FileInfo ->                         -- info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    CString ->                              -- attribute : TBasicType TUTF8
    Word32 ->                               -- attr_value : TBasicType TUInt32
    IO ()

{- |
Sets the /@attribute@/ to contain the given /@attrValue@/,
if possible.
-}
fileInfoSetAttributeUint32 ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a) =>
    a
    {- ^ /@info@/: a 'GI.Gio.Objects.FileInfo.FileInfo'. -}
    -> T.Text
    {- ^ /@attribute@/: a file attribute key. -}
    -> Word32
    {- ^ /@attrValue@/: an unsigned 32-bit integer. -}
    -> m ()
fileInfoSetAttributeUint32 info attribute attrValue = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    attribute' <- textToCString attribute
    g_file_info_set_attribute_uint32 info' attribute' attrValue
    touchManagedPtr info
    freeMem attribute'
    return ()

#if ENABLE_OVERLOADING
data FileInfoSetAttributeUint32MethodInfo
instance (signature ~ (T.Text -> Word32 -> m ()), MonadIO m, IsFileInfo a) => O.MethodInfo FileInfoSetAttributeUint32MethodInfo a signature where
    overloadedMethod _ = fileInfoSetAttributeUint32

#endif

-- method FileInfo::set_attribute_uint64
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "info", argType = TInterface (Name {namespace = "Gio", name = "FileInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GFileInfo.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a file attribute key.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "attr_value", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "an unsigned 64-bit integer.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_set_attribute_uint64" g_file_info_set_attribute_uint64 ::
    Ptr FileInfo ->                         -- info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    CString ->                              -- attribute : TBasicType TUTF8
    Word64 ->                               -- attr_value : TBasicType TUInt64
    IO ()

{- |
Sets the /@attribute@/ to contain the given /@attrValue@/,
if possible.
-}
fileInfoSetAttributeUint64 ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a) =>
    a
    {- ^ /@info@/: a 'GI.Gio.Objects.FileInfo.FileInfo'. -}
    -> T.Text
    {- ^ /@attribute@/: a file attribute key. -}
    -> Word64
    {- ^ /@attrValue@/: an unsigned 64-bit integer. -}
    -> m ()
fileInfoSetAttributeUint64 info attribute attrValue = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    attribute' <- textToCString attribute
    g_file_info_set_attribute_uint64 info' attribute' attrValue
    touchManagedPtr info
    freeMem attribute'
    return ()

#if ENABLE_OVERLOADING
data FileInfoSetAttributeUint64MethodInfo
instance (signature ~ (T.Text -> Word64 -> m ()), MonadIO m, IsFileInfo a) => O.MethodInfo FileInfoSetAttributeUint64MethodInfo a signature where
    overloadedMethod _ = fileInfoSetAttributeUint64

#endif

-- method FileInfo::set_content_type
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "info", argType = TInterface (Name {namespace = "Gio", name = "FileInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GFileInfo.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "content_type", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a content type. See [GContentType][gio-GContentType]", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_set_content_type" g_file_info_set_content_type ::
    Ptr FileInfo ->                         -- info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    CString ->                              -- content_type : TBasicType TUTF8
    IO ()

{- |
Sets the content type attribute for a given 'GI.Gio.Objects.FileInfo.FileInfo'.
See 'GI.Gio.Constants.FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE'.
-}
fileInfoSetContentType ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a) =>
    a
    {- ^ /@info@/: a 'GI.Gio.Objects.FileInfo.FileInfo'. -}
    -> T.Text
    {- ^ /@contentType@/: a content type. See [GContentType][gio-GContentType] -}
    -> m ()
fileInfoSetContentType info contentType = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    contentType' <- textToCString contentType
    g_file_info_set_content_type info' contentType'
    touchManagedPtr info
    freeMem contentType'
    return ()

#if ENABLE_OVERLOADING
data FileInfoSetContentTypeMethodInfo
instance (signature ~ (T.Text -> m ()), MonadIO m, IsFileInfo a) => O.MethodInfo FileInfoSetContentTypeMethodInfo a signature where
    overloadedMethod _ = fileInfoSetContentType

#endif

-- method FileInfo::set_display_name
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "info", argType = TInterface (Name {namespace = "Gio", name = "FileInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GFileInfo.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "display_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a string containing a display name.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_set_display_name" g_file_info_set_display_name ::
    Ptr FileInfo ->                         -- info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    CString ->                              -- display_name : TBasicType TUTF8
    IO ()

{- |
Sets the display name for the current 'GI.Gio.Objects.FileInfo.FileInfo'.
See 'GI.Gio.Constants.FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME'.
-}
fileInfoSetDisplayName ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a) =>
    a
    {- ^ /@info@/: a 'GI.Gio.Objects.FileInfo.FileInfo'. -}
    -> T.Text
    {- ^ /@displayName@/: a string containing a display name. -}
    -> m ()
fileInfoSetDisplayName info displayName = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    displayName' <- textToCString displayName
    g_file_info_set_display_name info' displayName'
    touchManagedPtr info
    freeMem displayName'
    return ()

#if ENABLE_OVERLOADING
data FileInfoSetDisplayNameMethodInfo
instance (signature ~ (T.Text -> m ()), MonadIO m, IsFileInfo a) => O.MethodInfo FileInfoSetDisplayNameMethodInfo a signature where
    overloadedMethod _ = fileInfoSetDisplayName

#endif

-- method FileInfo::set_edit_name
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "info", argType = TInterface (Name {namespace = "Gio", name = "FileInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GFileInfo.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "edit_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a string containing an edit name.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_set_edit_name" g_file_info_set_edit_name ::
    Ptr FileInfo ->                         -- info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    CString ->                              -- edit_name : TBasicType TUTF8
    IO ()

{- |
Sets the edit name for the current file.
See 'GI.Gio.Constants.FILE_ATTRIBUTE_STANDARD_EDIT_NAME'.
-}
fileInfoSetEditName ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a) =>
    a
    {- ^ /@info@/: a 'GI.Gio.Objects.FileInfo.FileInfo'. -}
    -> T.Text
    {- ^ /@editName@/: a string containing an edit name. -}
    -> m ()
fileInfoSetEditName info editName = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    editName' <- textToCString editName
    g_file_info_set_edit_name info' editName'
    touchManagedPtr info
    freeMem editName'
    return ()

#if ENABLE_OVERLOADING
data FileInfoSetEditNameMethodInfo
instance (signature ~ (T.Text -> m ()), MonadIO m, IsFileInfo a) => O.MethodInfo FileInfoSetEditNameMethodInfo a signature where
    overloadedMethod _ = fileInfoSetEditName

#endif

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

foreign import ccall "g_file_info_set_file_type" g_file_info_set_file_type ::
    Ptr FileInfo ->                         -- info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    CUInt ->                                -- type : TInterface (Name {namespace = "Gio", name = "FileType"})
    IO ()

{- |
Sets the file type in a 'GI.Gio.Objects.FileInfo.FileInfo' to /@type@/.
See 'GI.Gio.Constants.FILE_ATTRIBUTE_STANDARD_TYPE'.
-}
fileInfoSetFileType ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a) =>
    a
    {- ^ /@info@/: a 'GI.Gio.Objects.FileInfo.FileInfo'. -}
    -> Gio.Enums.FileType
    {- ^ /@type@/: a 'GI.Gio.Enums.FileType'. -}
    -> m ()
fileInfoSetFileType info type_ = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    let type_' = (fromIntegral . fromEnum) type_
    g_file_info_set_file_type info' type_'
    touchManagedPtr info
    return ()

#if ENABLE_OVERLOADING
data FileInfoSetFileTypeMethodInfo
instance (signature ~ (Gio.Enums.FileType -> m ()), MonadIO m, IsFileInfo a) => O.MethodInfo FileInfoSetFileTypeMethodInfo a signature where
    overloadedMethod _ = fileInfoSetFileType

#endif

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

foreign import ccall "g_file_info_set_icon" g_file_info_set_icon ::
    Ptr FileInfo ->                         -- info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    Ptr Gio.Icon.Icon ->                    -- icon : TInterface (Name {namespace = "Gio", name = "Icon"})
    IO ()

{- |
Sets the icon for a given 'GI.Gio.Objects.FileInfo.FileInfo'.
See 'GI.Gio.Constants.FILE_ATTRIBUTE_STANDARD_ICON'.
-}
fileInfoSetIcon ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a, Gio.Icon.IsIcon b) =>
    a
    {- ^ /@info@/: a 'GI.Gio.Objects.FileInfo.FileInfo'. -}
    -> b
    {- ^ /@icon@/: a 'GI.Gio.Interfaces.Icon.Icon'. -}
    -> m ()
fileInfoSetIcon info icon = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    icon' <- unsafeManagedPtrCastPtr icon
    g_file_info_set_icon info' icon'
    touchManagedPtr info
    touchManagedPtr icon
    return ()

#if ENABLE_OVERLOADING
data FileInfoSetIconMethodInfo
instance (signature ~ (b -> m ()), MonadIO m, IsFileInfo a, Gio.Icon.IsIcon b) => O.MethodInfo FileInfoSetIconMethodInfo a signature where
    overloadedMethod _ = fileInfoSetIcon

#endif

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

foreign import ccall "g_file_info_set_is_hidden" g_file_info_set_is_hidden ::
    Ptr FileInfo ->                         -- info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    CInt ->                                 -- is_hidden : TBasicType TBoolean
    IO ()

{- |
Sets the \"is_hidden\" attribute in a 'GI.Gio.Objects.FileInfo.FileInfo' according to /@isHidden@/.
See 'GI.Gio.Constants.FILE_ATTRIBUTE_STANDARD_IS_HIDDEN'.
-}
fileInfoSetIsHidden ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a) =>
    a
    {- ^ /@info@/: a 'GI.Gio.Objects.FileInfo.FileInfo'. -}
    -> Bool
    {- ^ /@isHidden@/: a 'Bool'. -}
    -> m ()
fileInfoSetIsHidden info isHidden = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    let isHidden' = (fromIntegral . fromEnum) isHidden
    g_file_info_set_is_hidden info' isHidden'
    touchManagedPtr info
    return ()

#if ENABLE_OVERLOADING
data FileInfoSetIsHiddenMethodInfo
instance (signature ~ (Bool -> m ()), MonadIO m, IsFileInfo a) => O.MethodInfo FileInfoSetIsHiddenMethodInfo a signature where
    overloadedMethod _ = fileInfoSetIsHidden

#endif

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

foreign import ccall "g_file_info_set_is_symlink" g_file_info_set_is_symlink ::
    Ptr FileInfo ->                         -- info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    CInt ->                                 -- is_symlink : TBasicType TBoolean
    IO ()

{- |
Sets the \"is_symlink\" attribute in a 'GI.Gio.Objects.FileInfo.FileInfo' according to /@isSymlink@/.
See 'GI.Gio.Constants.FILE_ATTRIBUTE_STANDARD_IS_SYMLINK'.
-}
fileInfoSetIsSymlink ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a) =>
    a
    {- ^ /@info@/: a 'GI.Gio.Objects.FileInfo.FileInfo'. -}
    -> Bool
    {- ^ /@isSymlink@/: a 'Bool'. -}
    -> m ()
fileInfoSetIsSymlink info isSymlink = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    let isSymlink' = (fromIntegral . fromEnum) isSymlink
    g_file_info_set_is_symlink info' isSymlink'
    touchManagedPtr info
    return ()

#if ENABLE_OVERLOADING
data FileInfoSetIsSymlinkMethodInfo
instance (signature ~ (Bool -> m ()), MonadIO m, IsFileInfo a) => O.MethodInfo FileInfoSetIsSymlinkMethodInfo a signature where
    overloadedMethod _ = fileInfoSetIsSymlink

#endif

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

foreign import ccall "g_file_info_set_modification_time" g_file_info_set_modification_time ::
    Ptr FileInfo ->                         -- info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    Ptr GLib.TimeVal.TimeVal ->             -- mtime : TInterface (Name {namespace = "GLib", name = "TimeVal"})
    IO ()

{- |
Sets the 'GI.Gio.Constants.FILE_ATTRIBUTE_TIME_MODIFIED' attribute in the file
info to the given time value.
-}
fileInfoSetModificationTime ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a) =>
    a
    {- ^ /@info@/: a 'GI.Gio.Objects.FileInfo.FileInfo'. -}
    -> GLib.TimeVal.TimeVal
    {- ^ /@mtime@/: a 'GI.GLib.Structs.TimeVal.TimeVal'. -}
    -> m ()
fileInfoSetModificationTime info mtime = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    mtime' <- unsafeManagedPtrGetPtr mtime
    g_file_info_set_modification_time info' mtime'
    touchManagedPtr info
    touchManagedPtr mtime
    return ()

#if ENABLE_OVERLOADING
data FileInfoSetModificationTimeMethodInfo
instance (signature ~ (GLib.TimeVal.TimeVal -> m ()), MonadIO m, IsFileInfo a) => O.MethodInfo FileInfoSetModificationTimeMethodInfo a signature where
    overloadedMethod _ = fileInfoSetModificationTime

#endif

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

foreign import ccall "g_file_info_set_name" g_file_info_set_name ::
    Ptr FileInfo ->                         -- info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    CString ->                              -- name : TBasicType TFileName
    IO ()

{- |
Sets the name attribute for the current 'GI.Gio.Objects.FileInfo.FileInfo'.
See 'GI.Gio.Constants.FILE_ATTRIBUTE_STANDARD_NAME'.
-}
fileInfoSetName ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a) =>
    a
    {- ^ /@info@/: a 'GI.Gio.Objects.FileInfo.FileInfo'. -}
    -> [Char]
    {- ^ /@name@/: a string containing a name. -}
    -> m ()
fileInfoSetName info name = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    name' <- stringToCString name
    g_file_info_set_name info' name'
    touchManagedPtr info
    freeMem name'
    return ()

#if ENABLE_OVERLOADING
data FileInfoSetNameMethodInfo
instance (signature ~ ([Char] -> m ()), MonadIO m, IsFileInfo a) => O.MethodInfo FileInfoSetNameMethodInfo a signature where
    overloadedMethod _ = fileInfoSetName

#endif

-- method FileInfo::set_size
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "info", argType = TInterface (Name {namespace = "Gio", name = "FileInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GFileInfo.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "size", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #goffset containing the file's size.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_set_size" g_file_info_set_size ::
    Ptr FileInfo ->                         -- info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    Int64 ->                                -- size : TBasicType TInt64
    IO ()

{- |
Sets the 'GI.Gio.Constants.FILE_ATTRIBUTE_STANDARD_SIZE' attribute in the file info
to the given size.
-}
fileInfoSetSize ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a) =>
    a
    {- ^ /@info@/: a 'GI.Gio.Objects.FileInfo.FileInfo'. -}
    -> Int64
    {- ^ /@size@/: a @/goffset/@ containing the file\'s size. -}
    -> m ()
fileInfoSetSize info size = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    g_file_info_set_size info' size
    touchManagedPtr info
    return ()

#if ENABLE_OVERLOADING
data FileInfoSetSizeMethodInfo
instance (signature ~ (Int64 -> m ()), MonadIO m, IsFileInfo a) => O.MethodInfo FileInfoSetSizeMethodInfo a signature where
    overloadedMethod _ = fileInfoSetSize

#endif

-- method FileInfo::set_sort_order
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "info", argType = TInterface (Name {namespace = "Gio", name = "FileInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GFileInfo.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "sort_order", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a sort order integer.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_set_sort_order" g_file_info_set_sort_order ::
    Ptr FileInfo ->                         -- info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    Int32 ->                                -- sort_order : TBasicType TInt32
    IO ()

{- |
Sets the sort order attribute in the file info structure. See
'GI.Gio.Constants.FILE_ATTRIBUTE_STANDARD_SORT_ORDER'.
-}
fileInfoSetSortOrder ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a) =>
    a
    {- ^ /@info@/: a 'GI.Gio.Objects.FileInfo.FileInfo'. -}
    -> Int32
    {- ^ /@sortOrder@/: a sort order integer. -}
    -> m ()
fileInfoSetSortOrder info sortOrder = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    g_file_info_set_sort_order info' sortOrder
    touchManagedPtr info
    return ()

#if ENABLE_OVERLOADING
data FileInfoSetSortOrderMethodInfo
instance (signature ~ (Int32 -> m ()), MonadIO m, IsFileInfo a) => O.MethodInfo FileInfoSetSortOrderMethodInfo a signature where
    overloadedMethod _ = fileInfoSetSortOrder

#endif

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

foreign import ccall "g_file_info_set_symbolic_icon" g_file_info_set_symbolic_icon ::
    Ptr FileInfo ->                         -- info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    Ptr Gio.Icon.Icon ->                    -- icon : TInterface (Name {namespace = "Gio", name = "Icon"})
    IO ()

{- |
Sets the symbolic icon for a given 'GI.Gio.Objects.FileInfo.FileInfo'.
See 'GI.Gio.Constants.FILE_ATTRIBUTE_STANDARD_SYMBOLIC_ICON'.

/Since: 2.34/
-}
fileInfoSetSymbolicIcon ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a, Gio.Icon.IsIcon b) =>
    a
    {- ^ /@info@/: a 'GI.Gio.Objects.FileInfo.FileInfo'. -}
    -> b
    {- ^ /@icon@/: a 'GI.Gio.Interfaces.Icon.Icon'. -}
    -> m ()
fileInfoSetSymbolicIcon info icon = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    icon' <- unsafeManagedPtrCastPtr icon
    g_file_info_set_symbolic_icon info' icon'
    touchManagedPtr info
    touchManagedPtr icon
    return ()

#if ENABLE_OVERLOADING
data FileInfoSetSymbolicIconMethodInfo
instance (signature ~ (b -> m ()), MonadIO m, IsFileInfo a, Gio.Icon.IsIcon b) => O.MethodInfo FileInfoSetSymbolicIconMethodInfo a signature where
    overloadedMethod _ = fileInfoSetSymbolicIcon

#endif

-- method FileInfo::set_symlink_target
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "info", argType = TInterface (Name {namespace = "Gio", name = "FileInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GFileInfo.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "symlink_target", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a static string containing a path to a symlink target.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_set_symlink_target" g_file_info_set_symlink_target ::
    Ptr FileInfo ->                         -- info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    CString ->                              -- symlink_target : TBasicType TUTF8
    IO ()

{- |
Sets the 'GI.Gio.Constants.FILE_ATTRIBUTE_STANDARD_SYMLINK_TARGET' attribute in the file info
to the given symlink target.
-}
fileInfoSetSymlinkTarget ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a) =>
    a
    {- ^ /@info@/: a 'GI.Gio.Objects.FileInfo.FileInfo'. -}
    -> T.Text
    {- ^ /@symlinkTarget@/: a static string containing a path to a symlink target. -}
    -> m ()
fileInfoSetSymlinkTarget info symlinkTarget = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    symlinkTarget' <- textToCString symlinkTarget
    g_file_info_set_symlink_target info' symlinkTarget'
    touchManagedPtr info
    freeMem symlinkTarget'
    return ()

#if ENABLE_OVERLOADING
data FileInfoSetSymlinkTargetMethodInfo
instance (signature ~ (T.Text -> m ()), MonadIO m, IsFileInfo a) => O.MethodInfo FileInfoSetSymlinkTargetMethodInfo a signature where
    overloadedMethod _ = fileInfoSetSymlinkTarget

#endif

-- method FileInfo::unset_attribute_mask
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "info", argType = TInterface (Name {namespace = "Gio", name = "FileInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "#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_file_info_unset_attribute_mask" g_file_info_unset_attribute_mask ::
    Ptr FileInfo ->                         -- info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
    IO ()

{- |
Unsets a mask set by 'GI.Gio.Objects.FileInfo.fileInfoSetAttributeMask', if one
is set.
-}
fileInfoUnsetAttributeMask ::
    (B.CallStack.HasCallStack, MonadIO m, IsFileInfo a) =>
    a
    {- ^ /@info@/: 'GI.Gio.Objects.FileInfo.FileInfo'. -}
    -> m ()
fileInfoUnsetAttributeMask info = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    g_file_info_unset_attribute_mask info'
    touchManagedPtr info
    return ()

#if ENABLE_OVERLOADING
data FileInfoUnsetAttributeMaskMethodInfo
instance (signature ~ (m ()), MonadIO m, IsFileInfo a) => O.MethodInfo FileInfoUnsetAttributeMaskMethodInfo a signature where
    overloadedMethod _ = fileInfoUnsetAttributeMask

#endif