packages feed

gi-glib-0.2.46.13: GI/GLib/Structs/VariantBuilder.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)

A utility type for constructing container-type #GVariant instances.

This is an opaque structure and may only be accessed using the
following functions.

#GVariantBuilder is not threadsafe in any way.  Do not attempt to
access it from more than one thread.
-}

module GI.GLib.Structs.VariantBuilder
    ( 

-- * Exported types
    VariantBuilder(..)                      ,
    newZeroVariantBuilder                   ,
    noVariantBuilder                        ,


 -- * Methods
-- ** variantBuilderAddValue
    VariantBuilderAddValueMethodInfo        ,
    variantBuilderAddValue                  ,


-- ** variantBuilderClose
    VariantBuilderCloseMethodInfo           ,
    variantBuilderClose                     ,


-- ** variantBuilderEnd
    VariantBuilderEndMethodInfo             ,
    variantBuilderEnd                       ,


-- ** variantBuilderNew
    variantBuilderNew                       ,


-- ** variantBuilderOpen
    VariantBuilderOpenMethodInfo            ,
    variantBuilderOpen                      ,


-- ** variantBuilderRef
    VariantBuilderRefMethodInfo             ,
    variantBuilderRef                       ,


-- ** variantBuilderUnref
    VariantBuilderUnrefMethodInfo           ,
    variantBuilderUnref                     ,




    ) 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.GLib.Types
import GI.GLib.Callbacks

newtype VariantBuilder = VariantBuilder (ForeignPtr VariantBuilder)
foreign import ccall "g_variant_builder_get_type" c_g_variant_builder_get_type :: 
    IO GType

instance BoxedObject VariantBuilder where
    boxedType _ = c_g_variant_builder_get_type

-- | Construct a `VariantBuilder` struct initialized to zero.
newZeroVariantBuilder :: MonadIO m => m VariantBuilder
newZeroVariantBuilder = liftIO $ callocBoxedBytes 128 >>= wrapBoxed VariantBuilder

noVariantBuilder :: Maybe VariantBuilder
noVariantBuilder = Nothing

-- method VariantBuilder::new
-- method type : Constructor
-- Args : [Arg {argCName = "type", argType = TInterface "GLib" "VariantType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TInterface "GLib" "VariantBuilder"
-- throws : False
-- Skip return : False

foreign import ccall "g_variant_builder_new" g_variant_builder_new :: 
    Ptr VariantType ->                      -- type : TInterface "GLib" "VariantType"
    IO (Ptr VariantBuilder)


variantBuilderNew ::
    (MonadIO m) =>
    VariantType                             -- type_
    -> m VariantBuilder                     -- result
variantBuilderNew type_ = liftIO $ do
    let type_' = unsafeManagedPtrGetPtr type_
    result <- g_variant_builder_new type_'
    checkUnexpectedReturnNULL "g_variant_builder_new" result
    result' <- (wrapBoxed VariantBuilder) result
    touchManagedPtr type_
    return result'

-- method VariantBuilder::add_value
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GLib" "VariantBuilder", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "value", argType = TVariant, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_variant_builder_add_value" g_variant_builder_add_value :: 
    Ptr VariantBuilder ->                   -- _obj : TInterface "GLib" "VariantBuilder"
    Ptr GVariant ->                         -- value : TVariant
    IO ()


variantBuilderAddValue ::
    (MonadIO m) =>
    VariantBuilder                          -- _obj
    -> GVariant                             -- value
    -> m ()                                 -- result
variantBuilderAddValue _obj value = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    let value' = unsafeManagedPtrGetPtr value
    g_variant_builder_add_value _obj' value'
    touchManagedPtr _obj
    return ()

data VariantBuilderAddValueMethodInfo
instance (signature ~ (GVariant -> m ()), MonadIO m) => MethodInfo VariantBuilderAddValueMethodInfo VariantBuilder signature where
    overloadedMethod _ = variantBuilderAddValue

-- method VariantBuilder::close
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GLib" "VariantBuilder", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_variant_builder_close" g_variant_builder_close :: 
    Ptr VariantBuilder ->                   -- _obj : TInterface "GLib" "VariantBuilder"
    IO ()


variantBuilderClose ::
    (MonadIO m) =>
    VariantBuilder                          -- _obj
    -> m ()                                 -- result
variantBuilderClose _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    g_variant_builder_close _obj'
    touchManagedPtr _obj
    return ()

data VariantBuilderCloseMethodInfo
instance (signature ~ (m ()), MonadIO m) => MethodInfo VariantBuilderCloseMethodInfo VariantBuilder signature where
    overloadedMethod _ = variantBuilderClose

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

foreign import ccall "g_variant_builder_end" g_variant_builder_end :: 
    Ptr VariantBuilder ->                   -- _obj : TInterface "GLib" "VariantBuilder"
    IO (Ptr GVariant)


variantBuilderEnd ::
    (MonadIO m) =>
    VariantBuilder                          -- _obj
    -> m GVariant                           -- result
variantBuilderEnd _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- g_variant_builder_end _obj'
    checkUnexpectedReturnNULL "g_variant_builder_end" result
    result' <- newGVariantFromPtr result
    touchManagedPtr _obj
    return result'

data VariantBuilderEndMethodInfo
instance (signature ~ (m GVariant), MonadIO m) => MethodInfo VariantBuilderEndMethodInfo VariantBuilder signature where
    overloadedMethod _ = variantBuilderEnd

-- method VariantBuilder::open
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GLib" "VariantBuilder", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "type", argType = TInterface "GLib" "VariantType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_variant_builder_open" g_variant_builder_open :: 
    Ptr VariantBuilder ->                   -- _obj : TInterface "GLib" "VariantBuilder"
    Ptr VariantType ->                      -- type : TInterface "GLib" "VariantType"
    IO ()


variantBuilderOpen ::
    (MonadIO m) =>
    VariantBuilder                          -- _obj
    -> VariantType                          -- type_
    -> m ()                                 -- result
variantBuilderOpen _obj type_ = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    let type_' = unsafeManagedPtrGetPtr type_
    g_variant_builder_open _obj' type_'
    touchManagedPtr _obj
    touchManagedPtr type_
    return ()

data VariantBuilderOpenMethodInfo
instance (signature ~ (VariantType -> m ()), MonadIO m) => MethodInfo VariantBuilderOpenMethodInfo VariantBuilder signature where
    overloadedMethod _ = variantBuilderOpen

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

foreign import ccall "g_variant_builder_ref" g_variant_builder_ref :: 
    Ptr VariantBuilder ->                   -- _obj : TInterface "GLib" "VariantBuilder"
    IO (Ptr VariantBuilder)


variantBuilderRef ::
    (MonadIO m) =>
    VariantBuilder                          -- _obj
    -> m VariantBuilder                     -- result
variantBuilderRef _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- g_variant_builder_ref _obj'
    checkUnexpectedReturnNULL "g_variant_builder_ref" result
    result' <- (wrapBoxed VariantBuilder) result
    touchManagedPtr _obj
    return result'

data VariantBuilderRefMethodInfo
instance (signature ~ (m VariantBuilder), MonadIO m) => MethodInfo VariantBuilderRefMethodInfo VariantBuilder signature where
    overloadedMethod _ = variantBuilderRef

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

foreign import ccall "g_variant_builder_unref" g_variant_builder_unref :: 
    Ptr VariantBuilder ->                   -- _obj : TInterface "GLib" "VariantBuilder"
    IO ()


variantBuilderUnref ::
    (MonadIO m) =>
    VariantBuilder                          -- _obj
    -> m ()                                 -- result
variantBuilderUnref _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    g_variant_builder_unref _obj'
    touchManagedPtr _obj
    return ()

data VariantBuilderUnrefMethodInfo
instance (signature ~ (m ()), MonadIO m) => MethodInfo VariantBuilderUnrefMethodInfo VariantBuilder signature where
    overloadedMethod _ = variantBuilderUnref

type family ResolveVariantBuilderMethod (t :: Symbol) (o :: *) :: * where
    ResolveVariantBuilderMethod "addValue" o = VariantBuilderAddValueMethodInfo
    ResolveVariantBuilderMethod "close" o = VariantBuilderCloseMethodInfo
    ResolveVariantBuilderMethod "end" o = VariantBuilderEndMethodInfo
    ResolveVariantBuilderMethod "open" o = VariantBuilderOpenMethodInfo
    ResolveVariantBuilderMethod "ref" o = VariantBuilderRefMethodInfo
    ResolveVariantBuilderMethod "unref" o = VariantBuilderUnrefMethodInfo
    ResolveVariantBuilderMethod l o = MethodResolutionFailed l o

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

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