{- | 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 #PangoScriptIter is used to iterate through a string and identify ranges in different scripts. -} module GI.Pango.Structs.ScriptIter ( -- * Exported types ScriptIter(..) , noScriptIter , -- * Methods -- ** scriptIterFree scriptIterFree , -- ** scriptIterGetRange scriptIterGetRange , -- ** scriptIterNext scriptIterNext , ) 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.Pango.Types import GI.Pango.Callbacks newtype ScriptIter = ScriptIter (ForeignPtr ScriptIter) noScriptIter :: Maybe ScriptIter noScriptIter = Nothing -- method ScriptIter::free -- method type : OrdinaryMethod -- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "ScriptIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}] -- Lengths : [] -- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "ScriptIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}] -- returnType : TBasicType TVoid -- throws : False -- Skip return : False foreign import ccall "pango_script_iter_free" pango_script_iter_free :: Ptr ScriptIter -> -- _obj : TInterface "Pango" "ScriptIter" IO () scriptIterFree :: (MonadIO m) => ScriptIter -> -- _obj m () scriptIterFree _obj = liftIO $ do let _obj' = unsafeManagedPtrGetPtr _obj pango_script_iter_free _obj' touchManagedPtr _obj return () -- method ScriptIter::get_range -- method type : OrdinaryMethod -- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "ScriptIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "start", argType = TBasicType TUTF8, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "end", argType = TBasicType TUTF8, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "script", argType = TInterface "Pango" "Script", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}] -- Lengths : [] -- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "ScriptIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}] -- returnType : TBasicType TVoid -- throws : False -- Skip return : False foreign import ccall "pango_script_iter_get_range" pango_script_iter_get_range :: Ptr ScriptIter -> -- _obj : TInterface "Pango" "ScriptIter" Ptr CString -> -- start : TBasicType TUTF8 Ptr CString -> -- end : TBasicType TUTF8 Ptr CUInt -> -- script : TInterface "Pango" "Script" IO () scriptIterGetRange :: (MonadIO m) => ScriptIter -> -- _obj m (T.Text,T.Text,Script) scriptIterGetRange _obj = liftIO $ do let _obj' = unsafeManagedPtrGetPtr _obj start <- allocMem :: IO (Ptr CString) end <- allocMem :: IO (Ptr CString) script <- allocMem :: IO (Ptr CUInt) pango_script_iter_get_range _obj' start end script start' <- peek start start'' <- cstringToText start' freeMem start' end' <- peek end end'' <- cstringToText end' freeMem end' script' <- peek script let script'' = (toEnum . fromIntegral) script' touchManagedPtr _obj freeMem start freeMem end freeMem script return (start'', end'', script'') -- method ScriptIter::next -- method type : OrdinaryMethod -- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "ScriptIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}] -- Lengths : [] -- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "ScriptIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}] -- returnType : TBasicType TBoolean -- throws : False -- Skip return : False foreign import ccall "pango_script_iter_next" pango_script_iter_next :: Ptr ScriptIter -> -- _obj : TInterface "Pango" "ScriptIter" IO CInt scriptIterNext :: (MonadIO m) => ScriptIter -> -- _obj m Bool scriptIterNext _obj = liftIO $ do let _obj' = unsafeManagedPtrGetPtr _obj result <- pango_script_iter_next _obj' let result' = (/= 0) result touchManagedPtr _obj return result'