packages feed

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

The #GSequence struct is an opaque data type representing a
[sequence][glib-Sequences] data type.
-}

module GI.GLib.Structs.Sequence
    ( 

-- * Exported types
    Sequence(..)                            ,
    noSequence                              ,


 -- * Methods
-- ** sequenceFree
    SequenceFreeMethodInfo                  ,
    sequenceFree                            ,


-- ** sequenceGetLength
    SequenceGetLengthMethodInfo             ,
    sequenceGetLength                       ,


-- ** sequenceMove
    sequenceMove                            ,


-- ** sequenceMoveRange
    sequenceMoveRange                       ,


-- ** sequenceRemove
    sequenceRemove                          ,


-- ** sequenceRemoveRange
    sequenceRemoveRange                     ,


-- ** sequenceSet
    sequenceSet                             ,


-- ** sequenceSwap
    sequenceSwap                            ,




    ) 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 Sequence = Sequence (ForeignPtr Sequence)
noSequence :: Maybe Sequence
noSequence = Nothing

-- method Sequence::free
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GLib" "Sequence", 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_sequence_free" g_sequence_free :: 
    Ptr Sequence ->                         -- _obj : TInterface "GLib" "Sequence"
    IO ()


sequenceFree ::
    (MonadIO m) =>
    Sequence                                -- _obj
    -> m ()                                 -- result
sequenceFree _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    g_sequence_free _obj'
    touchManagedPtr _obj
    return ()

data SequenceFreeMethodInfo
instance (signature ~ (m ()), MonadIO m) => MethodInfo SequenceFreeMethodInfo Sequence signature where
    overloadedMethod _ = sequenceFree

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

foreign import ccall "g_sequence_get_length" g_sequence_get_length :: 
    Ptr Sequence ->                         -- _obj : TInterface "GLib" "Sequence"
    IO Int32


sequenceGetLength ::
    (MonadIO m) =>
    Sequence                                -- _obj
    -> m Int32                              -- result
sequenceGetLength _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- g_sequence_get_length _obj'
    touchManagedPtr _obj
    return result

data SequenceGetLengthMethodInfo
instance (signature ~ (m Int32), MonadIO m) => MethodInfo SequenceGetLengthMethodInfo Sequence signature where
    overloadedMethod _ = sequenceGetLength

-- method Sequence::move
-- method type : MemberFunction
-- Args : [Arg {argCName = "src", argType = TInterface "GLib" "SequenceIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "dest", argType = TInterface "GLib" "SequenceIter", 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_sequence_move" g_sequence_move :: 
    Ptr SequenceIter ->                     -- src : TInterface "GLib" "SequenceIter"
    Ptr SequenceIter ->                     -- dest : TInterface "GLib" "SequenceIter"
    IO ()


sequenceMove ::
    (MonadIO m) =>
    SequenceIter                            -- src
    -> SequenceIter                         -- dest
    -> m ()                                 -- result
sequenceMove src dest = liftIO $ do
    let src' = unsafeManagedPtrGetPtr src
    let dest' = unsafeManagedPtrGetPtr dest
    g_sequence_move src' dest'
    touchManagedPtr src
    touchManagedPtr dest
    return ()

-- method Sequence::move_range
-- method type : MemberFunction
-- Args : [Arg {argCName = "dest", argType = TInterface "GLib" "SequenceIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "begin", argType = TInterface "GLib" "SequenceIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "end", argType = TInterface "GLib" "SequenceIter", 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_sequence_move_range" g_sequence_move_range :: 
    Ptr SequenceIter ->                     -- dest : TInterface "GLib" "SequenceIter"
    Ptr SequenceIter ->                     -- begin : TInterface "GLib" "SequenceIter"
    Ptr SequenceIter ->                     -- end : TInterface "GLib" "SequenceIter"
    IO ()


sequenceMoveRange ::
    (MonadIO m) =>
    SequenceIter                            -- dest
    -> SequenceIter                         -- begin
    -> SequenceIter                         -- end
    -> m ()                                 -- result
sequenceMoveRange dest begin end = liftIO $ do
    let dest' = unsafeManagedPtrGetPtr dest
    let begin' = unsafeManagedPtrGetPtr begin
    let end' = unsafeManagedPtrGetPtr end
    g_sequence_move_range dest' begin' end'
    touchManagedPtr dest
    touchManagedPtr begin
    touchManagedPtr end
    return ()

-- method Sequence::remove
-- method type : MemberFunction
-- Args : [Arg {argCName = "iter", argType = TInterface "GLib" "SequenceIter", 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_sequence_remove" g_sequence_remove :: 
    Ptr SequenceIter ->                     -- iter : TInterface "GLib" "SequenceIter"
    IO ()


sequenceRemove ::
    (MonadIO m) =>
    SequenceIter                            -- iter
    -> m ()                                 -- result
sequenceRemove iter = liftIO $ do
    let iter' = unsafeManagedPtrGetPtr iter
    g_sequence_remove iter'
    touchManagedPtr iter
    return ()

-- method Sequence::remove_range
-- method type : MemberFunction
-- Args : [Arg {argCName = "begin", argType = TInterface "GLib" "SequenceIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "end", argType = TInterface "GLib" "SequenceIter", 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_sequence_remove_range" g_sequence_remove_range :: 
    Ptr SequenceIter ->                     -- begin : TInterface "GLib" "SequenceIter"
    Ptr SequenceIter ->                     -- end : TInterface "GLib" "SequenceIter"
    IO ()


sequenceRemoveRange ::
    (MonadIO m) =>
    SequenceIter                            -- begin
    -> SequenceIter                         -- end
    -> m ()                                 -- result
sequenceRemoveRange begin end = liftIO $ do
    let begin' = unsafeManagedPtrGetPtr begin
    let end' = unsafeManagedPtrGetPtr end
    g_sequence_remove_range begin' end'
    touchManagedPtr begin
    touchManagedPtr end
    return ()

-- method Sequence::set
-- method type : MemberFunction
-- Args : [Arg {argCName = "iter", argType = TInterface "GLib" "SequenceIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TVoid, 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_sequence_set" g_sequence_set :: 
    Ptr SequenceIter ->                     -- iter : TInterface "GLib" "SequenceIter"
    Ptr () ->                               -- data : TBasicType TVoid
    IO ()


sequenceSet ::
    (MonadIO m) =>
    SequenceIter                            -- iter
    -> Ptr ()                               -- data_
    -> m ()                                 -- result
sequenceSet iter data_ = liftIO $ do
    let iter' = unsafeManagedPtrGetPtr iter
    g_sequence_set iter' data_
    touchManagedPtr iter
    return ()

-- method Sequence::swap
-- method type : MemberFunction
-- Args : [Arg {argCName = "a", argType = TInterface "GLib" "SequenceIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "b", argType = TInterface "GLib" "SequenceIter", 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_sequence_swap" g_sequence_swap :: 
    Ptr SequenceIter ->                     -- a : TInterface "GLib" "SequenceIter"
    Ptr SequenceIter ->                     -- b : TInterface "GLib" "SequenceIter"
    IO ()


sequenceSwap ::
    (MonadIO m) =>
    SequenceIter                            -- a
    -> SequenceIter                         -- b
    -> m ()                                 -- result
sequenceSwap a b = liftIO $ do
    let a' = unsafeManagedPtrGetPtr a
    let b' = unsafeManagedPtrGetPtr b
    g_sequence_swap a' b'
    touchManagedPtr a
    touchManagedPtr b
    return ()

type family ResolveSequenceMethod (t :: Symbol) (o :: *) :: * where
    ResolveSequenceMethod "free" o = SequenceFreeMethodInfo
    ResolveSequenceMethod "getLength" o = SequenceGetLengthMethodInfo
    ResolveSequenceMethod l o = MethodResolutionFailed l o

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

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