{- | 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) instance WrappedPtr AttrLanguage where wrappedPtrCalloc = callocBytes 24 wrappedPtrCopy = copyPtr 24 wrappedPtrFree = Just ptr_to_g_free -- | Construct a `AttrLanguage` struct initialized to zero. newZeroAttrLanguage :: MonadIO m => m AttrLanguage newZeroAttrLanguage = liftIO $ wrappedPtrCalloc >>= 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 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