packages feed

gi-pango-0.1.38.13: GI/Pango/Structs/Coverage.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 #PangoCoverage structure represents a map from Unicode characters
to #PangoCoverageLevel. It is an opaque structure with no public fields.
-}

module GI.Pango.Structs.Coverage
    ( 

-- * Exported types
    Coverage(..)                            ,
    noCoverage                              ,


 -- * Methods
-- ** coverageGet
    CoverageGetMethodInfo                   ,
    coverageGet                             ,


-- ** coverageMax
    CoverageMaxMethodInfo                   ,
    coverageMax                             ,


-- ** coverageSet
    CoverageSetMethodInfo                   ,
    coverageSet                             ,


-- ** coverageToBytes
    CoverageToBytesMethodInfo               ,
    coverageToBytes                         ,


-- ** coverageUnref
    CoverageUnrefMethodInfo                 ,
    coverageUnref                           ,




    ) 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 Coverage = Coverage (ForeignPtr Coverage)
noCoverage :: Maybe Coverage
noCoverage = Nothing

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

foreign import ccall "pango_coverage_get" pango_coverage_get :: 
    Ptr Coverage ->                         -- _obj : TInterface "Pango" "Coverage"
    Int32 ->                                -- index_ : TBasicType TInt32
    IO CUInt


coverageGet ::
    (MonadIO m) =>
    Coverage                                -- _obj
    -> Int32                                -- index
    -> m CoverageLevel                      -- result
coverageGet _obj index = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- pango_coverage_get _obj' index
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr _obj
    return result'

data CoverageGetMethodInfo
instance (signature ~ (Int32 -> m CoverageLevel), MonadIO m) => MethodInfo CoverageGetMethodInfo Coverage signature where
    overloadedMethod _ = coverageGet

-- method Coverage::max
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Coverage", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "other", argType = TInterface "Pango" "Coverage", 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 "pango_coverage_max" pango_coverage_max :: 
    Ptr Coverage ->                         -- _obj : TInterface "Pango" "Coverage"
    Ptr Coverage ->                         -- other : TInterface "Pango" "Coverage"
    IO ()


coverageMax ::
    (MonadIO m) =>
    Coverage                                -- _obj
    -> Coverage                             -- other
    -> m ()                                 -- result
coverageMax _obj other = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    let other' = unsafeManagedPtrGetPtr other
    pango_coverage_max _obj' other'
    touchManagedPtr _obj
    touchManagedPtr other
    return ()

data CoverageMaxMethodInfo
instance (signature ~ (Coverage -> m ()), MonadIO m) => MethodInfo CoverageMaxMethodInfo Coverage signature where
    overloadedMethod _ = coverageMax

-- method Coverage::set
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Coverage", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "index_", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "level", argType = TInterface "Pango" "CoverageLevel", 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 "pango_coverage_set" pango_coverage_set :: 
    Ptr Coverage ->                         -- _obj : TInterface "Pango" "Coverage"
    Int32 ->                                -- index_ : TBasicType TInt32
    CUInt ->                                -- level : TInterface "Pango" "CoverageLevel"
    IO ()


coverageSet ::
    (MonadIO m) =>
    Coverage                                -- _obj
    -> Int32                                -- index
    -> CoverageLevel                        -- level
    -> m ()                                 -- result
coverageSet _obj index level = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    let level' = (fromIntegral . fromEnum) level
    pango_coverage_set _obj' index level'
    touchManagedPtr _obj
    return ()

data CoverageSetMethodInfo
instance (signature ~ (Int32 -> CoverageLevel -> m ()), MonadIO m) => MethodInfo CoverageSetMethodInfo Coverage signature where
    overloadedMethod _ = coverageSet

-- method Coverage::to_bytes
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Coverage", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "bytes", argType = TCArray False (-1) 2 (TBasicType TUInt8), direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "n_bytes", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
-- Lengths : [Arg {argCName = "n_bytes", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "pango_coverage_to_bytes" pango_coverage_to_bytes :: 
    Ptr Coverage ->                         -- _obj : TInterface "Pango" "Coverage"
    Ptr (Ptr Word8) ->                      -- bytes : TCArray False (-1) 2 (TBasicType TUInt8)
    Ptr Int32 ->                            -- n_bytes : TBasicType TInt32
    IO ()


coverageToBytes ::
    (MonadIO m) =>
    Coverage                                -- _obj
    -> m (ByteString)                       -- result
coverageToBytes _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    bytes <- allocMem :: IO (Ptr (Ptr Word8))
    nBytes <- allocMem :: IO (Ptr Int32)
    pango_coverage_to_bytes _obj' bytes nBytes
    nBytes' <- peek nBytes
    bytes' <- peek bytes
    bytes'' <- (unpackByteStringWithLength nBytes') bytes'
    freeMem bytes'
    touchManagedPtr _obj
    freeMem bytes
    freeMem nBytes
    return bytes''

data CoverageToBytesMethodInfo
instance (signature ~ (m (ByteString)), MonadIO m) => MethodInfo CoverageToBytesMethodInfo Coverage signature where
    overloadedMethod _ = coverageToBytes

-- method Coverage::unref
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Coverage", 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 "pango_coverage_unref" pango_coverage_unref :: 
    Ptr Coverage ->                         -- _obj : TInterface "Pango" "Coverage"
    IO ()


coverageUnref ::
    (MonadIO m) =>
    Coverage                                -- _obj
    -> m ()                                 -- result
coverageUnref _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    pango_coverage_unref _obj'
    touchManagedPtr _obj
    return ()

data CoverageUnrefMethodInfo
instance (signature ~ (m ()), MonadIO m) => MethodInfo CoverageUnrefMethodInfo Coverage signature where
    overloadedMethod _ = coverageUnref

type family ResolveCoverageMethod (t :: Symbol) (o :: *) :: * where
    ResolveCoverageMethod "get" o = CoverageGetMethodInfo
    ResolveCoverageMethod "max" o = CoverageMaxMethodInfo
    ResolveCoverageMethod "set" o = CoverageSetMethodInfo
    ResolveCoverageMethod "toBytes" o = CoverageToBytesMethodInfo
    ResolveCoverageMethod "unref" o = CoverageUnrefMethodInfo
    ResolveCoverageMethod l o = MethodResolutionFailed l o

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

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