{-# LANGUAGE TypeApplications #-} -- | Copyright : Will Thompson, Iñaki García Etxebarria and Jonas Platte -- License : LGPL-2.1 -- Maintainer : Iñaki García Etxebarria -- -- The t'GI.Pango.Structs.AttrList.AttrList' structure represents a list of attributes -- that apply to a section of text. The attributes are, in general, -- allowed to overlap in an arbitrary fashion, however, if the -- attributes are manipulated only through 'GI.Pango.Structs.AttrList.attrListChange', -- the overlap between properties will meet stricter criteria. -- -- Since the t'GI.Pango.Structs.AttrList.AttrList' structure is stored as a linear list, -- it is not suitable for storing attributes for large amounts -- of text. In general, you should not use a single t'GI.Pango.Structs.AttrList.AttrList' -- for more than one paragraph of text. #if (MIN_VERSION_haskell_gi_overloading(1,0,0) && !defined(__HADDOCK_VERSION__)) #define ENABLE_OVERLOADING #endif module GI.Pango.Structs.AttrList ( -- * Exported types AttrList(..) , noAttrList , -- * Methods -- ** Overloaded methods #method:Overloaded methods# #if defined(ENABLE_OVERLOADING) ResolveAttrListMethod , #endif -- ** change #method:change# #if defined(ENABLE_OVERLOADING) AttrListChangeMethodInfo , #endif attrListChange , -- ** copy #method:copy# #if defined(ENABLE_OVERLOADING) AttrListCopyMethodInfo , #endif attrListCopy , -- ** filter #method:filter# #if defined(ENABLE_OVERLOADING) AttrListFilterMethodInfo , #endif attrListFilter , -- ** getAttributes #method:getAttributes# #if defined(ENABLE_OVERLOADING) AttrListGetAttributesMethodInfo , #endif attrListGetAttributes , -- ** getIterator #method:getIterator# #if defined(ENABLE_OVERLOADING) AttrListGetIteratorMethodInfo , #endif attrListGetIterator , -- ** insert #method:insert# #if defined(ENABLE_OVERLOADING) AttrListInsertMethodInfo , #endif attrListInsert , -- ** insertBefore #method:insertBefore# #if defined(ENABLE_OVERLOADING) AttrListInsertBeforeMethodInfo , #endif attrListInsertBefore , -- ** new #method:new# attrListNew , -- ** ref #method:ref# #if defined(ENABLE_OVERLOADING) AttrListRefMethodInfo , #endif attrListRef , -- ** splice #method:splice# #if defined(ENABLE_OVERLOADING) AttrListSpliceMethodInfo , #endif attrListSplice , -- ** unref #method:unref# #if defined(ENABLE_OVERLOADING) AttrListUnrefMethodInfo , #endif attrListUnref , -- ** update #method:update# #if defined(ENABLE_OVERLOADING) AttrListUpdateMethodInfo , #endif attrListUpdate , ) where import Data.GI.Base.ShortPrelude import qualified Data.GI.Base.ShortPrelude as SP import qualified Data.GI.Base.Overloading as O import qualified Prelude as P import qualified Data.GI.Base.Attributes as GI.Attributes import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr import qualified Data.GI.Base.GClosure as B.GClosure import qualified Data.GI.Base.GError as B.GError import qualified Data.GI.Base.GVariant as B.GVariant import qualified Data.GI.Base.GValue as B.GValue import qualified Data.GI.Base.GParamSpec as B.GParamSpec import qualified Data.GI.Base.CallStack as B.CallStack import qualified Data.GI.Base.Properties as B.Properties import qualified Data.GI.Base.Signals as B.Signals import qualified Data.Text as T import qualified Data.ByteString.Char8 as B import qualified Data.Map as Map import qualified Foreign.Ptr as FP import qualified GHC.OverloadedLabels as OL import qualified GI.Pango.Callbacks as Pango.Callbacks import {-# SOURCE #-} qualified GI.Pango.Structs.AttrIterator as Pango.AttrIterator import {-# SOURCE #-} qualified GI.Pango.Structs.Attribute as Pango.Attribute -- | Memory-managed wrapper type. newtype AttrList = AttrList (ManagedPtr AttrList) deriving (Eq) foreign import ccall "pango_attr_list_get_type" c_pango_attr_list_get_type :: IO GType instance BoxedObject AttrList where boxedType _ = c_pango_attr_list_get_type -- | Convert 'AttrList' to and from 'Data.GI.Base.GValue.GValue' with 'Data.GI.Base.GValue.toGValue' and 'Data.GI.Base.GValue.fromGValue'. instance B.GValue.IsGValue AttrList where toGValue o = do gtype <- c_pango_attr_list_get_type B.ManagedPtr.withManagedPtr o (B.GValue.buildGValue gtype B.GValue.set_boxed) fromGValue gv = do ptr <- B.GValue.get_boxed gv :: IO (Ptr AttrList) B.ManagedPtr.newBoxed AttrList ptr -- | A convenience alias for `Nothing` :: `Maybe` `AttrList`. noAttrList :: Maybe AttrList noAttrList = Nothing #if defined(ENABLE_OVERLOADING) instance O.HasAttributeList AttrList type instance O.AttributeList AttrList = AttrListAttributeList type AttrListAttributeList = ('[ ] :: [(Symbol, *)]) #endif -- method AttrList::new -- method type : Constructor -- Args: [] -- Lengths: [] -- returnType: Just (TInterface Name { namespace = "Pango" , name = "AttrList" }) -- throws : False -- Skip return : False foreign import ccall "pango_attr_list_new" pango_attr_list_new :: IO (Ptr AttrList) -- | Create a new empty attribute list with a reference count of one. attrListNew :: (B.CallStack.HasCallStack, MonadIO m) => m AttrList -- ^ __Returns:__ the newly allocated t'GI.Pango.Structs.AttrList.AttrList', -- which should be freed with 'GI.Pango.Structs.AttrList.attrListUnref'. attrListNew = liftIO $ do result <- pango_attr_list_new checkUnexpectedReturnNULL "attrListNew" result result' <- (wrapBoxed AttrList) result return result' #if defined(ENABLE_OVERLOADING) #endif -- method AttrList::change -- method type : OrdinaryMethod -- Args: [ Arg -- { argCName = "list" -- , argType = -- TInterface Name { namespace = "Pango" , name = "AttrList" } -- , direction = DirectionIn -- , mayBeNull = False -- , argDoc = -- Documentation -- { rawDocText = Just "a #PangoAttrList" , sinceVersion = Nothing } -- , argScope = ScopeTypeInvalid -- , argClosure = -1 -- , argDestroy = -1 -- , argCallerAllocates = False -- , transfer = TransferNothing -- } -- , Arg -- { argCName = "attr" -- , argType = -- TInterface Name { namespace = "Pango" , name = "Attribute" } -- , direction = DirectionIn -- , mayBeNull = False -- , argDoc = -- Documentation -- { rawDocText = -- Just -- "the attribute to insert. Ownership of this\n value is assumed by the list." -- , sinceVersion = Nothing -- } -- , argScope = ScopeTypeInvalid -- , argClosure = -1 -- , argDestroy = -1 -- , argCallerAllocates = False -- , transfer = TransferEverything -- } -- ] -- Lengths: [] -- returnType: Nothing -- throws : False -- Skip return : False foreign import ccall "pango_attr_list_change" pango_attr_list_change :: Ptr AttrList -> -- list : TInterface (Name {namespace = "Pango", name = "AttrList"}) Ptr Pango.Attribute.Attribute -> -- attr : TInterface (Name {namespace = "Pango", name = "Attribute"}) IO () -- | Insert the given attribute into the t'GI.Pango.Structs.AttrList.AttrList'. It will -- replace any attributes of the same type on that segment -- and be merged with any adjoining attributes that are identical. -- -- This function is slower than 'GI.Pango.Structs.AttrList.attrListInsert' for -- creating a attribute list in order (potentially much slower -- for large lists). However, 'GI.Pango.Structs.AttrList.attrListInsert' is not -- suitable for continually changing a set of attributes -- since it never removes or combines existing attributes. attrListChange :: (B.CallStack.HasCallStack, MonadIO m) => AttrList -- ^ /@list@/: a t'GI.Pango.Structs.AttrList.AttrList' -> Pango.Attribute.Attribute -- ^ /@attr@/: the attribute to insert. Ownership of this -- value is assumed by the list. -> m () attrListChange list attr = liftIO $ do list' <- unsafeManagedPtrGetPtr list attr' <- B.ManagedPtr.disownBoxed attr pango_attr_list_change list' attr' touchManagedPtr list touchManagedPtr attr return () #if defined(ENABLE_OVERLOADING) data AttrListChangeMethodInfo instance (signature ~ (Pango.Attribute.Attribute -> m ()), MonadIO m) => O.MethodInfo AttrListChangeMethodInfo AttrList signature where overloadedMethod = attrListChange #endif -- method AttrList::copy -- method type : OrdinaryMethod -- Args: [ Arg -- { argCName = "list" -- , argType = -- TInterface Name { namespace = "Pango" , name = "AttrList" } -- , direction = DirectionIn -- , mayBeNull = False -- , argDoc = -- Documentation -- { rawDocText = Just "a #PangoAttrList, may be %NULL" -- , sinceVersion = Nothing -- } -- , argScope = ScopeTypeInvalid -- , argClosure = -1 -- , argDestroy = -1 -- , argCallerAllocates = False -- , transfer = TransferNothing -- } -- ] -- Lengths: [] -- returnType: Just (TInterface Name { namespace = "Pango" , name = "AttrList" }) -- throws : False -- Skip return : False foreign import ccall "pango_attr_list_copy" pango_attr_list_copy :: Ptr AttrList -> -- list : TInterface (Name {namespace = "Pango", name = "AttrList"}) IO (Ptr AttrList) -- | Copy /@list@/ and return an identical new list. attrListCopy :: (B.CallStack.HasCallStack, MonadIO m) => AttrList -- ^ /@list@/: a t'GI.Pango.Structs.AttrList.AttrList', may be 'P.Nothing' -> m (Maybe AttrList) -- ^ __Returns:__ the newly allocated t'GI.Pango.Structs.AttrList.AttrList', with a -- reference count of one, which should -- be freed with 'GI.Pango.Structs.AttrList.attrListUnref'. -- Returns 'P.Nothing' if /@list@/ was 'P.Nothing'. attrListCopy list = liftIO $ do list' <- unsafeManagedPtrGetPtr list result <- pango_attr_list_copy list' maybeResult <- convertIfNonNull result $ \result' -> do result'' <- (wrapBoxed AttrList) result' return result'' touchManagedPtr list return maybeResult #if defined(ENABLE_OVERLOADING) data AttrListCopyMethodInfo instance (signature ~ (m (Maybe AttrList)), MonadIO m) => O.MethodInfo AttrListCopyMethodInfo AttrList signature where overloadedMethod = attrListCopy #endif -- method AttrList::filter -- method type : OrdinaryMethod -- Args: [ Arg -- { argCName = "list" -- , argType = -- TInterface Name { namespace = "Pango" , name = "AttrList" } -- , direction = DirectionIn -- , mayBeNull = False -- , argDoc = -- Documentation -- { rawDocText = Just "a #PangoAttrList" , sinceVersion = Nothing } -- , argScope = ScopeTypeInvalid -- , argClosure = -1 -- , argDestroy = -1 -- , argCallerAllocates = False -- , transfer = TransferNothing -- } -- , Arg -- { argCName = "func" -- , argType = -- TInterface Name { namespace = "Pango" , name = "AttrFilterFunc" } -- , direction = DirectionIn -- , mayBeNull = False -- , argDoc = -- Documentation -- { rawDocText = -- Just -- "callback function; returns %TRUE\n if an attribute should be filtered out." -- , sinceVersion = Nothing -- } -- , argScope = ScopeTypeCall -- , argClosure = 2 -- , argDestroy = -1 -- , argCallerAllocates = False -- , transfer = TransferNothing -- } -- , Arg -- { argCName = "data" -- , argType = TBasicType TPtr -- , direction = DirectionIn -- , mayBeNull = True -- , argDoc = -- Documentation -- { rawDocText = Just "Data to be passed to @func" -- , sinceVersion = Nothing -- } -- , argScope = ScopeTypeInvalid -- , argClosure = -1 -- , argDestroy = -1 -- , argCallerAllocates = False -- , transfer = TransferNothing -- } -- ] -- Lengths: [] -- returnType: Just (TInterface Name { namespace = "Pango" , name = "AttrList" }) -- throws : False -- Skip return : False foreign import ccall "pango_attr_list_filter" pango_attr_list_filter :: Ptr AttrList -> -- list : TInterface (Name {namespace = "Pango", name = "AttrList"}) FunPtr Pango.Callbacks.C_AttrFilterFunc -> -- func : TInterface (Name {namespace = "Pango", name = "AttrFilterFunc"}) Ptr () -> -- data : TBasicType TPtr IO (Ptr AttrList) -- | Given a t'GI.Pango.Structs.AttrList.AttrList' and callback function, removes any elements -- of /@list@/ for which /@func@/ returns 'P.True' and inserts them into -- a new list. -- -- /Since: 1.2/ attrListFilter :: (B.CallStack.HasCallStack, MonadIO m) => AttrList -- ^ /@list@/: a t'GI.Pango.Structs.AttrList.AttrList' -> Pango.Callbacks.AttrFilterFunc -- ^ /@func@/: callback function; returns 'P.True' -- if an attribute should be filtered out. -> m (Maybe AttrList) -- ^ __Returns:__ the new t'GI.Pango.Structs.AttrList.AttrList' or -- 'P.Nothing' if no attributes of the given types were found. attrListFilter list func = liftIO $ do list' <- unsafeManagedPtrGetPtr list func' <- Pango.Callbacks.mk_AttrFilterFunc (Pango.Callbacks.wrap_AttrFilterFunc Nothing (Pango.Callbacks.drop_closures_AttrFilterFunc func)) let data_ = nullPtr result <- pango_attr_list_filter list' func' data_ maybeResult <- convertIfNonNull result $ \result' -> do result'' <- (wrapBoxed AttrList) result' return result'' safeFreeFunPtr $ castFunPtrToPtr func' touchManagedPtr list return maybeResult #if defined(ENABLE_OVERLOADING) data AttrListFilterMethodInfo instance (signature ~ (Pango.Callbacks.AttrFilterFunc -> m (Maybe AttrList)), MonadIO m) => O.MethodInfo AttrListFilterMethodInfo AttrList signature where overloadedMethod = attrListFilter #endif -- method AttrList::get_attributes -- method type : OrdinaryMethod -- Args: [ Arg -- { argCName = "list" -- , argType = -- TInterface Name { namespace = "Pango" , name = "AttrList" } -- , direction = DirectionIn -- , mayBeNull = False -- , argDoc = -- Documentation -- { rawDocText = Just "a #PangoAttrList" , sinceVersion = Nothing } -- , argScope = ScopeTypeInvalid -- , argClosure = -1 -- , argDestroy = -1 -- , argCallerAllocates = False -- , transfer = TransferNothing -- } -- ] -- Lengths: [] -- returnType: Just -- (TGSList -- (TInterface Name { namespace = "Pango" , name = "Attribute" })) -- throws : False -- Skip return : False foreign import ccall "pango_attr_list_get_attributes" pango_attr_list_get_attributes :: Ptr AttrList -> -- list : TInterface (Name {namespace = "Pango", name = "AttrList"}) IO (Ptr (GSList (Ptr Pango.Attribute.Attribute))) -- | Gets a list of all attributes in /@list@/. -- -- /Since: 1.44/ attrListGetAttributes :: (B.CallStack.HasCallStack, MonadIO m) => AttrList -- ^ /@list@/: a t'GI.Pango.Structs.AttrList.AttrList' -> m [Pango.Attribute.Attribute] -- ^ __Returns:__ -- a list of all attributes in /@list@/. To free this value, call -- 'GI.Pango.Structs.Attribute.attributeDestroy' on each value and @/g_slist_free()/@ -- on the list. attrListGetAttributes list = liftIO $ do list' <- unsafeManagedPtrGetPtr list result <- pango_attr_list_get_attributes list' result' <- unpackGSList result result'' <- mapM (wrapBoxed Pango.Attribute.Attribute) result' g_slist_free result touchManagedPtr list return result'' #if defined(ENABLE_OVERLOADING) data AttrListGetAttributesMethodInfo instance (signature ~ (m [Pango.Attribute.Attribute]), MonadIO m) => O.MethodInfo AttrListGetAttributesMethodInfo AttrList signature where overloadedMethod = attrListGetAttributes #endif -- method AttrList::get_iterator -- method type : OrdinaryMethod -- Args: [ Arg -- { argCName = "list" -- , argType = -- TInterface Name { namespace = "Pango" , name = "AttrList" } -- , direction = DirectionIn -- , mayBeNull = False -- , argDoc = -- Documentation -- { rawDocText = Just "a #PangoAttrList" , sinceVersion = Nothing } -- , argScope = ScopeTypeInvalid -- , argClosure = -1 -- , argDestroy = -1 -- , argCallerAllocates = False -- , transfer = TransferNothing -- } -- ] -- Lengths: [] -- returnType: Just -- (TInterface Name { namespace = "Pango" , name = "AttrIterator" }) -- throws : False -- Skip return : False foreign import ccall "pango_attr_list_get_iterator" pango_attr_list_get_iterator :: Ptr AttrList -> -- list : TInterface (Name {namespace = "Pango", name = "AttrList"}) IO (Ptr Pango.AttrIterator.AttrIterator) -- | Create a iterator initialized to the beginning of the list. -- /@list@/ must not be modified until this iterator is freed. attrListGetIterator :: (B.CallStack.HasCallStack, MonadIO m) => AttrList -- ^ /@list@/: a t'GI.Pango.Structs.AttrList.AttrList' -> m Pango.AttrIterator.AttrIterator -- ^ __Returns:__ the newly allocated t'GI.Pango.Structs.AttrIterator.AttrIterator', which should -- be freed with 'GI.Pango.Structs.AttrIterator.attrIteratorDestroy'. attrListGetIterator list = liftIO $ do list' <- unsafeManagedPtrGetPtr list result <- pango_attr_list_get_iterator list' checkUnexpectedReturnNULL "attrListGetIterator" result result' <- (wrapBoxed Pango.AttrIterator.AttrIterator) result touchManagedPtr list return result' #if defined(ENABLE_OVERLOADING) data AttrListGetIteratorMethodInfo instance (signature ~ (m Pango.AttrIterator.AttrIterator), MonadIO m) => O.MethodInfo AttrListGetIteratorMethodInfo AttrList signature where overloadedMethod = attrListGetIterator #endif -- method AttrList::insert -- method type : OrdinaryMethod -- Args: [ Arg -- { argCName = "list" -- , argType = -- TInterface Name { namespace = "Pango" , name = "AttrList" } -- , direction = DirectionIn -- , mayBeNull = False -- , argDoc = -- Documentation -- { rawDocText = Just "a #PangoAttrList" , sinceVersion = Nothing } -- , argScope = ScopeTypeInvalid -- , argClosure = -1 -- , argDestroy = -1 -- , argCallerAllocates = False -- , transfer = TransferNothing -- } -- , Arg -- { argCName = "attr" -- , argType = -- TInterface Name { namespace = "Pango" , name = "Attribute" } -- , direction = DirectionIn -- , mayBeNull = False -- , argDoc = -- Documentation -- { rawDocText = -- Just -- "the attribute to insert. Ownership of this\n value is assumed by the list." -- , sinceVersion = Nothing -- } -- , argScope = ScopeTypeInvalid -- , argClosure = -1 -- , argDestroy = -1 -- , argCallerAllocates = False -- , transfer = TransferEverything -- } -- ] -- Lengths: [] -- returnType: Nothing -- throws : False -- Skip return : False foreign import ccall "pango_attr_list_insert" pango_attr_list_insert :: Ptr AttrList -> -- list : TInterface (Name {namespace = "Pango", name = "AttrList"}) Ptr Pango.Attribute.Attribute -> -- attr : TInterface (Name {namespace = "Pango", name = "Attribute"}) IO () -- | Insert the given attribute into the t'GI.Pango.Structs.AttrList.AttrList'. It will -- be inserted after all other attributes with a matching -- /@startIndex@/. attrListInsert :: (B.CallStack.HasCallStack, MonadIO m) => AttrList -- ^ /@list@/: a t'GI.Pango.Structs.AttrList.AttrList' -> Pango.Attribute.Attribute -- ^ /@attr@/: the attribute to insert. Ownership of this -- value is assumed by the list. -> m () attrListInsert list attr = liftIO $ do list' <- unsafeManagedPtrGetPtr list attr' <- B.ManagedPtr.disownBoxed attr pango_attr_list_insert list' attr' touchManagedPtr list touchManagedPtr attr return () #if defined(ENABLE_OVERLOADING) data AttrListInsertMethodInfo instance (signature ~ (Pango.Attribute.Attribute -> m ()), MonadIO m) => O.MethodInfo AttrListInsertMethodInfo AttrList signature where overloadedMethod = attrListInsert #endif -- method AttrList::insert_before -- method type : OrdinaryMethod -- Args: [ Arg -- { argCName = "list" -- , argType = -- TInterface Name { namespace = "Pango" , name = "AttrList" } -- , direction = DirectionIn -- , mayBeNull = False -- , argDoc = -- Documentation -- { rawDocText = Just "a #PangoAttrList" , sinceVersion = Nothing } -- , argScope = ScopeTypeInvalid -- , argClosure = -1 -- , argDestroy = -1 -- , argCallerAllocates = False -- , transfer = TransferNothing -- } -- , Arg -- { argCName = "attr" -- , argType = -- TInterface Name { namespace = "Pango" , name = "Attribute" } -- , direction = DirectionIn -- , mayBeNull = False -- , argDoc = -- Documentation -- { rawDocText = -- Just -- "the attribute to insert. Ownership of this\n value is assumed by the list." -- , sinceVersion = Nothing -- } -- , argScope = ScopeTypeInvalid -- , argClosure = -1 -- , argDestroy = -1 -- , argCallerAllocates = False -- , transfer = TransferEverything -- } -- ] -- Lengths: [] -- returnType: Nothing -- throws : False -- Skip return : False foreign import ccall "pango_attr_list_insert_before" pango_attr_list_insert_before :: Ptr AttrList -> -- list : TInterface (Name {namespace = "Pango", name = "AttrList"}) Ptr Pango.Attribute.Attribute -> -- attr : TInterface (Name {namespace = "Pango", name = "Attribute"}) IO () -- | Insert the given attribute into the t'GI.Pango.Structs.AttrList.AttrList'. It will -- be inserted before all other attributes with a matching -- /@startIndex@/. attrListInsertBefore :: (B.CallStack.HasCallStack, MonadIO m) => AttrList -- ^ /@list@/: a t'GI.Pango.Structs.AttrList.AttrList' -> Pango.Attribute.Attribute -- ^ /@attr@/: the attribute to insert. Ownership of this -- value is assumed by the list. -> m () attrListInsertBefore list attr = liftIO $ do list' <- unsafeManagedPtrGetPtr list attr' <- B.ManagedPtr.disownBoxed attr pango_attr_list_insert_before list' attr' touchManagedPtr list touchManagedPtr attr return () #if defined(ENABLE_OVERLOADING) data AttrListInsertBeforeMethodInfo instance (signature ~ (Pango.Attribute.Attribute -> m ()), MonadIO m) => O.MethodInfo AttrListInsertBeforeMethodInfo AttrList signature where overloadedMethod = attrListInsertBefore #endif -- method AttrList::ref -- method type : OrdinaryMethod -- Args: [ Arg -- { argCName = "list" -- , argType = -- TInterface Name { namespace = "Pango" , name = "AttrList" } -- , direction = DirectionIn -- , mayBeNull = False -- , argDoc = -- Documentation -- { rawDocText = Just "a #PangoAttrList, may be %NULL" -- , sinceVersion = Nothing -- } -- , argScope = ScopeTypeInvalid -- , argClosure = -1 -- , argDestroy = -1 -- , argCallerAllocates = False -- , transfer = TransferNothing -- } -- ] -- Lengths: [] -- returnType: Just (TInterface Name { namespace = "Pango" , name = "AttrList" }) -- throws : False -- Skip return : False foreign import ccall "pango_attr_list_ref" pango_attr_list_ref :: Ptr AttrList -> -- list : TInterface (Name {namespace = "Pango", name = "AttrList"}) IO (Ptr AttrList) -- | Increase the reference count of the given attribute list by one. -- -- /Since: 1.10/ attrListRef :: (B.CallStack.HasCallStack, MonadIO m) => AttrList -- ^ /@list@/: a t'GI.Pango.Structs.AttrList.AttrList', may be 'P.Nothing' -> m AttrList -- ^ __Returns:__ The attribute list passed in attrListRef list = liftIO $ do list' <- unsafeManagedPtrGetPtr list result <- pango_attr_list_ref list' checkUnexpectedReturnNULL "attrListRef" result result' <- (wrapBoxed AttrList) result touchManagedPtr list return result' #if defined(ENABLE_OVERLOADING) data AttrListRefMethodInfo instance (signature ~ (m AttrList), MonadIO m) => O.MethodInfo AttrListRefMethodInfo AttrList signature where overloadedMethod = attrListRef #endif -- method AttrList::splice -- method type : OrdinaryMethod -- Args: [ Arg -- { argCName = "list" -- , argType = -- TInterface Name { namespace = "Pango" , name = "AttrList" } -- , direction = DirectionIn -- , mayBeNull = False -- , argDoc = -- Documentation -- { rawDocText = Just "a #PangoAttrList" , sinceVersion = Nothing } -- , argScope = ScopeTypeInvalid -- , argClosure = -1 -- , argDestroy = -1 -- , argCallerAllocates = False -- , transfer = TransferNothing -- } -- , Arg -- { argCName = "other" -- , argType = -- TInterface Name { namespace = "Pango" , name = "AttrList" } -- , direction = DirectionIn -- , mayBeNull = False -- , argDoc = -- Documentation -- { rawDocText = Just "another #PangoAttrList" -- , sinceVersion = Nothing -- } -- , argScope = ScopeTypeInvalid -- , argClosure = -1 -- , argDestroy = -1 -- , argCallerAllocates = False -- , transfer = TransferNothing -- } -- , Arg -- { argCName = "pos" -- , argType = TBasicType TInt -- , direction = DirectionIn -- , mayBeNull = False -- , argDoc = -- Documentation -- { rawDocText = -- Just "the position in @list at which to insert @other" -- , sinceVersion = Nothing -- } -- , argScope = ScopeTypeInvalid -- , argClosure = -1 -- , argDestroy = -1 -- , argCallerAllocates = False -- , transfer = TransferNothing -- } -- , Arg -- { argCName = "len" -- , argType = TBasicType TInt -- , direction = DirectionIn -- , mayBeNull = False -- , argDoc = -- Documentation -- { rawDocText = -- Just -- "the length of the spliced segment. (Note that this\n must be specified since the attributes in @other\n may only be present at some subsection of this range)" -- , sinceVersion = Nothing -- } -- , argScope = ScopeTypeInvalid -- , argClosure = -1 -- , argDestroy = -1 -- , argCallerAllocates = False -- , transfer = TransferNothing -- } -- ] -- Lengths: [] -- returnType: Nothing -- throws : False -- Skip return : False foreign import ccall "pango_attr_list_splice" pango_attr_list_splice :: Ptr AttrList -> -- list : TInterface (Name {namespace = "Pango", name = "AttrList"}) Ptr AttrList -> -- other : TInterface (Name {namespace = "Pango", name = "AttrList"}) Int32 -> -- pos : TBasicType TInt Int32 -> -- len : TBasicType TInt IO () -- | This function opens up a hole in /@list@/, fills it in with attributes from -- the left, and then merges /@other@/ on top of the hole. -- -- This operation is equivalent to stretching every attribute -- that applies at position /@pos@/ in /@list@/ by an amount /@len@/, -- and then calling 'GI.Pango.Structs.AttrList.attrListChange' with a copy -- of each attribute in /@other@/ in sequence (offset in position by /@pos@/). -- -- This operation proves useful for, for instance, inserting -- a pre-edit string in the middle of an edit buffer. attrListSplice :: (B.CallStack.HasCallStack, MonadIO m) => AttrList -- ^ /@list@/: a t'GI.Pango.Structs.AttrList.AttrList' -> AttrList -- ^ /@other@/: another t'GI.Pango.Structs.AttrList.AttrList' -> Int32 -- ^ /@pos@/: the position in /@list@/ at which to insert /@other@/ -> Int32 -- ^ /@len@/: the length of the spliced segment. (Note that this -- must be specified since the attributes in /@other@/ -- may only be present at some subsection of this range) -> m () attrListSplice list other pos len = liftIO $ do list' <- unsafeManagedPtrGetPtr list other' <- unsafeManagedPtrGetPtr other pango_attr_list_splice list' other' pos len touchManagedPtr list touchManagedPtr other return () #if defined(ENABLE_OVERLOADING) data AttrListSpliceMethodInfo instance (signature ~ (AttrList -> Int32 -> Int32 -> m ()), MonadIO m) => O.MethodInfo AttrListSpliceMethodInfo AttrList signature where overloadedMethod = attrListSplice #endif -- method AttrList::unref -- method type : OrdinaryMethod -- Args: [ Arg -- { argCName = "list" -- , argType = -- TInterface Name { namespace = "Pango" , name = "AttrList" } -- , direction = DirectionIn -- , mayBeNull = False -- , argDoc = -- Documentation -- { rawDocText = Just "a #PangoAttrList, may be %NULL" -- , sinceVersion = Nothing -- } -- , argScope = ScopeTypeInvalid -- , argClosure = -1 -- , argDestroy = -1 -- , argCallerAllocates = False -- , transfer = TransferNothing -- } -- ] -- Lengths: [] -- returnType: Nothing -- throws : False -- Skip return : False foreign import ccall "pango_attr_list_unref" pango_attr_list_unref :: Ptr AttrList -> -- list : TInterface (Name {namespace = "Pango", name = "AttrList"}) IO () -- | Decrease the reference count of the given attribute list by one. -- If the result is zero, free the attribute list and the attributes -- it contains. attrListUnref :: (B.CallStack.HasCallStack, MonadIO m) => AttrList -- ^ /@list@/: a t'GI.Pango.Structs.AttrList.AttrList', may be 'P.Nothing' -> m () attrListUnref list = liftIO $ do list' <- unsafeManagedPtrGetPtr list pango_attr_list_unref list' touchManagedPtr list return () #if defined(ENABLE_OVERLOADING) data AttrListUnrefMethodInfo instance (signature ~ (m ()), MonadIO m) => O.MethodInfo AttrListUnrefMethodInfo AttrList signature where overloadedMethod = attrListUnref #endif -- method AttrList::update -- method type : OrdinaryMethod -- Args: [ Arg -- { argCName = "list" -- , argType = -- TInterface Name { namespace = "Pango" , name = "AttrList" } -- , direction = DirectionIn -- , mayBeNull = False -- , argDoc = -- Documentation -- { rawDocText = Just "a #PangoAttrList" , sinceVersion = Nothing } -- , argScope = ScopeTypeInvalid -- , argClosure = -1 -- , argDestroy = -1 -- , argCallerAllocates = False -- , transfer = TransferNothing -- } -- , Arg -- { argCName = "pos" -- , argType = TBasicType TInt -- , direction = DirectionIn -- , mayBeNull = False -- , argDoc = -- Documentation -- { rawDocText = Just "the position of the change" -- , sinceVersion = Nothing -- } -- , argScope = ScopeTypeInvalid -- , argClosure = -1 -- , argDestroy = -1 -- , argCallerAllocates = False -- , transfer = TransferNothing -- } -- , Arg -- { argCName = "remove" -- , argType = TBasicType TInt -- , direction = DirectionIn -- , mayBeNull = False -- , argDoc = -- Documentation -- { rawDocText = Just "the number of removed bytes" -- , sinceVersion = Nothing -- } -- , argScope = ScopeTypeInvalid -- , argClosure = -1 -- , argDestroy = -1 -- , argCallerAllocates = False -- , transfer = TransferNothing -- } -- , Arg -- { argCName = "add" -- , argType = TBasicType TInt -- , direction = DirectionIn -- , mayBeNull = False -- , argDoc = -- Documentation -- { rawDocText = Just "the number of added bytes" -- , sinceVersion = Nothing -- } -- , argScope = ScopeTypeInvalid -- , argClosure = -1 -- , argDestroy = -1 -- , argCallerAllocates = False -- , transfer = TransferNothing -- } -- ] -- Lengths: [] -- returnType: Nothing -- throws : False -- Skip return : False foreign import ccall "pango_attr_list_update" pango_attr_list_update :: Ptr AttrList -> -- list : TInterface (Name {namespace = "Pango", name = "AttrList"}) Int32 -> -- pos : TBasicType TInt Int32 -> -- remove : TBasicType TInt Int32 -> -- add : TBasicType TInt IO () -- | Update indices of attributes in /@list@/ for -- a change in the text they refer to. -- -- The change that this function applies is -- removing /@remove@/ bytes at position /@pos@/ -- and inserting /@add@/ bytes instead. -- -- Attributes that fall entirely in the -- (/@pos@/, /@pos@/ + /@remove@/) range are removed. -- -- Attributes that start or end inside the -- (/@pos@/, /@pos@/ + /@remove@/) range are shortened to -- reflect the removal. -- -- Attributes start and end positions are updated -- if they are behind /@pos@/ + /@remove@/. -- -- /Since: 1.44/ attrListUpdate :: (B.CallStack.HasCallStack, MonadIO m) => AttrList -- ^ /@list@/: a t'GI.Pango.Structs.AttrList.AttrList' -> Int32 -- ^ /@pos@/: the position of the change -> Int32 -- ^ /@remove@/: the number of removed bytes -> Int32 -- ^ /@add@/: the number of added bytes -> m () attrListUpdate list pos remove add = liftIO $ do list' <- unsafeManagedPtrGetPtr list pango_attr_list_update list' pos remove add touchManagedPtr list return () #if defined(ENABLE_OVERLOADING) data AttrListUpdateMethodInfo instance (signature ~ (Int32 -> Int32 -> Int32 -> m ()), MonadIO m) => O.MethodInfo AttrListUpdateMethodInfo AttrList signature where overloadedMethod = attrListUpdate #endif #if defined(ENABLE_OVERLOADING) type family ResolveAttrListMethod (t :: Symbol) (o :: *) :: * where ResolveAttrListMethod "change" o = AttrListChangeMethodInfo ResolveAttrListMethod "copy" o = AttrListCopyMethodInfo ResolveAttrListMethod "filter" o = AttrListFilterMethodInfo ResolveAttrListMethod "insert" o = AttrListInsertMethodInfo ResolveAttrListMethod "insertBefore" o = AttrListInsertBeforeMethodInfo ResolveAttrListMethod "ref" o = AttrListRefMethodInfo ResolveAttrListMethod "splice" o = AttrListSpliceMethodInfo ResolveAttrListMethod "unref" o = AttrListUnrefMethodInfo ResolveAttrListMethod "update" o = AttrListUpdateMethodInfo ResolveAttrListMethod "getAttributes" o = AttrListGetAttributesMethodInfo ResolveAttrListMethod "getIterator" o = AttrListGetIteratorMethodInfo ResolveAttrListMethod l o = O.MethodResolutionFailed l o instance (info ~ ResolveAttrListMethod t AttrList, O.MethodInfo info AttrList p) => OL.IsLabel t (AttrList -> p) where #if MIN_VERSION_base(4,10,0) fromLabel = O.overloadedMethod @info #else fromLabel _ = O.overloadedMethod @info #endif #endif