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

module GI.Gio.Objects.FileInfo
    ( 

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


 -- * Methods
-- ** fileInfoClearStatus
    fileInfoClearStatus                     ,


-- ** fileInfoCopyInto
    fileInfoCopyInto                        ,


-- ** fileInfoDup
    fileInfoDup                             ,


-- ** fileInfoGetAttributeAsString
    fileInfoGetAttributeAsString            ,


-- ** fileInfoGetAttributeBoolean
    fileInfoGetAttributeBoolean             ,


-- ** fileInfoGetAttributeByteString
    fileInfoGetAttributeByteString          ,


-- ** fileInfoGetAttributeData
    fileInfoGetAttributeData                ,


-- ** fileInfoGetAttributeInt32
    fileInfoGetAttributeInt32               ,


-- ** fileInfoGetAttributeInt64
    fileInfoGetAttributeInt64               ,


-- ** fileInfoGetAttributeObject
    fileInfoGetAttributeObject              ,


-- ** fileInfoGetAttributeStatus
    fileInfoGetAttributeStatus              ,


-- ** fileInfoGetAttributeString
    fileInfoGetAttributeString              ,


-- ** fileInfoGetAttributeStringv
    fileInfoGetAttributeStringv             ,


-- ** fileInfoGetAttributeType
    fileInfoGetAttributeType                ,


-- ** fileInfoGetAttributeUint32
    fileInfoGetAttributeUint32              ,


-- ** fileInfoGetAttributeUint64
    fileInfoGetAttributeUint64              ,


-- ** fileInfoGetContentType
    fileInfoGetContentType                  ,


-- ** fileInfoGetDeletionDate
    fileInfoGetDeletionDate                 ,


-- ** fileInfoGetDisplayName
    fileInfoGetDisplayName                  ,


-- ** fileInfoGetEditName
    fileInfoGetEditName                     ,


-- ** fileInfoGetEtag
    fileInfoGetEtag                         ,


-- ** fileInfoGetFileType
    fileInfoGetFileType                     ,


-- ** fileInfoGetIcon
    fileInfoGetIcon                         ,


-- ** fileInfoGetIsBackup
    fileInfoGetIsBackup                     ,


-- ** fileInfoGetIsHidden
    fileInfoGetIsHidden                     ,


-- ** fileInfoGetIsSymlink
    fileInfoGetIsSymlink                    ,


-- ** fileInfoGetModificationTime
    fileInfoGetModificationTime             ,


-- ** fileInfoGetName
    fileInfoGetName                         ,


-- ** fileInfoGetSize
    fileInfoGetSize                         ,


-- ** fileInfoGetSortOrder
    fileInfoGetSortOrder                    ,


-- ** fileInfoGetSymbolicIcon
    fileInfoGetSymbolicIcon                 ,


-- ** fileInfoGetSymlinkTarget
    fileInfoGetSymlinkTarget                ,


-- ** fileInfoHasAttribute
    fileInfoHasAttribute                    ,


-- ** fileInfoHasNamespace
    fileInfoHasNamespace                    ,


-- ** fileInfoListAttributes
    fileInfoListAttributes                  ,


-- ** fileInfoNew
    fileInfoNew                             ,


-- ** fileInfoRemoveAttribute
    fileInfoRemoveAttribute                 ,


-- ** fileInfoSetAttribute
    fileInfoSetAttribute                    ,


-- ** fileInfoSetAttributeBoolean
    fileInfoSetAttributeBoolean             ,


-- ** fileInfoSetAttributeByteString
    fileInfoSetAttributeByteString          ,


-- ** fileInfoSetAttributeInt32
    fileInfoSetAttributeInt32               ,


-- ** fileInfoSetAttributeInt64
    fileInfoSetAttributeInt64               ,


-- ** fileInfoSetAttributeMask
    fileInfoSetAttributeMask                ,


-- ** fileInfoSetAttributeObject
    fileInfoSetAttributeObject              ,


-- ** fileInfoSetAttributeStatus
    fileInfoSetAttributeStatus              ,


-- ** fileInfoSetAttributeString
    fileInfoSetAttributeString              ,


-- ** fileInfoSetAttributeStringv
    fileInfoSetAttributeStringv             ,


-- ** fileInfoSetAttributeUint32
    fileInfoSetAttributeUint32              ,


-- ** fileInfoSetAttributeUint64
    fileInfoSetAttributeUint64              ,


-- ** fileInfoSetContentType
    fileInfoSetContentType                  ,


-- ** fileInfoSetDisplayName
    fileInfoSetDisplayName                  ,


-- ** fileInfoSetEditName
    fileInfoSetEditName                     ,


-- ** fileInfoSetFileType
    fileInfoSetFileType                     ,


-- ** fileInfoSetIcon
    fileInfoSetIcon                         ,


-- ** fileInfoSetIsHidden
    fileInfoSetIsHidden                     ,


-- ** fileInfoSetIsSymlink
    fileInfoSetIsSymlink                    ,


-- ** fileInfoSetModificationTime
    fileInfoSetModificationTime             ,


-- ** fileInfoSetName
    fileInfoSetName                         ,


-- ** fileInfoSetSize
    fileInfoSetSize                         ,


-- ** fileInfoSetSortOrder
    fileInfoSetSortOrder                    ,


-- ** fileInfoSetSymbolicIcon
    fileInfoSetSymbolicIcon                 ,


-- ** fileInfoSetSymlinkTarget
    fileInfoSetSymlinkTarget                ,


-- ** fileInfoUnsetAttributeMask
    fileInfoUnsetAttributeMask              ,




    ) where

import Prelude ()
import Data.GI.Base.ShortPrelude

import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map

import GI.Gio.Types
import GI.Gio.Callbacks
import qualified GI.GLib as GLib
import qualified GI.GObject as GObject

newtype FileInfo = FileInfo (ForeignPtr FileInfo)
foreign import ccall "g_file_info_get_type"
    c_g_file_info_get_type :: IO GType

type instance ParentTypes FileInfo = FileInfoParentTypes
type FileInfoParentTypes = '[GObject.Object]

instance GObject FileInfo where
    gobjectIsInitiallyUnowned _ = False
    gobjectType _ = c_g_file_info_get_type
    

class GObject o => FileInfoK o
instance (GObject o, IsDescendantOf FileInfo o) => FileInfoK o

toFileInfo :: FileInfoK o => o -> IO FileInfo
toFileInfo = unsafeCastTo FileInfo

noFileInfo :: Maybe FileInfo
noFileInfo = Nothing

type instance AttributeList FileInfo = FileInfoAttributeList
type FileInfoAttributeList = ('[ ] :: [(Symbol, *)])

type instance SignalList FileInfo = FileInfoSignalList
type FileInfoSignalList = ('[ '("notify", GObject.ObjectNotifySignalInfo), '("notify::[property]", GObjectNotifySignalInfo)] :: [(Symbol, *)])

-- method FileInfo::new
-- method type : Constructor
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TInterface "Gio" "FileInfo"
-- throws : False
-- Skip return : False

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


fileInfoNew ::
    (MonadIO m) =>
    m FileInfo
fileInfoNew  = liftIO $ do
    result <- g_file_info_new
    checkUnexpectedReturnNULL "g_file_info_new" result
    result' <- (wrapObject FileInfo) result
    return result'

-- method FileInfo::clear_status
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_clear_status" g_file_info_clear_status :: 
    Ptr FileInfo ->                         -- _obj : TInterface "Gio" "FileInfo"
    IO ()


fileInfoClearStatus ::
    (MonadIO m, FileInfoK a) =>
    a ->                                    -- _obj
    m ()
fileInfoClearStatus _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    g_file_info_clear_status _obj'
    touchManagedPtr _obj
    return ()

-- method FileInfo::copy_into
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "dest_info", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "dest_info", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_copy_into" g_file_info_copy_into :: 
    Ptr FileInfo ->                         -- _obj : TInterface "Gio" "FileInfo"
    Ptr FileInfo ->                         -- dest_info : TInterface "Gio" "FileInfo"
    IO ()


fileInfoCopyInto ::
    (MonadIO m, FileInfoK a, FileInfoK b) =>
    a ->                                    -- _obj
    b ->                                    -- dest_info
    m ()
fileInfoCopyInto _obj dest_info = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let dest_info' = unsafeManagedPtrCastPtr dest_info
    g_file_info_copy_into _obj' dest_info'
    touchManagedPtr _obj
    touchManagedPtr dest_info
    return ()

-- method FileInfo::dup
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gio" "FileInfo"
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_dup" g_file_info_dup :: 
    Ptr FileInfo ->                         -- _obj : TInterface "Gio" "FileInfo"
    IO (Ptr FileInfo)


fileInfoDup ::
    (MonadIO m, FileInfoK a) =>
    a ->                                    -- _obj
    m FileInfo
fileInfoDup _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- g_file_info_dup _obj'
    checkUnexpectedReturnNULL "g_file_info_dup" result
    result' <- (wrapObject FileInfo) result
    touchManagedPtr _obj
    return result'

-- method FileInfo::get_attribute_as_string
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : 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 ->                         -- _obj : TInterface "Gio" "FileInfo"
    CString ->                              -- attribute : TBasicType TUTF8
    IO CString


fileInfoGetAttributeAsString ::
    (MonadIO m, FileInfoK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- attribute
    m T.Text
fileInfoGetAttributeAsString _obj attribute = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    attribute' <- textToCString attribute
    result <- g_file_info_get_attribute_as_string _obj' attribute'
    checkUnexpectedReturnNULL "g_file_info_get_attribute_as_string" result
    result' <- cstringToText result
    freeMem result
    touchManagedPtr _obj
    freeMem attribute'
    return result'

-- method FileInfo::get_attribute_boolean
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_get_attribute_boolean" g_file_info_get_attribute_boolean :: 
    Ptr FileInfo ->                         -- _obj : TInterface "Gio" "FileInfo"
    CString ->                              -- attribute : TBasicType TUTF8
    IO CInt


fileInfoGetAttributeBoolean ::
    (MonadIO m, FileInfoK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- attribute
    m Bool
fileInfoGetAttributeBoolean _obj attribute = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    attribute' <- textToCString attribute
    result <- g_file_info_get_attribute_boolean _obj' attribute'
    let result' = (/= 0) result
    touchManagedPtr _obj
    freeMem attribute'
    return result'

-- method FileInfo::get_attribute_byte_string
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : 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 ->                         -- _obj : TInterface "Gio" "FileInfo"
    CString ->                              -- attribute : TBasicType TUTF8
    IO CString


fileInfoGetAttributeByteString ::
    (MonadIO m, FileInfoK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- attribute
    m T.Text
fileInfoGetAttributeByteString _obj attribute = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    attribute' <- textToCString attribute
    result <- g_file_info_get_attribute_byte_string _obj' attribute'
    checkUnexpectedReturnNULL "g_file_info_get_attribute_byte_string" result
    result' <- cstringToText result
    touchManagedPtr _obj
    freeMem attribute'
    return result'

-- method FileInfo::get_attribute_data
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "type", argType = TInterface "Gio" "FileAttributeType", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "value_pp", argType = TBasicType TVoid, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "status", argType = TInterface "Gio" "FileAttributeStatus", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_get_attribute_data" g_file_info_get_attribute_data :: 
    Ptr FileInfo ->                         -- _obj : TInterface "Gio" "FileInfo"
    CString ->                              -- attribute : TBasicType TUTF8
    Ptr CUInt ->                            -- type : TInterface "Gio" "FileAttributeType"
    Ptr (Ptr ()) ->                         -- value_pp : TBasicType TVoid
    Ptr CUInt ->                            -- status : TInterface "Gio" "FileAttributeStatus"
    IO CInt


fileInfoGetAttributeData ::
    (MonadIO m, FileInfoK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- attribute
    m (Bool,FileAttributeType,(Ptr ()),FileAttributeStatus)
fileInfoGetAttributeData _obj attribute = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    attribute' <- textToCString attribute
    type_ <- allocMem :: IO (Ptr CUInt)
    value_pp <- allocMem :: IO (Ptr (Ptr ()))
    status <- allocMem :: IO (Ptr CUInt)
    result <- g_file_info_get_attribute_data _obj' attribute' type_ value_pp status
    let result' = (/= 0) result
    type_' <- peek type_
    let type_'' = (toEnum . fromIntegral) type_'
    value_pp' <- peek value_pp
    status' <- peek status
    let status'' = (toEnum . fromIntegral) status'
    touchManagedPtr _obj
    freeMem attribute'
    freeMem type_
    freeMem value_pp
    freeMem status
    return (result', type_'', value_pp', status'')

-- method FileInfo::get_attribute_int32
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_get_attribute_int32" g_file_info_get_attribute_int32 :: 
    Ptr FileInfo ->                         -- _obj : TInterface "Gio" "FileInfo"
    CString ->                              -- attribute : TBasicType TUTF8
    IO Int32


fileInfoGetAttributeInt32 ::
    (MonadIO m, FileInfoK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- attribute
    m Int32
fileInfoGetAttributeInt32 _obj attribute = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    attribute' <- textToCString attribute
    result <- g_file_info_get_attribute_int32 _obj' attribute'
    touchManagedPtr _obj
    freeMem attribute'
    return result

-- method FileInfo::get_attribute_int64
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt64
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_get_attribute_int64" g_file_info_get_attribute_int64 :: 
    Ptr FileInfo ->                         -- _obj : TInterface "Gio" "FileInfo"
    CString ->                              -- attribute : TBasicType TUTF8
    IO Int64


fileInfoGetAttributeInt64 ::
    (MonadIO m, FileInfoK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- attribute
    m Int64
fileInfoGetAttributeInt64 _obj attribute = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    attribute' <- textToCString attribute
    result <- g_file_info_get_attribute_int64 _obj' attribute'
    touchManagedPtr _obj
    freeMem attribute'
    return result

-- method FileInfo::get_attribute_object
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "GObject" "Object"
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_get_attribute_object" g_file_info_get_attribute_object :: 
    Ptr FileInfo ->                         -- _obj : TInterface "Gio" "FileInfo"
    CString ->                              -- attribute : TBasicType TUTF8
    IO (Ptr GObject.Object)


fileInfoGetAttributeObject ::
    (MonadIO m, FileInfoK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- attribute
    m GObject.Object
fileInfoGetAttributeObject _obj attribute = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    attribute' <- textToCString attribute
    result <- g_file_info_get_attribute_object _obj' attribute'
    checkUnexpectedReturnNULL "g_file_info_get_attribute_object" result
    result' <- (newObject GObject.Object) result
    touchManagedPtr _obj
    freeMem attribute'
    return result'

-- method FileInfo::get_attribute_status
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gio" "FileAttributeStatus"
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_get_attribute_status" g_file_info_get_attribute_status :: 
    Ptr FileInfo ->                         -- _obj : TInterface "Gio" "FileInfo"
    CString ->                              -- attribute : TBasicType TUTF8
    IO CUInt


fileInfoGetAttributeStatus ::
    (MonadIO m, FileInfoK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- attribute
    m FileAttributeStatus
fileInfoGetAttributeStatus _obj attribute = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    attribute' <- textToCString attribute
    result <- g_file_info_get_attribute_status _obj' attribute'
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr _obj
    freeMem attribute'
    return result'

-- method FileInfo::get_attribute_string
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_get_attribute_string" g_file_info_get_attribute_string :: 
    Ptr FileInfo ->                         -- _obj : TInterface "Gio" "FileInfo"
    CString ->                              -- attribute : TBasicType TUTF8
    IO CString


fileInfoGetAttributeString ::
    (MonadIO m, FileInfoK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- attribute
    m T.Text
fileInfoGetAttributeString _obj attribute = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    attribute' <- textToCString attribute
    result <- g_file_info_get_attribute_string _obj' attribute'
    checkUnexpectedReturnNULL "g_file_info_get_attribute_string" result
    result' <- cstringToText result
    touchManagedPtr _obj
    freeMem attribute'
    return result'

-- method FileInfo::get_attribute_stringv
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : 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 ->                         -- _obj : TInterface "Gio" "FileInfo"
    CString ->                              -- attribute : TBasicType TUTF8
    IO (Ptr CString)


fileInfoGetAttributeStringv ::
    (MonadIO m, FileInfoK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- attribute
    m [T.Text]
fileInfoGetAttributeStringv _obj attribute = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    attribute' <- textToCString attribute
    result <- g_file_info_get_attribute_stringv _obj' attribute'
    checkUnexpectedReturnNULL "g_file_info_get_attribute_stringv" result
    result' <- unpackZeroTerminatedUTF8CArray result
    touchManagedPtr _obj
    freeMem attribute'
    return result'

-- method FileInfo::get_attribute_type
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gio" "FileAttributeType"
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_get_attribute_type" g_file_info_get_attribute_type :: 
    Ptr FileInfo ->                         -- _obj : TInterface "Gio" "FileInfo"
    CString ->                              -- attribute : TBasicType TUTF8
    IO CUInt


fileInfoGetAttributeType ::
    (MonadIO m, FileInfoK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- attribute
    m FileAttributeType
fileInfoGetAttributeType _obj attribute = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    attribute' <- textToCString attribute
    result <- g_file_info_get_attribute_type _obj' attribute'
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr _obj
    freeMem attribute'
    return result'

-- method FileInfo::get_attribute_uint32
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUInt32
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_get_attribute_uint32" g_file_info_get_attribute_uint32 :: 
    Ptr FileInfo ->                         -- _obj : TInterface "Gio" "FileInfo"
    CString ->                              -- attribute : TBasicType TUTF8
    IO Word32


fileInfoGetAttributeUint32 ::
    (MonadIO m, FileInfoK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- attribute
    m Word32
fileInfoGetAttributeUint32 _obj attribute = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    attribute' <- textToCString attribute
    result <- g_file_info_get_attribute_uint32 _obj' attribute'
    touchManagedPtr _obj
    freeMem attribute'
    return result

-- method FileInfo::get_attribute_uint64
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUInt64
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_get_attribute_uint64" g_file_info_get_attribute_uint64 :: 
    Ptr FileInfo ->                         -- _obj : TInterface "Gio" "FileInfo"
    CString ->                              -- attribute : TBasicType TUTF8
    IO Word64


fileInfoGetAttributeUint64 ::
    (MonadIO m, FileInfoK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- attribute
    m Word64
fileInfoGetAttributeUint64 _obj attribute = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    attribute' <- textToCString attribute
    result <- g_file_info_get_attribute_uint64 _obj' attribute'
    touchManagedPtr _obj
    freeMem attribute'
    return result

-- method FileInfo::get_content_type
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_get_content_type" g_file_info_get_content_type :: 
    Ptr FileInfo ->                         -- _obj : TInterface "Gio" "FileInfo"
    IO CString


fileInfoGetContentType ::
    (MonadIO m, FileInfoK a) =>
    a ->                                    -- _obj
    m T.Text
fileInfoGetContentType _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- g_file_info_get_content_type _obj'
    checkUnexpectedReturnNULL "g_file_info_get_content_type" result
    result' <- cstringToText result
    touchManagedPtr _obj
    return result'

-- method FileInfo::get_deletion_date
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "GLib" "DateTime"
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_get_deletion_date" g_file_info_get_deletion_date :: 
    Ptr FileInfo ->                         -- _obj : TInterface "Gio" "FileInfo"
    IO (Ptr GLib.DateTime)


fileInfoGetDeletionDate ::
    (MonadIO m, FileInfoK a) =>
    a ->                                    -- _obj
    m GLib.DateTime
fileInfoGetDeletionDate _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- g_file_info_get_deletion_date _obj'
    checkUnexpectedReturnNULL "g_file_info_get_deletion_date" result
    result' <- (wrapBoxed GLib.DateTime) result
    touchManagedPtr _obj
    return result'

-- method FileInfo::get_display_name
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_get_display_name" g_file_info_get_display_name :: 
    Ptr FileInfo ->                         -- _obj : TInterface "Gio" "FileInfo"
    IO CString


fileInfoGetDisplayName ::
    (MonadIO m, FileInfoK a) =>
    a ->                                    -- _obj
    m T.Text
fileInfoGetDisplayName _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- g_file_info_get_display_name _obj'
    checkUnexpectedReturnNULL "g_file_info_get_display_name" result
    result' <- cstringToText result
    touchManagedPtr _obj
    return result'

-- method FileInfo::get_edit_name
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_get_edit_name" g_file_info_get_edit_name :: 
    Ptr FileInfo ->                         -- _obj : TInterface "Gio" "FileInfo"
    IO CString


fileInfoGetEditName ::
    (MonadIO m, FileInfoK a) =>
    a ->                                    -- _obj
    m T.Text
fileInfoGetEditName _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- g_file_info_get_edit_name _obj'
    checkUnexpectedReturnNULL "g_file_info_get_edit_name" result
    result' <- cstringToText result
    touchManagedPtr _obj
    return result'

-- method FileInfo::get_etag
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_get_etag" g_file_info_get_etag :: 
    Ptr FileInfo ->                         -- _obj : TInterface "Gio" "FileInfo"
    IO CString


fileInfoGetEtag ::
    (MonadIO m, FileInfoK a) =>
    a ->                                    -- _obj
    m T.Text
fileInfoGetEtag _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- g_file_info_get_etag _obj'
    checkUnexpectedReturnNULL "g_file_info_get_etag" result
    result' <- cstringToText result
    touchManagedPtr _obj
    return result'

-- method FileInfo::get_file_type
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gio" "FileType"
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_get_file_type" g_file_info_get_file_type :: 
    Ptr FileInfo ->                         -- _obj : TInterface "Gio" "FileInfo"
    IO CUInt


fileInfoGetFileType ::
    (MonadIO m, FileInfoK a) =>
    a ->                                    -- _obj
    m FileType
fileInfoGetFileType _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- g_file_info_get_file_type _obj'
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr _obj
    return result'

-- method FileInfo::get_icon
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gio" "Icon"
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_get_icon" g_file_info_get_icon :: 
    Ptr FileInfo ->                         -- _obj : TInterface "Gio" "FileInfo"
    IO (Ptr Icon)


fileInfoGetIcon ::
    (MonadIO m, FileInfoK a) =>
    a ->                                    -- _obj
    m Icon
fileInfoGetIcon _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- g_file_info_get_icon _obj'
    checkUnexpectedReturnNULL "g_file_info_get_icon" result
    result' <- (newObject Icon) result
    touchManagedPtr _obj
    return result'

-- method FileInfo::get_is_backup
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_get_is_backup" g_file_info_get_is_backup :: 
    Ptr FileInfo ->                         -- _obj : TInterface "Gio" "FileInfo"
    IO CInt


fileInfoGetIsBackup ::
    (MonadIO m, FileInfoK a) =>
    a ->                                    -- _obj
    m Bool
fileInfoGetIsBackup _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- g_file_info_get_is_backup _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method FileInfo::get_is_hidden
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_get_is_hidden" g_file_info_get_is_hidden :: 
    Ptr FileInfo ->                         -- _obj : TInterface "Gio" "FileInfo"
    IO CInt


fileInfoGetIsHidden ::
    (MonadIO m, FileInfoK a) =>
    a ->                                    -- _obj
    m Bool
fileInfoGetIsHidden _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- g_file_info_get_is_hidden _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method FileInfo::get_is_symlink
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_get_is_symlink" g_file_info_get_is_symlink :: 
    Ptr FileInfo ->                         -- _obj : TInterface "Gio" "FileInfo"
    IO CInt


fileInfoGetIsSymlink ::
    (MonadIO m, FileInfoK a) =>
    a ->                                    -- _obj
    m Bool
fileInfoGetIsSymlink _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- g_file_info_get_is_symlink _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method FileInfo::get_modification_time
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "result", argType = TInterface "GLib" "TimeVal", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_get_modification_time" g_file_info_get_modification_time :: 
    Ptr FileInfo ->                         -- _obj : TInterface "Gio" "FileInfo"
    Ptr GLib.TimeVal ->                     -- result : TInterface "GLib" "TimeVal"
    IO ()


fileInfoGetModificationTime ::
    (MonadIO m, FileInfoK a) =>
    a ->                                    -- _obj
    m (GLib.TimeVal)
fileInfoGetModificationTime _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result_ <- callocBytes 16 :: IO (Ptr GLib.TimeVal)
    g_file_info_get_modification_time _obj' result_
    result_' <- (wrapPtr GLib.TimeVal) result_
    touchManagedPtr _obj
    return result_'

-- method FileInfo::get_name
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_get_name" g_file_info_get_name :: 
    Ptr FileInfo ->                         -- _obj : TInterface "Gio" "FileInfo"
    IO CString


fileInfoGetName ::
    (MonadIO m, FileInfoK a) =>
    a ->                                    -- _obj
    m T.Text
fileInfoGetName _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- g_file_info_get_name _obj'
    checkUnexpectedReturnNULL "g_file_info_get_name" result
    result' <- cstringToText result
    touchManagedPtr _obj
    return result'

-- method FileInfo::get_size
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt64
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_get_size" g_file_info_get_size :: 
    Ptr FileInfo ->                         -- _obj : TInterface "Gio" "FileInfo"
    IO Int64


fileInfoGetSize ::
    (MonadIO m, FileInfoK a) =>
    a ->                                    -- _obj
    m Int64
fileInfoGetSize _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- g_file_info_get_size _obj'
    touchManagedPtr _obj
    return result

-- method FileInfo::get_sort_order
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_get_sort_order" g_file_info_get_sort_order :: 
    Ptr FileInfo ->                         -- _obj : TInterface "Gio" "FileInfo"
    IO Int32


fileInfoGetSortOrder ::
    (MonadIO m, FileInfoK a) =>
    a ->                                    -- _obj
    m Int32
fileInfoGetSortOrder _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- g_file_info_get_sort_order _obj'
    touchManagedPtr _obj
    return result

-- method FileInfo::get_symbolic_icon
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gio" "Icon"
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_get_symbolic_icon" g_file_info_get_symbolic_icon :: 
    Ptr FileInfo ->                         -- _obj : TInterface "Gio" "FileInfo"
    IO (Ptr Icon)


fileInfoGetSymbolicIcon ::
    (MonadIO m, FileInfoK a) =>
    a ->                                    -- _obj
    m Icon
fileInfoGetSymbolicIcon _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- g_file_info_get_symbolic_icon _obj'
    checkUnexpectedReturnNULL "g_file_info_get_symbolic_icon" result
    result' <- (newObject Icon) result
    touchManagedPtr _obj
    return result'

-- method FileInfo::get_symlink_target
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_get_symlink_target" g_file_info_get_symlink_target :: 
    Ptr FileInfo ->                         -- _obj : TInterface "Gio" "FileInfo"
    IO CString


fileInfoGetSymlinkTarget ::
    (MonadIO m, FileInfoK a) =>
    a ->                                    -- _obj
    m T.Text
fileInfoGetSymlinkTarget _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- g_file_info_get_symlink_target _obj'
    checkUnexpectedReturnNULL "g_file_info_get_symlink_target" result
    result' <- cstringToText result
    touchManagedPtr _obj
    return result'

-- method FileInfo::has_attribute
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_has_attribute" g_file_info_has_attribute :: 
    Ptr FileInfo ->                         -- _obj : TInterface "Gio" "FileInfo"
    CString ->                              -- attribute : TBasicType TUTF8
    IO CInt


fileInfoHasAttribute ::
    (MonadIO m, FileInfoK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- attribute
    m Bool
fileInfoHasAttribute _obj attribute = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    attribute' <- textToCString attribute
    result <- g_file_info_has_attribute _obj' attribute'
    let result' = (/= 0) result
    touchManagedPtr _obj
    freeMem attribute'
    return result'

-- method FileInfo::has_namespace
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "name_space", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "name_space", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_has_namespace" g_file_info_has_namespace :: 
    Ptr FileInfo ->                         -- _obj : TInterface "Gio" "FileInfo"
    CString ->                              -- name_space : TBasicType TUTF8
    IO CInt


fileInfoHasNamespace ::
    (MonadIO m, FileInfoK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- name_space
    m Bool
fileInfoHasNamespace _obj name_space = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    name_space' <- textToCString name_space
    result <- g_file_info_has_namespace _obj' name_space'
    let result' = (/= 0) result
    touchManagedPtr _obj
    freeMem name_space'
    return result'

-- method FileInfo::list_attributes
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "name_space", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "name_space", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : 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 ->                         -- _obj : TInterface "Gio" "FileInfo"
    CString ->                              -- name_space : TBasicType TUTF8
    IO (Ptr CString)


fileInfoListAttributes ::
    (MonadIO m, FileInfoK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- name_space
    m [T.Text]
fileInfoListAttributes _obj name_space = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    name_space' <- textToCString name_space
    result <- g_file_info_list_attributes _obj' name_space'
    checkUnexpectedReturnNULL "g_file_info_list_attributes" result
    result' <- unpackZeroTerminatedUTF8CArray result
    mapZeroTerminatedCArray freeMem result
    freeMem result
    touchManagedPtr _obj
    freeMem name_space'
    return result'

-- method FileInfo::remove_attribute
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_remove_attribute" g_file_info_remove_attribute :: 
    Ptr FileInfo ->                         -- _obj : TInterface "Gio" "FileInfo"
    CString ->                              -- attribute : TBasicType TUTF8
    IO ()


fileInfoRemoveAttribute ::
    (MonadIO m, FileInfoK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- attribute
    m ()
fileInfoRemoveAttribute _obj attribute = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    attribute' <- textToCString attribute
    g_file_info_remove_attribute _obj' attribute'
    touchManagedPtr _obj
    freeMem attribute'
    return ()

-- method FileInfo::set_attribute
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "type", argType = TInterface "Gio" "FileAttributeType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "value_p", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "type", argType = TInterface "Gio" "FileAttributeType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "value_p", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_set_attribute" g_file_info_set_attribute :: 
    Ptr FileInfo ->                         -- _obj : TInterface "Gio" "FileInfo"
    CString ->                              -- attribute : TBasicType TUTF8
    CUInt ->                                -- type : TInterface "Gio" "FileAttributeType"
    Ptr () ->                               -- value_p : TBasicType TVoid
    IO ()


fileInfoSetAttribute ::
    (MonadIO m, FileInfoK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- attribute
    FileAttributeType ->                    -- type
    Ptr () ->                               -- value_p
    m ()
fileInfoSetAttribute _obj attribute type_ value_p = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    attribute' <- textToCString attribute
    let type_' = (fromIntegral . fromEnum) type_
    g_file_info_set_attribute _obj' attribute' type_' value_p
    touchManagedPtr _obj
    freeMem attribute'
    return ()

-- method FileInfo::set_attribute_boolean
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attr_value", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attr_value", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_set_attribute_boolean" g_file_info_set_attribute_boolean :: 
    Ptr FileInfo ->                         -- _obj : TInterface "Gio" "FileInfo"
    CString ->                              -- attribute : TBasicType TUTF8
    CInt ->                                 -- attr_value : TBasicType TBoolean
    IO ()


fileInfoSetAttributeBoolean ::
    (MonadIO m, FileInfoK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- attribute
    Bool ->                                 -- attr_value
    m ()
fileInfoSetAttributeBoolean _obj attribute attr_value = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    attribute' <- textToCString attribute
    let attr_value' = (fromIntegral . fromEnum) attr_value
    g_file_info_set_attribute_boolean _obj' attribute' attr_value'
    touchManagedPtr _obj
    freeMem attribute'
    return ()

-- method FileInfo::set_attribute_byte_string
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attr_value", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attr_value", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_set_attribute_byte_string" g_file_info_set_attribute_byte_string :: 
    Ptr FileInfo ->                         -- _obj : TInterface "Gio" "FileInfo"
    CString ->                              -- attribute : TBasicType TUTF8
    CString ->                              -- attr_value : TBasicType TUTF8
    IO ()


fileInfoSetAttributeByteString ::
    (MonadIO m, FileInfoK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- attribute
    T.Text ->                               -- attr_value
    m ()
fileInfoSetAttributeByteString _obj attribute attr_value = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    attribute' <- textToCString attribute
    attr_value' <- textToCString attr_value
    g_file_info_set_attribute_byte_string _obj' attribute' attr_value'
    touchManagedPtr _obj
    freeMem attribute'
    freeMem attr_value'
    return ()

-- method FileInfo::set_attribute_int32
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attr_value", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attr_value", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_set_attribute_int32" g_file_info_set_attribute_int32 :: 
    Ptr FileInfo ->                         -- _obj : TInterface "Gio" "FileInfo"
    CString ->                              -- attribute : TBasicType TUTF8
    Int32 ->                                -- attr_value : TBasicType TInt32
    IO ()


fileInfoSetAttributeInt32 ::
    (MonadIO m, FileInfoK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- attribute
    Int32 ->                                -- attr_value
    m ()
fileInfoSetAttributeInt32 _obj attribute attr_value = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    attribute' <- textToCString attribute
    g_file_info_set_attribute_int32 _obj' attribute' attr_value
    touchManagedPtr _obj
    freeMem attribute'
    return ()

-- method FileInfo::set_attribute_int64
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attr_value", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attr_value", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_set_attribute_int64" g_file_info_set_attribute_int64 :: 
    Ptr FileInfo ->                         -- _obj : TInterface "Gio" "FileInfo"
    CString ->                              -- attribute : TBasicType TUTF8
    Int64 ->                                -- attr_value : TBasicType TInt64
    IO ()


fileInfoSetAttributeInt64 ::
    (MonadIO m, FileInfoK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- attribute
    Int64 ->                                -- attr_value
    m ()
fileInfoSetAttributeInt64 _obj attribute attr_value = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    attribute' <- textToCString attribute
    g_file_info_set_attribute_int64 _obj' attribute' attr_value
    touchManagedPtr _obj
    freeMem attribute'
    return ()

-- method FileInfo::set_attribute_mask
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "mask", argType = TInterface "Gio" "FileAttributeMatcher", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "mask", argType = TInterface "Gio" "FileAttributeMatcher", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_set_attribute_mask" g_file_info_set_attribute_mask :: 
    Ptr FileInfo ->                         -- _obj : TInterface "Gio" "FileInfo"
    Ptr FileAttributeMatcher ->             -- mask : TInterface "Gio" "FileAttributeMatcher"
    IO ()


fileInfoSetAttributeMask ::
    (MonadIO m, FileInfoK a) =>
    a ->                                    -- _obj
    FileAttributeMatcher ->                 -- mask
    m ()
fileInfoSetAttributeMask _obj mask = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let mask' = unsafeManagedPtrGetPtr mask
    g_file_info_set_attribute_mask _obj' mask'
    touchManagedPtr _obj
    touchManagedPtr mask
    return ()

-- method FileInfo::set_attribute_object
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attr_value", argType = TInterface "GObject" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attr_value", argType = TInterface "GObject" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_set_attribute_object" g_file_info_set_attribute_object :: 
    Ptr FileInfo ->                         -- _obj : TInterface "Gio" "FileInfo"
    CString ->                              -- attribute : TBasicType TUTF8
    Ptr GObject.Object ->                   -- attr_value : TInterface "GObject" "Object"
    IO ()


fileInfoSetAttributeObject ::
    (MonadIO m, FileInfoK a, GObject.ObjectK b) =>
    a ->                                    -- _obj
    T.Text ->                               -- attribute
    b ->                                    -- attr_value
    m ()
fileInfoSetAttributeObject _obj attribute attr_value = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    attribute' <- textToCString attribute
    let attr_value' = unsafeManagedPtrCastPtr attr_value
    g_file_info_set_attribute_object _obj' attribute' attr_value'
    touchManagedPtr _obj
    touchManagedPtr attr_value
    freeMem attribute'
    return ()

-- method FileInfo::set_attribute_status
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "status", argType = TInterface "Gio" "FileAttributeStatus", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "status", argType = TInterface "Gio" "FileAttributeStatus", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_set_attribute_status" g_file_info_set_attribute_status :: 
    Ptr FileInfo ->                         -- _obj : TInterface "Gio" "FileInfo"
    CString ->                              -- attribute : TBasicType TUTF8
    CUInt ->                                -- status : TInterface "Gio" "FileAttributeStatus"
    IO CInt


fileInfoSetAttributeStatus ::
    (MonadIO m, FileInfoK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- attribute
    FileAttributeStatus ->                  -- status
    m Bool
fileInfoSetAttributeStatus _obj attribute status = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    attribute' <- textToCString attribute
    let status' = (fromIntegral . fromEnum) status
    result <- g_file_info_set_attribute_status _obj' attribute' status'
    let result' = (/= 0) result
    touchManagedPtr _obj
    freeMem attribute'
    return result'

-- method FileInfo::set_attribute_string
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attr_value", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attr_value", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_set_attribute_string" g_file_info_set_attribute_string :: 
    Ptr FileInfo ->                         -- _obj : TInterface "Gio" "FileInfo"
    CString ->                              -- attribute : TBasicType TUTF8
    CString ->                              -- attr_value : TBasicType TUTF8
    IO ()


fileInfoSetAttributeString ::
    (MonadIO m, FileInfoK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- attribute
    T.Text ->                               -- attr_value
    m ()
fileInfoSetAttributeString _obj attribute attr_value = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    attribute' <- textToCString attribute
    attr_value' <- textToCString attr_value
    g_file_info_set_attribute_string _obj' attribute' attr_value'
    touchManagedPtr _obj
    freeMem attribute'
    freeMem attr_value'
    return ()

-- method FileInfo::set_attribute_stringv
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attr_value", argType = TCArray False (-1) (-1) (TBasicType TUTF8), direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attr_value", argType = TCArray False (-1) (-1) (TBasicType TUTF8), direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_set_attribute_stringv" g_file_info_set_attribute_stringv :: 
    Ptr FileInfo ->                         -- _obj : TInterface "Gio" "FileInfo"
    CString ->                              -- attribute : TBasicType TUTF8
    Ptr CString ->                          -- attr_value : TCArray False (-1) (-1) (TBasicType TUTF8)
    IO ()


fileInfoSetAttributeStringv ::
    (MonadIO m, FileInfoK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- attribute
    Ptr CString ->                          -- attr_value
    m ()
fileInfoSetAttributeStringv _obj attribute attr_value = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    attribute' <- textToCString attribute
    g_file_info_set_attribute_stringv _obj' attribute' attr_value
    touchManagedPtr _obj
    freeMem attribute'
    return ()

-- method FileInfo::set_attribute_uint32
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attr_value", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attr_value", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_set_attribute_uint32" g_file_info_set_attribute_uint32 :: 
    Ptr FileInfo ->                         -- _obj : TInterface "Gio" "FileInfo"
    CString ->                              -- attribute : TBasicType TUTF8
    Word32 ->                               -- attr_value : TBasicType TUInt32
    IO ()


fileInfoSetAttributeUint32 ::
    (MonadIO m, FileInfoK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- attribute
    Word32 ->                               -- attr_value
    m ()
fileInfoSetAttributeUint32 _obj attribute attr_value = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    attribute' <- textToCString attribute
    g_file_info_set_attribute_uint32 _obj' attribute' attr_value
    touchManagedPtr _obj
    freeMem attribute'
    return ()

-- method FileInfo::set_attribute_uint64
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attr_value", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attribute", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attr_value", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_set_attribute_uint64" g_file_info_set_attribute_uint64 :: 
    Ptr FileInfo ->                         -- _obj : TInterface "Gio" "FileInfo"
    CString ->                              -- attribute : TBasicType TUTF8
    Word64 ->                               -- attr_value : TBasicType TUInt64
    IO ()


fileInfoSetAttributeUint64 ::
    (MonadIO m, FileInfoK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- attribute
    Word64 ->                               -- attr_value
    m ()
fileInfoSetAttributeUint64 _obj attribute attr_value = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    attribute' <- textToCString attribute
    g_file_info_set_attribute_uint64 _obj' attribute' attr_value
    touchManagedPtr _obj
    freeMem attribute'
    return ()

-- method FileInfo::set_content_type
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "content_type", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "content_type", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_set_content_type" g_file_info_set_content_type :: 
    Ptr FileInfo ->                         -- _obj : TInterface "Gio" "FileInfo"
    CString ->                              -- content_type : TBasicType TUTF8
    IO ()


fileInfoSetContentType ::
    (MonadIO m, FileInfoK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- content_type
    m ()
fileInfoSetContentType _obj content_type = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    content_type' <- textToCString content_type
    g_file_info_set_content_type _obj' content_type'
    touchManagedPtr _obj
    freeMem content_type'
    return ()

-- method FileInfo::set_display_name
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "display_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "display_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_set_display_name" g_file_info_set_display_name :: 
    Ptr FileInfo ->                         -- _obj : TInterface "Gio" "FileInfo"
    CString ->                              -- display_name : TBasicType TUTF8
    IO ()


fileInfoSetDisplayName ::
    (MonadIO m, FileInfoK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- display_name
    m ()
fileInfoSetDisplayName _obj display_name = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    display_name' <- textToCString display_name
    g_file_info_set_display_name _obj' display_name'
    touchManagedPtr _obj
    freeMem display_name'
    return ()

-- method FileInfo::set_edit_name
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "edit_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "edit_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_set_edit_name" g_file_info_set_edit_name :: 
    Ptr FileInfo ->                         -- _obj : TInterface "Gio" "FileInfo"
    CString ->                              -- edit_name : TBasicType TUTF8
    IO ()


fileInfoSetEditName ::
    (MonadIO m, FileInfoK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- edit_name
    m ()
fileInfoSetEditName _obj edit_name = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    edit_name' <- textToCString edit_name
    g_file_info_set_edit_name _obj' edit_name'
    touchManagedPtr _obj
    freeMem edit_name'
    return ()

-- method FileInfo::set_file_type
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "type", argType = TInterface "Gio" "FileType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "type", argType = TInterface "Gio" "FileType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_set_file_type" g_file_info_set_file_type :: 
    Ptr FileInfo ->                         -- _obj : TInterface "Gio" "FileInfo"
    CUInt ->                                -- type : TInterface "Gio" "FileType"
    IO ()


fileInfoSetFileType ::
    (MonadIO m, FileInfoK a) =>
    a ->                                    -- _obj
    FileType ->                             -- type
    m ()
fileInfoSetFileType _obj type_ = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let type_' = (fromIntegral . fromEnum) type_
    g_file_info_set_file_type _obj' type_'
    touchManagedPtr _obj
    return ()

-- method FileInfo::set_icon
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "icon", argType = TInterface "Gio" "Icon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "icon", argType = TInterface "Gio" "Icon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_set_icon" g_file_info_set_icon :: 
    Ptr FileInfo ->                         -- _obj : TInterface "Gio" "FileInfo"
    Ptr Icon ->                             -- icon : TInterface "Gio" "Icon"
    IO ()


fileInfoSetIcon ::
    (MonadIO m, FileInfoK a, IconK b) =>
    a ->                                    -- _obj
    b ->                                    -- icon
    m ()
fileInfoSetIcon _obj icon = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let icon' = unsafeManagedPtrCastPtr icon
    g_file_info_set_icon _obj' icon'
    touchManagedPtr _obj
    touchManagedPtr icon
    return ()

-- method FileInfo::set_is_hidden
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "is_hidden", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "is_hidden", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_set_is_hidden" g_file_info_set_is_hidden :: 
    Ptr FileInfo ->                         -- _obj : TInterface "Gio" "FileInfo"
    CInt ->                                 -- is_hidden : TBasicType TBoolean
    IO ()


fileInfoSetIsHidden ::
    (MonadIO m, FileInfoK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- is_hidden
    m ()
fileInfoSetIsHidden _obj is_hidden = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let is_hidden' = (fromIntegral . fromEnum) is_hidden
    g_file_info_set_is_hidden _obj' is_hidden'
    touchManagedPtr _obj
    return ()

-- method FileInfo::set_is_symlink
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "is_symlink", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "is_symlink", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_set_is_symlink" g_file_info_set_is_symlink :: 
    Ptr FileInfo ->                         -- _obj : TInterface "Gio" "FileInfo"
    CInt ->                                 -- is_symlink : TBasicType TBoolean
    IO ()


fileInfoSetIsSymlink ::
    (MonadIO m, FileInfoK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- is_symlink
    m ()
fileInfoSetIsSymlink _obj is_symlink = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let is_symlink' = (fromIntegral . fromEnum) is_symlink
    g_file_info_set_is_symlink _obj' is_symlink'
    touchManagedPtr _obj
    return ()

-- method FileInfo::set_modification_time
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "mtime", argType = TInterface "GLib" "TimeVal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "mtime", argType = TInterface "GLib" "TimeVal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_set_modification_time" g_file_info_set_modification_time :: 
    Ptr FileInfo ->                         -- _obj : TInterface "Gio" "FileInfo"
    Ptr GLib.TimeVal ->                     -- mtime : TInterface "GLib" "TimeVal"
    IO ()


fileInfoSetModificationTime ::
    (MonadIO m, FileInfoK a) =>
    a ->                                    -- _obj
    GLib.TimeVal ->                         -- mtime
    m ()
fileInfoSetModificationTime _obj mtime = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let mtime' = unsafeManagedPtrGetPtr mtime
    g_file_info_set_modification_time _obj' mtime'
    touchManagedPtr _obj
    touchManagedPtr mtime
    return ()

-- method FileInfo::set_name
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_set_name" g_file_info_set_name :: 
    Ptr FileInfo ->                         -- _obj : TInterface "Gio" "FileInfo"
    CString ->                              -- name : TBasicType TUTF8
    IO ()


fileInfoSetName ::
    (MonadIO m, FileInfoK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- name
    m ()
fileInfoSetName _obj name = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    name' <- textToCString name
    g_file_info_set_name _obj' name'
    touchManagedPtr _obj
    freeMem name'
    return ()

-- method FileInfo::set_size
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "size", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "size", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_set_size" g_file_info_set_size :: 
    Ptr FileInfo ->                         -- _obj : TInterface "Gio" "FileInfo"
    Int64 ->                                -- size : TBasicType TInt64
    IO ()


fileInfoSetSize ::
    (MonadIO m, FileInfoK a) =>
    a ->                                    -- _obj
    Int64 ->                                -- size
    m ()
fileInfoSetSize _obj size = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    g_file_info_set_size _obj' size
    touchManagedPtr _obj
    return ()

-- method FileInfo::set_sort_order
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "sort_order", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "sort_order", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_set_sort_order" g_file_info_set_sort_order :: 
    Ptr FileInfo ->                         -- _obj : TInterface "Gio" "FileInfo"
    Int32 ->                                -- sort_order : TBasicType TInt32
    IO ()


fileInfoSetSortOrder ::
    (MonadIO m, FileInfoK a) =>
    a ->                                    -- _obj
    Int32 ->                                -- sort_order
    m ()
fileInfoSetSortOrder _obj sort_order = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    g_file_info_set_sort_order _obj' sort_order
    touchManagedPtr _obj
    return ()

-- method FileInfo::set_symbolic_icon
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "icon", argType = TInterface "Gio" "Icon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "icon", argType = TInterface "Gio" "Icon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_set_symbolic_icon" g_file_info_set_symbolic_icon :: 
    Ptr FileInfo ->                         -- _obj : TInterface "Gio" "FileInfo"
    Ptr Icon ->                             -- icon : TInterface "Gio" "Icon"
    IO ()


fileInfoSetSymbolicIcon ::
    (MonadIO m, FileInfoK a, IconK b) =>
    a ->                                    -- _obj
    b ->                                    -- icon
    m ()
fileInfoSetSymbolicIcon _obj icon = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let icon' = unsafeManagedPtrCastPtr icon
    g_file_info_set_symbolic_icon _obj' icon'
    touchManagedPtr _obj
    touchManagedPtr icon
    return ()

-- method FileInfo::set_symlink_target
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "symlink_target", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "symlink_target", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_set_symlink_target" g_file_info_set_symlink_target :: 
    Ptr FileInfo ->                         -- _obj : TInterface "Gio" "FileInfo"
    CString ->                              -- symlink_target : TBasicType TUTF8
    IO ()


fileInfoSetSymlinkTarget ::
    (MonadIO m, FileInfoK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- symlink_target
    m ()
fileInfoSetSymlinkTarget _obj symlink_target = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    symlink_target' <- textToCString symlink_target
    g_file_info_set_symlink_target _obj' symlink_target'
    touchManagedPtr _obj
    freeMem symlink_target'
    return ()

-- method FileInfo::unset_attribute_mask
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "FileInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_file_info_unset_attribute_mask" g_file_info_unset_attribute_mask :: 
    Ptr FileInfo ->                         -- _obj : TInterface "Gio" "FileInfo"
    IO ()


fileInfoUnsetAttributeMask ::
    (MonadIO m, FileInfoK a) =>
    a ->                                    -- _obj
    m ()
fileInfoUnsetAttributeMask _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    g_file_info_unset_attribute_mask _obj'
    touchManagedPtr _obj
    return ()