packages feed

gi-gio-0.2.46.15: GI/Gio/Structs/FileAttributeInfoList.hs


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

Acts as a lightweight registry for possible valid file attributes.
The registry stores Key-Value pair formats as #GFileAttributeInfos.
-}

module GI.Gio.Structs.FileAttributeInfoList
    ( 

-- * Exported types
    FileAttributeInfoList(..)               ,
    newZeroFileAttributeInfoList            ,
    noFileAttributeInfoList                 ,


 -- * Methods
-- ** fileAttributeInfoListAdd
    FileAttributeInfoListAddMethodInfo      ,
    fileAttributeInfoListAdd                ,


-- ** fileAttributeInfoListDup
    FileAttributeInfoListDupMethodInfo      ,
    fileAttributeInfoListDup                ,


-- ** fileAttributeInfoListLookup
    FileAttributeInfoListLookupMethodInfo   ,
    fileAttributeInfoListLookup             ,


-- ** fileAttributeInfoListNew
    fileAttributeInfoListNew                ,


-- ** fileAttributeInfoListRef
    FileAttributeInfoListRefMethodInfo      ,
    fileAttributeInfoListRef                ,


-- ** fileAttributeInfoListUnref
    FileAttributeInfoListUnrefMethodInfo    ,
    fileAttributeInfoListUnref              ,




 -- * Properties
-- ** Infos
    fileAttributeInfoListClearInfos         ,
    fileAttributeInfoListInfos              ,
    fileAttributeInfoListReadInfos          ,
    fileAttributeInfoListWriteInfos         ,


-- ** NInfos
    fileAttributeInfoListNInfos             ,
    fileAttributeInfoListReadNInfos         ,
    fileAttributeInfoListWriteNInfos        ,




    ) where

import Data.GI.Base.ShortPrelude

import qualified Data.GI.Base.Attributes as GI.Attributes
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

newtype FileAttributeInfoList = FileAttributeInfoList (ForeignPtr FileAttributeInfoList)
foreign import ccall "g_file_attribute_info_list_get_type" c_g_file_attribute_info_list_get_type :: 
    IO GType

instance BoxedObject FileAttributeInfoList where
    boxedType _ = c_g_file_attribute_info_list_get_type

-- | Construct a `FileAttributeInfoList` struct initialized to zero.
newZeroFileAttributeInfoList :: MonadIO m => m FileAttributeInfoList
newZeroFileAttributeInfoList = liftIO $ callocBoxedBytes 16 >>= wrapBoxed FileAttributeInfoList

instance tag ~ 'AttrSet => Constructible FileAttributeInfoList tag where
    new _ attrs = do
        o <- newZeroFileAttributeInfoList
        GI.Attributes.set o attrs
        return o


noFileAttributeInfoList :: Maybe FileAttributeInfoList
noFileAttributeInfoList = Nothing

fileAttributeInfoListReadInfos :: MonadIO m => FileAttributeInfoList -> m (Maybe FileAttributeInfo)
fileAttributeInfoListReadInfos s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO (Ptr FileAttributeInfo)
    result <- convertIfNonNull val $ \val' -> do
        val'' <- (newPtr FileAttributeInfo) val'
        return val''
    return result

fileAttributeInfoListWriteInfos :: MonadIO m => FileAttributeInfoList -> Ptr FileAttributeInfo -> m ()
fileAttributeInfoListWriteInfos s val = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 0) (val :: Ptr FileAttributeInfo)

fileAttributeInfoListClearInfos :: MonadIO m => FileAttributeInfoList -> m ()
fileAttributeInfoListClearInfos s = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 0) (nullPtr :: Ptr FileAttributeInfo)

data FileAttributeInfoListInfosFieldInfo
instance AttrInfo FileAttributeInfoListInfosFieldInfo where
    type AttrAllowedOps FileAttributeInfoListInfosFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint FileAttributeInfoListInfosFieldInfo = (~) (Ptr FileAttributeInfo)
    type AttrBaseTypeConstraint FileAttributeInfoListInfosFieldInfo = (~) FileAttributeInfoList
    type AttrGetType FileAttributeInfoListInfosFieldInfo = Maybe FileAttributeInfo
    type AttrLabel FileAttributeInfoListInfosFieldInfo = "infos"
    attrGet _ = fileAttributeInfoListReadInfos
    attrSet _ = fileAttributeInfoListWriteInfos
    attrConstruct = undefined
    attrClear _ = fileAttributeInfoListClearInfos

fileAttributeInfoListInfos :: AttrLabelProxy "infos"
fileAttributeInfoListInfos = AttrLabelProxy


fileAttributeInfoListReadNInfos :: MonadIO m => FileAttributeInfoList -> m Int32
fileAttributeInfoListReadNInfos s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 8) :: IO Int32
    return val

fileAttributeInfoListWriteNInfos :: MonadIO m => FileAttributeInfoList -> Int32 -> m ()
fileAttributeInfoListWriteNInfos s val = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 8) (val :: Int32)

data FileAttributeInfoListNInfosFieldInfo
instance AttrInfo FileAttributeInfoListNInfosFieldInfo where
    type AttrAllowedOps FileAttributeInfoListNInfosFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint FileAttributeInfoListNInfosFieldInfo = (~) Int32
    type AttrBaseTypeConstraint FileAttributeInfoListNInfosFieldInfo = (~) FileAttributeInfoList
    type AttrGetType FileAttributeInfoListNInfosFieldInfo = Int32
    type AttrLabel FileAttributeInfoListNInfosFieldInfo = "n_infos"
    attrGet _ = fileAttributeInfoListReadNInfos
    attrSet _ = fileAttributeInfoListWriteNInfos
    attrConstruct = undefined
    attrClear _ = undefined

fileAttributeInfoListNInfos :: AttrLabelProxy "nInfos"
fileAttributeInfoListNInfos = AttrLabelProxy



type instance AttributeList FileAttributeInfoList = FileAttributeInfoListAttributeList
type FileAttributeInfoListAttributeList = ('[ '("infos", FileAttributeInfoListInfosFieldInfo), '("nInfos", FileAttributeInfoListNInfosFieldInfo)] :: [(Symbol, *)])

-- method FileAttributeInfoList::new
-- method type : Constructor
-- Args : []
-- Lengths : []
-- returnType : Just (TInterface "Gio" "FileAttributeInfoList")
-- throws : False
-- Skip return : False

foreign import ccall "g_file_attribute_info_list_new" g_file_attribute_info_list_new :: 
    IO (Ptr FileAttributeInfoList)


fileAttributeInfoListNew ::
    (MonadIO m) =>
    m FileAttributeInfoList                 -- result
fileAttributeInfoListNew  = liftIO $ do
    result <- g_file_attribute_info_list_new
    checkUnexpectedReturnNULL "g_file_attribute_info_list_new" result
    result' <- (wrapBoxed FileAttributeInfoList) result
    return result'

-- method FileAttributeInfoList::add
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gio" "FileAttributeInfoList", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "type", argType = TInterface "Gio" "FileAttributeType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "flags", argType = TInterface "Gio" "FileAttributeInfoFlags", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "g_file_attribute_info_list_add" g_file_attribute_info_list_add :: 
    Ptr FileAttributeInfoList ->            -- _obj : TInterface "Gio" "FileAttributeInfoList"
    CString ->                              -- name : TBasicType TUTF8
    CUInt ->                                -- type : TInterface "Gio" "FileAttributeType"
    CUInt ->                                -- flags : TInterface "Gio" "FileAttributeInfoFlags"
    IO ()


fileAttributeInfoListAdd ::
    (MonadIO m) =>
    FileAttributeInfoList                   -- _obj
    -> T.Text                               -- name
    -> FileAttributeType                    -- type_
    -> [FileAttributeInfoFlags]             -- flags
    -> m ()                                 -- result
fileAttributeInfoListAdd _obj name type_ flags = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    name' <- textToCString name
    let type_' = (fromIntegral . fromEnum) type_
    let flags' = gflagsToWord flags
    g_file_attribute_info_list_add _obj' name' type_' flags'
    touchManagedPtr _obj
    freeMem name'
    return ()

data FileAttributeInfoListAddMethodInfo
instance (signature ~ (T.Text -> FileAttributeType -> [FileAttributeInfoFlags] -> m ()), MonadIO m) => MethodInfo FileAttributeInfoListAddMethodInfo FileAttributeInfoList signature where
    overloadedMethod _ = fileAttributeInfoListAdd

-- method FileAttributeInfoList::dup
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gio" "FileAttributeInfoList", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface "Gio" "FileAttributeInfoList")
-- throws : False
-- Skip return : False

foreign import ccall "g_file_attribute_info_list_dup" g_file_attribute_info_list_dup :: 
    Ptr FileAttributeInfoList ->            -- _obj : TInterface "Gio" "FileAttributeInfoList"
    IO (Ptr FileAttributeInfoList)


fileAttributeInfoListDup ::
    (MonadIO m) =>
    FileAttributeInfoList                   -- _obj
    -> m FileAttributeInfoList              -- result
fileAttributeInfoListDup _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- g_file_attribute_info_list_dup _obj'
    checkUnexpectedReturnNULL "g_file_attribute_info_list_dup" result
    result' <- (wrapBoxed FileAttributeInfoList) result
    touchManagedPtr _obj
    return result'

data FileAttributeInfoListDupMethodInfo
instance (signature ~ (m FileAttributeInfoList), MonadIO m) => MethodInfo FileAttributeInfoListDupMethodInfo FileAttributeInfoList signature where
    overloadedMethod _ = fileAttributeInfoListDup

-- method FileAttributeInfoList::lookup
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gio" "FileAttributeInfoList", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface "Gio" "FileAttributeInfo")
-- throws : False
-- Skip return : False

foreign import ccall "g_file_attribute_info_list_lookup" g_file_attribute_info_list_lookup :: 
    Ptr FileAttributeInfoList ->            -- _obj : TInterface "Gio" "FileAttributeInfoList"
    CString ->                              -- name : TBasicType TUTF8
    IO (Ptr FileAttributeInfo)


fileAttributeInfoListLookup ::
    (MonadIO m) =>
    FileAttributeInfoList                   -- _obj
    -> T.Text                               -- name
    -> m FileAttributeInfo                  -- result
fileAttributeInfoListLookup _obj name = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    name' <- textToCString name
    result <- g_file_attribute_info_list_lookup _obj' name'
    checkUnexpectedReturnNULL "g_file_attribute_info_list_lookup" result
    result' <- (newPtr FileAttributeInfo) result
    touchManagedPtr _obj
    freeMem name'
    return result'

data FileAttributeInfoListLookupMethodInfo
instance (signature ~ (T.Text -> m FileAttributeInfo), MonadIO m) => MethodInfo FileAttributeInfoListLookupMethodInfo FileAttributeInfoList signature where
    overloadedMethod _ = fileAttributeInfoListLookup

-- method FileAttributeInfoList::ref
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gio" "FileAttributeInfoList", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface "Gio" "FileAttributeInfoList")
-- throws : False
-- Skip return : False

foreign import ccall "g_file_attribute_info_list_ref" g_file_attribute_info_list_ref :: 
    Ptr FileAttributeInfoList ->            -- _obj : TInterface "Gio" "FileAttributeInfoList"
    IO (Ptr FileAttributeInfoList)


fileAttributeInfoListRef ::
    (MonadIO m) =>
    FileAttributeInfoList                   -- _obj
    -> m FileAttributeInfoList              -- result
fileAttributeInfoListRef _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- g_file_attribute_info_list_ref _obj'
    checkUnexpectedReturnNULL "g_file_attribute_info_list_ref" result
    result' <- (wrapBoxed FileAttributeInfoList) result
    touchManagedPtr _obj
    return result'

data FileAttributeInfoListRefMethodInfo
instance (signature ~ (m FileAttributeInfoList), MonadIO m) => MethodInfo FileAttributeInfoListRefMethodInfo FileAttributeInfoList signature where
    overloadedMethod _ = fileAttributeInfoListRef

-- method FileAttributeInfoList::unref
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gio" "FileAttributeInfoList", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "g_file_attribute_info_list_unref" g_file_attribute_info_list_unref :: 
    Ptr FileAttributeInfoList ->            -- _obj : TInterface "Gio" "FileAttributeInfoList"
    IO ()


fileAttributeInfoListUnref ::
    (MonadIO m) =>
    FileAttributeInfoList                   -- _obj
    -> m ()                                 -- result
fileAttributeInfoListUnref _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    g_file_attribute_info_list_unref _obj'
    touchManagedPtr _obj
    return ()

data FileAttributeInfoListUnrefMethodInfo
instance (signature ~ (m ()), MonadIO m) => MethodInfo FileAttributeInfoListUnrefMethodInfo FileAttributeInfoList signature where
    overloadedMethod _ = fileAttributeInfoListUnref

type family ResolveFileAttributeInfoListMethod (t :: Symbol) (o :: *) :: * where
    ResolveFileAttributeInfoListMethod "add" o = FileAttributeInfoListAddMethodInfo
    ResolveFileAttributeInfoListMethod "dup" o = FileAttributeInfoListDupMethodInfo
    ResolveFileAttributeInfoListMethod "lookup" o = FileAttributeInfoListLookupMethodInfo
    ResolveFileAttributeInfoListMethod "ref" o = FileAttributeInfoListRefMethodInfo
    ResolveFileAttributeInfoListMethod "unref" o = FileAttributeInfoListUnrefMethodInfo
    ResolveFileAttributeInfoListMethod l o = MethodResolutionFailed l o

instance (info ~ ResolveFileAttributeInfoListMethod t FileAttributeInfoList, MethodInfo info FileAttributeInfoList p) => IsLabelProxy t (FileAttributeInfoList -> p) where
    fromLabelProxy _ = overloadedMethod (MethodProxy :: MethodProxy info)

#if MIN_VERSION_base(4,9,0)
instance (info ~ ResolveFileAttributeInfoListMethod t FileAttributeInfoList, MethodInfo info FileAttributeInfoList p) => IsLabel t (FileAttributeInfoList -> p) where
    fromLabel _ = overloadedMethod (MethodProxy :: MethodProxy info)
#endif