{- |
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.Poppler.Structs.IndexIter
    ( 

-- * Exported types
    IndexIter(..)                           ,
    noIndexIter                             ,


 -- * Methods
-- ** indexIterCopy
    indexIterCopy                           ,


-- ** indexIterFree
    indexIterFree                           ,


-- ** indexIterGetAction
    indexIterGetAction                      ,


-- ** indexIterGetChild
    indexIterGetChild                       ,


-- ** indexIterIsOpen
    indexIterIsOpen                         ,


-- ** indexIterNew
    indexIterNew                            ,


-- ** indexIterNext
    indexIterNext                           ,




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

newtype IndexIter = IndexIter (ForeignPtr IndexIter)
foreign import ccall "poppler_index_iter_get_type" c_poppler_index_iter_get_type :: 
    IO GType

instance BoxedObject IndexIter where
    boxedType _ = c_poppler_index_iter_get_type

noIndexIter :: Maybe IndexIter
noIndexIter = Nothing

-- method IndexIter::new
-- method type : Constructor
-- Args : [Arg {argName = "document", argType = TInterface "Poppler" "Document", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "document", argType = TInterface "Poppler" "Document", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Poppler" "IndexIter"
-- throws : False
-- Skip return : False

foreign import ccall "poppler_index_iter_new" poppler_index_iter_new :: 
    Ptr Document ->                         -- document : TInterface "Poppler" "Document"
    IO (Ptr IndexIter)


indexIterNew ::
    (MonadIO m, DocumentK a) =>
    a ->                                    -- document
    m IndexIter
indexIterNew document = liftIO $ do
    let document' = unsafeManagedPtrCastPtr document
    result <- poppler_index_iter_new document'
    checkUnexpectedReturnNULL "poppler_index_iter_new" result
    result' <- (wrapBoxed IndexIter) result
    touchManagedPtr document
    return result'

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

foreign import ccall "poppler_index_iter_copy" poppler_index_iter_copy :: 
    Ptr IndexIter ->                        -- _obj : TInterface "Poppler" "IndexIter"
    IO (Ptr IndexIter)


indexIterCopy ::
    (MonadIO m) =>
    IndexIter ->                            -- _obj
    m IndexIter
indexIterCopy _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- poppler_index_iter_copy _obj'
    checkUnexpectedReturnNULL "poppler_index_iter_copy" result
    result' <- (wrapBoxed IndexIter) result
    touchManagedPtr _obj
    return result'

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

foreign import ccall "poppler_index_iter_free" poppler_index_iter_free :: 
    Ptr IndexIter ->                        -- _obj : TInterface "Poppler" "IndexIter"
    IO ()


indexIterFree ::
    (MonadIO m) =>
    IndexIter ->                            -- _obj
    m ()
indexIterFree _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    poppler_index_iter_free _obj'
    touchManagedPtr _obj
    return ()

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

foreign import ccall "poppler_index_iter_get_action" poppler_index_iter_get_action :: 
    Ptr IndexIter ->                        -- _obj : TInterface "Poppler" "IndexIter"
    IO (Ptr Action)


indexIterGetAction ::
    (MonadIO m) =>
    IndexIter ->                            -- _obj
    m Action
indexIterGetAction _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- poppler_index_iter_get_action _obj'
    checkUnexpectedReturnNULL "poppler_index_iter_get_action" result
    result' <- (wrapBoxed Action) result
    touchManagedPtr _obj
    return result'

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

foreign import ccall "poppler_index_iter_get_child" poppler_index_iter_get_child :: 
    Ptr IndexIter ->                        -- _obj : TInterface "Poppler" "IndexIter"
    IO (Ptr IndexIter)


indexIterGetChild ::
    (MonadIO m) =>
    IndexIter ->                            -- _obj
    m IndexIter
indexIterGetChild _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- poppler_index_iter_get_child _obj'
    checkUnexpectedReturnNULL "poppler_index_iter_get_child" result
    result' <- (wrapBoxed IndexIter) result
    touchManagedPtr _obj
    return result'

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

foreign import ccall "poppler_index_iter_is_open" poppler_index_iter_is_open :: 
    Ptr IndexIter ->                        -- _obj : TInterface "Poppler" "IndexIter"
    IO CInt


indexIterIsOpen ::
    (MonadIO m) =>
    IndexIter ->                            -- _obj
    m Bool
indexIterIsOpen _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- poppler_index_iter_is_open _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

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

foreign import ccall "poppler_index_iter_next" poppler_index_iter_next :: 
    Ptr IndexIter ->                        -- _obj : TInterface "Poppler" "IndexIter"
    IO CInt


indexIterNext ::
    (MonadIO m) =>
    IndexIter ->                            -- _obj
    m Bool
indexIterNext _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- poppler_index_iter_next _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'