packages feed

gi-pango-0.1.38.14: GI/Pango/Structs/AttrLanguage.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 #PangoAttrLanguage structure is used to represent attributes that
are languages.
-}

module GI.Pango.Structs.AttrLanguage
    ( 

-- * Exported types
    AttrLanguage(..)                        ,
    newZeroAttrLanguage                     ,
    noAttrLanguage                          ,


 -- * Methods
-- ** attrLanguageNew
    attrLanguageNew                         ,




 -- * Properties
-- ** Attr
    attrLanguageAttr                        ,
    attrLanguageClearAttr                   ,
    attrLanguageReadAttr                    ,
    attrLanguageWriteAttr                   ,


-- ** Value
    attrLanguageClearValue                  ,
    attrLanguageReadValue                   ,
    attrLanguageValue                       ,
    attrLanguageWriteValue                  ,




    ) 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 AttrLanguage = AttrLanguage (ForeignPtr AttrLanguage)
-- | Construct a `AttrLanguage` struct initialized to zero.
newZeroAttrLanguage :: MonadIO m => m AttrLanguage
newZeroAttrLanguage = liftIO $ callocBytes 24 >>= wrapPtr AttrLanguage

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


noAttrLanguage :: Maybe AttrLanguage
noAttrLanguage = Nothing

attrLanguageReadAttr :: MonadIO m => AttrLanguage -> m (Maybe Attribute)
attrLanguageReadAttr s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO (Ptr Attribute)
    result <- convertIfNonNull val $ \val' -> do
        val'' <- (newPtr 16 Attribute) val'
        return val''
    return result

attrLanguageWriteAttr :: MonadIO m => AttrLanguage -> Ptr Attribute -> m ()
attrLanguageWriteAttr s val = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 0) (val :: Ptr Attribute)

attrLanguageClearAttr :: MonadIO m => AttrLanguage -> m ()
attrLanguageClearAttr s = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 0) (nullPtr :: Ptr Attribute)

data AttrLanguageAttrFieldInfo
instance AttrInfo AttrLanguageAttrFieldInfo where
    type AttrAllowedOps AttrLanguageAttrFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint AttrLanguageAttrFieldInfo = (~) (Ptr Attribute)
    type AttrBaseTypeConstraint AttrLanguageAttrFieldInfo = (~) AttrLanguage
    type AttrGetType AttrLanguageAttrFieldInfo = Maybe Attribute
    type AttrLabel AttrLanguageAttrFieldInfo = "attr"
    attrGet _ = attrLanguageReadAttr
    attrSet _ = attrLanguageWriteAttr
    attrConstruct = undefined
    attrClear _ = attrLanguageClearAttr

attrLanguageAttr :: AttrLabelProxy "attr"
attrLanguageAttr = AttrLabelProxy


attrLanguageReadValue :: MonadIO m => AttrLanguage -> m (Maybe Language)
attrLanguageReadValue s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 16) :: IO (Ptr Language)
    result <- convertIfNonNull val $ \val' -> do
        val'' <- (newBoxed Language) val'
        return val''
    return result

attrLanguageWriteValue :: MonadIO m => AttrLanguage -> Ptr Language -> m ()
attrLanguageWriteValue s val = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 16) (val :: Ptr Language)

attrLanguageClearValue :: MonadIO m => AttrLanguage -> m ()
attrLanguageClearValue s = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 16) (nullPtr :: Ptr Language)

data AttrLanguageValueFieldInfo
instance AttrInfo AttrLanguageValueFieldInfo where
    type AttrAllowedOps AttrLanguageValueFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint AttrLanguageValueFieldInfo = (~) (Ptr Language)
    type AttrBaseTypeConstraint AttrLanguageValueFieldInfo = (~) AttrLanguage
    type AttrGetType AttrLanguageValueFieldInfo = Maybe Language
    type AttrLabel AttrLanguageValueFieldInfo = "value"
    attrGet _ = attrLanguageReadValue
    attrSet _ = attrLanguageWriteValue
    attrConstruct = undefined
    attrClear _ = attrLanguageClearValue

attrLanguageValue :: AttrLabelProxy "value"
attrLanguageValue = AttrLabelProxy



type instance AttributeList AttrLanguage = AttrLanguageAttributeList
type AttrLanguageAttributeList = ('[ '("attr", AttrLanguageAttrFieldInfo), '("value", AttrLanguageValueFieldInfo)] :: [(Symbol, *)])

-- method AttrLanguage::new
-- method type : MemberFunction
-- Args : [Arg {argCName = "language", argType = TInterface "Pango" "Language", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface "Pango" "Attribute")
-- throws : False
-- Skip return : False

foreign import ccall "pango_attr_language_new" pango_attr_language_new :: 
    Ptr Language ->                         -- language : TInterface "Pango" "Language"
    IO (Ptr Attribute)


attrLanguageNew ::
    (MonadIO m) =>
    Language                                -- language
    -> m Attribute                          -- result
attrLanguageNew language = liftIO $ do
    let language' = unsafeManagedPtrGetPtr language
    result <- pango_attr_language_new language'
    checkUnexpectedReturnNULL "pango_attr_language_new" result
    result' <- (wrapPtr Attribute) result
    touchManagedPtr language
    return result'

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

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

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