packages feed

gi-pango-0.1.38.15: GI/Pango/Structs/EngineInfo.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 #PangoEngineInfo structure contains information about a particular
engine. It contains the following fields:
-}

module GI.Pango.Structs.EngineInfo
    ( 

-- * Exported types
    EngineInfo(..)                          ,
    newZeroEngineInfo                       ,
    noEngineInfo                            ,


 -- * Properties
-- ** EngineType
    engineInfoClearEngineType               ,
    engineInfoEngineType                    ,
    engineInfoReadEngineType                ,
    engineInfoWriteEngineType               ,


-- ** Id
    engineInfoClearId                       ,
    engineInfoId                            ,
    engineInfoReadId                        ,
    engineInfoWriteId                       ,


-- ** NScripts
    engineInfoNScripts                      ,
    engineInfoReadNScripts                  ,
    engineInfoWriteNScripts                 ,


-- ** RenderType
    engineInfoClearRenderType               ,
    engineInfoReadRenderType                ,
    engineInfoRenderType                    ,
    engineInfoWriteRenderType               ,


-- ** Scripts
    engineInfoClearScripts                  ,
    engineInfoReadScripts                   ,
    engineInfoScripts                       ,
    engineInfoWriteScripts                  ,




    ) where

import Data.GI.Base.ShortPrelude

import qualified Data.GI.Base.Attributes as GI.Attributes
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 EngineInfo = EngineInfo (ForeignPtr EngineInfo)
instance WrappedPtr EngineInfo where
    wrappedPtrCalloc = callocBytes 40
    wrappedPtrCopy = copyPtr 40
    wrappedPtrFree = Just ptr_to_g_free

-- | Construct a `EngineInfo` struct initialized to zero.
newZeroEngineInfo :: MonadIO m => m EngineInfo
newZeroEngineInfo = liftIO $ wrappedPtrCalloc >>= wrapPtr EngineInfo

instance tag ~ 'AttrSet => Constructible EngineInfo tag where
    new _ attrs = do
        o <- newZeroEngineInfo
        GI.Attributes.set o attrs
        return o


noEngineInfo :: Maybe EngineInfo
noEngineInfo = Nothing

engineInfoReadId :: MonadIO m => EngineInfo -> m (Maybe T.Text)
engineInfoReadId s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO CString
    result <- convertIfNonNull val $ \val' -> do
        val'' <- cstringToText val'
        return val''
    return result

engineInfoWriteId :: MonadIO m => EngineInfo -> CString -> m ()
engineInfoWriteId s val = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 0) (val :: CString)

engineInfoClearId :: MonadIO m => EngineInfo -> m ()
engineInfoClearId s = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 0) (nullPtr :: CString)

data EngineInfoIdFieldInfo
instance AttrInfo EngineInfoIdFieldInfo where
    type AttrAllowedOps EngineInfoIdFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint EngineInfoIdFieldInfo = (~) CString
    type AttrBaseTypeConstraint EngineInfoIdFieldInfo = (~) EngineInfo
    type AttrGetType EngineInfoIdFieldInfo = Maybe T.Text
    type AttrLabel EngineInfoIdFieldInfo = "id"
    attrGet _ = engineInfoReadId
    attrSet _ = engineInfoWriteId
    attrConstruct = undefined
    attrClear _ = engineInfoClearId

engineInfoId :: AttrLabelProxy "id"
engineInfoId = AttrLabelProxy


engineInfoReadEngineType :: MonadIO m => EngineInfo -> m (Maybe T.Text)
engineInfoReadEngineType s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 8) :: IO CString
    result <- convertIfNonNull val $ \val' -> do
        val'' <- cstringToText val'
        return val''
    return result

engineInfoWriteEngineType :: MonadIO m => EngineInfo -> CString -> m ()
engineInfoWriteEngineType s val = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 8) (val :: CString)

engineInfoClearEngineType :: MonadIO m => EngineInfo -> m ()
engineInfoClearEngineType s = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 8) (nullPtr :: CString)

data EngineInfoEngineTypeFieldInfo
instance AttrInfo EngineInfoEngineTypeFieldInfo where
    type AttrAllowedOps EngineInfoEngineTypeFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint EngineInfoEngineTypeFieldInfo = (~) CString
    type AttrBaseTypeConstraint EngineInfoEngineTypeFieldInfo = (~) EngineInfo
    type AttrGetType EngineInfoEngineTypeFieldInfo = Maybe T.Text
    type AttrLabel EngineInfoEngineTypeFieldInfo = "engine_type"
    attrGet _ = engineInfoReadEngineType
    attrSet _ = engineInfoWriteEngineType
    attrConstruct = undefined
    attrClear _ = engineInfoClearEngineType

engineInfoEngineType :: AttrLabelProxy "engineType"
engineInfoEngineType = AttrLabelProxy


engineInfoReadRenderType :: MonadIO m => EngineInfo -> m (Maybe T.Text)
engineInfoReadRenderType s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 16) :: IO CString
    result <- convertIfNonNull val $ \val' -> do
        val'' <- cstringToText val'
        return val''
    return result

engineInfoWriteRenderType :: MonadIO m => EngineInfo -> CString -> m ()
engineInfoWriteRenderType s val = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 16) (val :: CString)

engineInfoClearRenderType :: MonadIO m => EngineInfo -> m ()
engineInfoClearRenderType s = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 16) (nullPtr :: CString)

data EngineInfoRenderTypeFieldInfo
instance AttrInfo EngineInfoRenderTypeFieldInfo where
    type AttrAllowedOps EngineInfoRenderTypeFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint EngineInfoRenderTypeFieldInfo = (~) CString
    type AttrBaseTypeConstraint EngineInfoRenderTypeFieldInfo = (~) EngineInfo
    type AttrGetType EngineInfoRenderTypeFieldInfo = Maybe T.Text
    type AttrLabel EngineInfoRenderTypeFieldInfo = "render_type"
    attrGet _ = engineInfoReadRenderType
    attrSet _ = engineInfoWriteRenderType
    attrConstruct = undefined
    attrClear _ = engineInfoClearRenderType

engineInfoRenderType :: AttrLabelProxy "renderType"
engineInfoRenderType = AttrLabelProxy


engineInfoReadScripts :: MonadIO m => EngineInfo -> m (Maybe EngineScriptInfo)
engineInfoReadScripts s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 24) :: IO (Ptr EngineScriptInfo)
    result <- convertIfNonNull val $ \val' -> do
        val'' <- (newPtr EngineScriptInfo) val'
        return val''
    return result

engineInfoWriteScripts :: MonadIO m => EngineInfo -> Ptr EngineScriptInfo -> m ()
engineInfoWriteScripts s val = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 24) (val :: Ptr EngineScriptInfo)

engineInfoClearScripts :: MonadIO m => EngineInfo -> m ()
engineInfoClearScripts s = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 24) (nullPtr :: Ptr EngineScriptInfo)

data EngineInfoScriptsFieldInfo
instance AttrInfo EngineInfoScriptsFieldInfo where
    type AttrAllowedOps EngineInfoScriptsFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint EngineInfoScriptsFieldInfo = (~) (Ptr EngineScriptInfo)
    type AttrBaseTypeConstraint EngineInfoScriptsFieldInfo = (~) EngineInfo
    type AttrGetType EngineInfoScriptsFieldInfo = Maybe EngineScriptInfo
    type AttrLabel EngineInfoScriptsFieldInfo = "scripts"
    attrGet _ = engineInfoReadScripts
    attrSet _ = engineInfoWriteScripts
    attrConstruct = undefined
    attrClear _ = engineInfoClearScripts

engineInfoScripts :: AttrLabelProxy "scripts"
engineInfoScripts = AttrLabelProxy


engineInfoReadNScripts :: MonadIO m => EngineInfo -> m Int32
engineInfoReadNScripts s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 32) :: IO Int32
    return val

engineInfoWriteNScripts :: MonadIO m => EngineInfo -> Int32 -> m ()
engineInfoWriteNScripts s val = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 32) (val :: Int32)

data EngineInfoNScriptsFieldInfo
instance AttrInfo EngineInfoNScriptsFieldInfo where
    type AttrAllowedOps EngineInfoNScriptsFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint EngineInfoNScriptsFieldInfo = (~) Int32
    type AttrBaseTypeConstraint EngineInfoNScriptsFieldInfo = (~) EngineInfo
    type AttrGetType EngineInfoNScriptsFieldInfo = Int32
    type AttrLabel EngineInfoNScriptsFieldInfo = "n_scripts"
    attrGet _ = engineInfoReadNScripts
    attrSet _ = engineInfoWriteNScripts
    attrConstruct = undefined
    attrClear _ = undefined

engineInfoNScripts :: AttrLabelProxy "nScripts"
engineInfoNScripts = AttrLabelProxy



type instance AttributeList EngineInfo = EngineInfoAttributeList
type EngineInfoAttributeList = ('[ '("id", EngineInfoIdFieldInfo), '("engineType", EngineInfoEngineTypeFieldInfo), '("renderType", EngineInfoRenderTypeFieldInfo), '("scripts", EngineInfoScriptsFieldInfo), '("nScripts", EngineInfoNScriptsFieldInfo)] :: [(Symbol, *)])

type family ResolveEngineInfoMethod (t :: Symbol) (o :: *) :: * where
    ResolveEngineInfoMethod l o = MethodResolutionFailed l o

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

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