{-# LANGUAGE TypeApplications #-}
#if !defined(__HADDOCK_VERSION__)
#define ENABLE_OVERLOADING
#endif
module GI.GLib.Structs.Node
(
Node(..) ,
newZeroNode ,
#if defined(ENABLE_OVERLOADING)
ResolveNodeMethod ,
#endif
#if defined(ENABLE_OVERLOADING)
NodeChildIndexMethodInfo ,
#endif
nodeChildIndex ,
#if defined(ENABLE_OVERLOADING)
NodeChildPositionMethodInfo ,
#endif
nodeChildPosition ,
#if defined(ENABLE_OVERLOADING)
NodeChildrenForeachMethodInfo ,
#endif
nodeChildrenForeach ,
#if defined(ENABLE_OVERLOADING)
NodeDepthMethodInfo ,
#endif
nodeDepth ,
#if defined(ENABLE_OVERLOADING)
NodeDestroyMethodInfo ,
#endif
nodeDestroy ,
#if defined(ENABLE_OVERLOADING)
NodeIsAncestorMethodInfo ,
#endif
nodeIsAncestor ,
#if defined(ENABLE_OVERLOADING)
NodeMaxHeightMethodInfo ,
#endif
nodeMaxHeight ,
#if defined(ENABLE_OVERLOADING)
NodeNChildrenMethodInfo ,
#endif
nodeNChildren ,
#if defined(ENABLE_OVERLOADING)
NodeNNodesMethodInfo ,
#endif
nodeNNodes ,
nodePopAllocator ,
nodePushAllocator ,
#if defined(ENABLE_OVERLOADING)
NodeReverseChildrenMethodInfo ,
#endif
nodeReverseChildren ,
#if defined(ENABLE_OVERLOADING)
NodeTraverseMethodInfo ,
#endif
nodeTraverse ,
#if defined(ENABLE_OVERLOADING)
NodeUnlinkMethodInfo ,
#endif
nodeUnlink ,
clearNodeChildren ,
getNodeChildren ,
#if defined(ENABLE_OVERLOADING)
node_children ,
#endif
setNodeChildren ,
clearNodeData ,
getNodeData ,
#if defined(ENABLE_OVERLOADING)
node_data ,
#endif
setNodeData ,
clearNodeNext ,
getNodeNext ,
#if defined(ENABLE_OVERLOADING)
node_next ,
#endif
setNodeNext ,
clearNodeParent ,
getNodeParent ,
#if defined(ENABLE_OVERLOADING)
node_parent ,
#endif
setNodeParent ,
clearNodePrev ,
getNodePrev ,
#if defined(ENABLE_OVERLOADING)
node_prev ,
#endif
setNodePrev ,
) 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.BasicTypes as B.Types
import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr
import qualified Data.GI.Base.GArray as B.GArray
import qualified Data.GI.Base.GClosure as B.GClosure
import qualified Data.GI.Base.GError as B.GError
import qualified Data.GI.Base.GHashTable as B.GHT
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 Control.Monad.IO.Class as MIO
import qualified Data.Coerce as Coerce
import qualified Data.Text as T
import qualified Data.Kind as DK
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 GHC.Records as R
import qualified Data.Word as DW
import qualified Data.Int as DI
import qualified System.Posix.Types as SPT
import qualified Foreign.C.Types as FCT
#if MIN_VERSION_base(4,18,0)
import qualified GI.GLib.Callbacks as GLib.Callbacks
import {-# SOURCE #-} qualified GI.GLib.Enums as GLib.Enums
import {-# SOURCE #-} qualified GI.GLib.Flags as GLib.Flags
import {-# SOURCE #-} qualified GI.GLib.Structs.Allocator as GLib.Allocator
#else
import qualified GI.GLib.Callbacks as GLib.Callbacks
import {-# SOURCE #-} qualified GI.GLib.Enums as GLib.Enums
import {-# SOURCE #-} qualified GI.GLib.Flags as GLib.Flags
import {-# SOURCE #-} qualified GI.GLib.Structs.Allocator as GLib.Allocator
#endif
newtype Node = Node (SP.ManagedPtr Node)
deriving (Node -> Node -> Bool
(Node -> Node -> Bool) -> (Node -> Node -> Bool) -> Eq Node
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Node -> Node -> Bool
== :: Node -> Node -> Bool
$c/= :: Node -> Node -> Bool
/= :: Node -> Node -> Bool
Eq)
instance SP.ManagedPtrNewtype Node where
toManagedPtr :: Node -> ManagedPtr Node
toManagedPtr (Node ManagedPtr Node
p) = ManagedPtr Node
p
instance BoxedPtr Node where
boxedPtrCopy :: Node -> IO Node
boxedPtrCopy = \Node
p -> Node -> (Ptr Node -> IO Node) -> IO Node
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
B.ManagedPtr.withManagedPtr Node
p (Int -> Ptr Node -> IO (Ptr Node)
forall a. (HasCallStack, CallocPtr a) => Int -> Ptr a -> IO (Ptr a)
copyBytes Int
40 (Ptr Node -> IO (Ptr Node))
-> (Ptr Node -> IO Node) -> Ptr Node -> IO Node
forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> (ManagedPtr Node -> Node) -> Ptr Node -> IO Node
forall a.
(HasCallStack, BoxedPtr a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
B.ManagedPtr.wrapPtr ManagedPtr Node -> Node
Node)
boxedPtrFree :: Node -> IO ()
boxedPtrFree = \Node
x -> Node -> (Ptr Node -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
SP.withManagedPtr Node
x Ptr Node -> IO ()
forall a. Ptr a -> IO ()
SP.freeMem
instance CallocPtr Node where
boxedPtrCalloc :: IO (Ptr Node)
boxedPtrCalloc = Int -> IO (Ptr Node)
forall a. Int -> IO (Ptr a)
callocBytes Int
40
newZeroNode :: MonadIO m => m Node
newZeroNode :: forall (m :: * -> *). MonadIO m => m Node
newZeroNode = IO Node -> m Node
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Node -> m Node) -> IO Node -> m Node
forall a b. (a -> b) -> a -> b
$ IO (Ptr Node)
forall a. CallocPtr a => IO (Ptr a)
boxedPtrCalloc IO (Ptr Node) -> (Ptr Node -> IO Node) -> IO Node
forall a b. IO a -> (a -> IO b) -> IO b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (ManagedPtr Node -> Node) -> Ptr Node -> IO Node
forall a.
(HasCallStack, BoxedPtr a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
wrapPtr ManagedPtr Node -> Node
Node
instance tag ~ 'AttrSet => Constructible Node tag where
new :: forall (m :: * -> *).
MonadIO m =>
(ManagedPtr Node -> Node) -> [AttrOp Node tag] -> m Node
new ManagedPtr Node -> Node
_ [AttrOp Node tag]
attrs = do
o <- m Node
forall (m :: * -> *). MonadIO m => m Node
newZeroNode
GI.Attributes.set o attrs
return o
getNodeData :: MonadIO m => Node -> m (Ptr ())
getNodeData :: forall (m :: * -> *). MonadIO m => Node -> m (Ptr ())
getNodeData Node
s = IO (Ptr ()) -> m (Ptr ())
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Ptr ()) -> m (Ptr ())) -> IO (Ptr ()) -> m (Ptr ())
forall a b. (a -> b) -> a -> b
$ Node -> (Ptr Node -> IO (Ptr ())) -> IO (Ptr ())
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr Node
s ((Ptr Node -> IO (Ptr ())) -> IO (Ptr ()))
-> (Ptr Node -> IO (Ptr ())) -> IO (Ptr ())
forall a b. (a -> b) -> a -> b
$ \Ptr Node
ptr -> do
val <- Ptr (Ptr ()) -> IO (Ptr ())
forall a. Storable a => Ptr a -> IO a
peek (Ptr Node
ptr Ptr Node -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0) :: IO (Ptr ())
return val
setNodeData :: MonadIO m => Node -> Ptr () -> m ()
setNodeData :: forall (m :: * -> *). MonadIO m => Node -> Ptr () -> m ()
setNodeData Node
s Ptr ()
val = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ Node -> (Ptr Node -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr Node
s ((Ptr Node -> IO ()) -> IO ()) -> (Ptr Node -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Node
ptr -> do
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr Node
ptr Ptr Node -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0) (Ptr ()
val :: Ptr ())
clearNodeData :: MonadIO m => Node -> m ()
clearNodeData :: forall (m :: * -> *). MonadIO m => Node -> m ()
clearNodeData Node
s = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ Node -> (Ptr Node -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr Node
s ((Ptr Node -> IO ()) -> IO ()) -> (Ptr Node -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Node
ptr -> do
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr Node
ptr Ptr Node -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0) (Ptr ()
forall a. Ptr a
FP.nullPtr :: Ptr ())
#if defined(ENABLE_OVERLOADING)
data NodeDataFieldInfo
instance AttrInfo NodeDataFieldInfo where
type AttrBaseTypeConstraint NodeDataFieldInfo = (~) Node
type AttrAllowedOps NodeDataFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
type AttrSetTypeConstraint NodeDataFieldInfo = (~) (Ptr ())
type AttrTransferTypeConstraint NodeDataFieldInfo = (~)(Ptr ())
type AttrTransferType NodeDataFieldInfo = (Ptr ())
type AttrGetType NodeDataFieldInfo = Ptr ()
type AttrLabel NodeDataFieldInfo = "data"
type AttrOrigin NodeDataFieldInfo = Node
attrGet = getNodeData
attrSet = setNodeData
attrConstruct = undefined
attrClear = clearNodeData
attrTransfer _ v = do
return v
dbgAttrInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.GLib.Structs.Node.data"
, O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-glib-2.0.30/docs/GI-GLib-Structs-Node.html#g:attr:data"
})
node_data :: AttrLabelProxy "data"
node_data = AttrLabelProxy
#endif
getNodeNext :: MonadIO m => Node -> m (Maybe Node)
getNodeNext :: forall (m :: * -> *). MonadIO m => Node -> m (Maybe Node)
getNodeNext Node
s = IO (Maybe Node) -> m (Maybe Node)
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Maybe Node) -> m (Maybe Node))
-> IO (Maybe Node) -> m (Maybe Node)
forall a b. (a -> b) -> a -> b
$ Node -> (Ptr Node -> IO (Maybe Node)) -> IO (Maybe Node)
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr Node
s ((Ptr Node -> IO (Maybe Node)) -> IO (Maybe Node))
-> (Ptr Node -> IO (Maybe Node)) -> IO (Maybe Node)
forall a b. (a -> b) -> a -> b
$ \Ptr Node
ptr -> do
val <- Ptr (Ptr Node) -> IO (Ptr Node)
forall a. Storable a => Ptr a -> IO a
peek (Ptr Node
ptr Ptr Node -> Int -> Ptr (Ptr Node)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8) :: IO (Ptr Node)
result <- SP.convertIfNonNull val $ \Ptr Node
val' -> do
val'' <- ((ManagedPtr Node -> Node) -> Ptr Node -> IO Node
forall a.
(HasCallStack, BoxedPtr a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
newPtr ManagedPtr Node -> Node
Node) Ptr Node
val'
return val''
return result
setNodeNext :: MonadIO m => Node -> Ptr Node -> m ()
setNodeNext :: forall (m :: * -> *). MonadIO m => Node -> Ptr Node -> m ()
setNodeNext Node
s Ptr Node
val = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ Node -> (Ptr Node -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr Node
s ((Ptr Node -> IO ()) -> IO ()) -> (Ptr Node -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Node
ptr -> do
Ptr (Ptr Node) -> Ptr Node -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr Node
ptr Ptr Node -> Int -> Ptr (Ptr Node)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8) (Ptr Node
val :: Ptr Node)
clearNodeNext :: MonadIO m => Node -> m ()
clearNodeNext :: forall (m :: * -> *). MonadIO m => Node -> m ()
clearNodeNext Node
s = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ Node -> (Ptr Node -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr Node
s ((Ptr Node -> IO ()) -> IO ()) -> (Ptr Node -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Node
ptr -> do
Ptr (Ptr Node) -> Ptr Node -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr Node
ptr Ptr Node -> Int -> Ptr (Ptr Node)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8) (Ptr Node
forall a. Ptr a
FP.nullPtr :: Ptr Node)
#if defined(ENABLE_OVERLOADING)
data NodeNextFieldInfo
instance AttrInfo NodeNextFieldInfo where
type AttrBaseTypeConstraint NodeNextFieldInfo = (~) Node
type AttrAllowedOps NodeNextFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
type AttrSetTypeConstraint NodeNextFieldInfo = (~) (Ptr Node)
type AttrTransferTypeConstraint NodeNextFieldInfo = (~)(Ptr Node)
type AttrTransferType NodeNextFieldInfo = (Ptr Node)
type AttrGetType NodeNextFieldInfo = Maybe Node
type AttrLabel NodeNextFieldInfo = "next"
type AttrOrigin NodeNextFieldInfo = Node
attrGet = getNodeNext
attrSet = setNodeNext
attrConstruct = undefined
attrClear = clearNodeNext
attrTransfer _ v = do
return v
dbgAttrInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.GLib.Structs.Node.next"
, O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-glib-2.0.30/docs/GI-GLib-Structs-Node.html#g:attr:next"
})
node_next :: AttrLabelProxy "next"
node_next = AttrLabelProxy
#endif
getNodePrev :: MonadIO m => Node -> m (Maybe Node)
getNodePrev :: forall (m :: * -> *). MonadIO m => Node -> m (Maybe Node)
getNodePrev Node
s = IO (Maybe Node) -> m (Maybe Node)
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Maybe Node) -> m (Maybe Node))
-> IO (Maybe Node) -> m (Maybe Node)
forall a b. (a -> b) -> a -> b
$ Node -> (Ptr Node -> IO (Maybe Node)) -> IO (Maybe Node)
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr Node
s ((Ptr Node -> IO (Maybe Node)) -> IO (Maybe Node))
-> (Ptr Node -> IO (Maybe Node)) -> IO (Maybe Node)
forall a b. (a -> b) -> a -> b
$ \Ptr Node
ptr -> do
val <- Ptr (Ptr Node) -> IO (Ptr Node)
forall a. Storable a => Ptr a -> IO a
peek (Ptr Node
ptr Ptr Node -> Int -> Ptr (Ptr Node)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16) :: IO (Ptr Node)
result <- SP.convertIfNonNull val $ \Ptr Node
val' -> do
val'' <- ((ManagedPtr Node -> Node) -> Ptr Node -> IO Node
forall a.
(HasCallStack, BoxedPtr a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
newPtr ManagedPtr Node -> Node
Node) Ptr Node
val'
return val''
return result
setNodePrev :: MonadIO m => Node -> Ptr Node -> m ()
setNodePrev :: forall (m :: * -> *). MonadIO m => Node -> Ptr Node -> m ()
setNodePrev Node
s Ptr Node
val = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ Node -> (Ptr Node -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr Node
s ((Ptr Node -> IO ()) -> IO ()) -> (Ptr Node -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Node
ptr -> do
Ptr (Ptr Node) -> Ptr Node -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr Node
ptr Ptr Node -> Int -> Ptr (Ptr Node)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16) (Ptr Node
val :: Ptr Node)
clearNodePrev :: MonadIO m => Node -> m ()
clearNodePrev :: forall (m :: * -> *). MonadIO m => Node -> m ()
clearNodePrev Node
s = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ Node -> (Ptr Node -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr Node
s ((Ptr Node -> IO ()) -> IO ()) -> (Ptr Node -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Node
ptr -> do
Ptr (Ptr Node) -> Ptr Node -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr Node
ptr Ptr Node -> Int -> Ptr (Ptr Node)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16) (Ptr Node
forall a. Ptr a
FP.nullPtr :: Ptr Node)
#if defined(ENABLE_OVERLOADING)
data NodePrevFieldInfo
instance AttrInfo NodePrevFieldInfo where
type AttrBaseTypeConstraint NodePrevFieldInfo = (~) Node
type AttrAllowedOps NodePrevFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
type AttrSetTypeConstraint NodePrevFieldInfo = (~) (Ptr Node)
type AttrTransferTypeConstraint NodePrevFieldInfo = (~)(Ptr Node)
type AttrTransferType NodePrevFieldInfo = (Ptr Node)
type AttrGetType NodePrevFieldInfo = Maybe Node
type AttrLabel NodePrevFieldInfo = "prev"
type AttrOrigin NodePrevFieldInfo = Node
attrGet = getNodePrev
attrSet = setNodePrev
attrConstruct = undefined
attrClear = clearNodePrev
attrTransfer _ v = do
return v
dbgAttrInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.GLib.Structs.Node.prev"
, O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-glib-2.0.30/docs/GI-GLib-Structs-Node.html#g:attr:prev"
})
node_prev :: AttrLabelProxy "prev"
node_prev = AttrLabelProxy
#endif
getNodeParent :: MonadIO m => Node -> m (Maybe Node)
getNodeParent :: forall (m :: * -> *). MonadIO m => Node -> m (Maybe Node)
getNodeParent Node
s = IO (Maybe Node) -> m (Maybe Node)
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Maybe Node) -> m (Maybe Node))
-> IO (Maybe Node) -> m (Maybe Node)
forall a b. (a -> b) -> a -> b
$ Node -> (Ptr Node -> IO (Maybe Node)) -> IO (Maybe Node)
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr Node
s ((Ptr Node -> IO (Maybe Node)) -> IO (Maybe Node))
-> (Ptr Node -> IO (Maybe Node)) -> IO (Maybe Node)
forall a b. (a -> b) -> a -> b
$ \Ptr Node
ptr -> do
val <- Ptr (Ptr Node) -> IO (Ptr Node)
forall a. Storable a => Ptr a -> IO a
peek (Ptr Node
ptr Ptr Node -> Int -> Ptr (Ptr Node)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24) :: IO (Ptr Node)
result <- SP.convertIfNonNull val $ \Ptr Node
val' -> do
val'' <- ((ManagedPtr Node -> Node) -> Ptr Node -> IO Node
forall a.
(HasCallStack, BoxedPtr a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
newPtr ManagedPtr Node -> Node
Node) Ptr Node
val'
return val''
return result
setNodeParent :: MonadIO m => Node -> Ptr Node -> m ()
setNodeParent :: forall (m :: * -> *). MonadIO m => Node -> Ptr Node -> m ()
setNodeParent Node
s Ptr Node
val = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ Node -> (Ptr Node -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr Node
s ((Ptr Node -> IO ()) -> IO ()) -> (Ptr Node -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Node
ptr -> do
Ptr (Ptr Node) -> Ptr Node -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr Node
ptr Ptr Node -> Int -> Ptr (Ptr Node)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24) (Ptr Node
val :: Ptr Node)
clearNodeParent :: MonadIO m => Node -> m ()
clearNodeParent :: forall (m :: * -> *). MonadIO m => Node -> m ()
clearNodeParent Node
s = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ Node -> (Ptr Node -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr Node
s ((Ptr Node -> IO ()) -> IO ()) -> (Ptr Node -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Node
ptr -> do
Ptr (Ptr Node) -> Ptr Node -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr Node
ptr Ptr Node -> Int -> Ptr (Ptr Node)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24) (Ptr Node
forall a. Ptr a
FP.nullPtr :: Ptr Node)
#if defined(ENABLE_OVERLOADING)
data NodeParentFieldInfo
instance AttrInfo NodeParentFieldInfo where
type AttrBaseTypeConstraint NodeParentFieldInfo = (~) Node
type AttrAllowedOps NodeParentFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
type AttrSetTypeConstraint NodeParentFieldInfo = (~) (Ptr Node)
type AttrTransferTypeConstraint NodeParentFieldInfo = (~)(Ptr Node)
type AttrTransferType NodeParentFieldInfo = (Ptr Node)
type AttrGetType NodeParentFieldInfo = Maybe Node
type AttrLabel NodeParentFieldInfo = "parent"
type AttrOrigin NodeParentFieldInfo = Node
attrGet = getNodeParent
attrSet = setNodeParent
attrConstruct = undefined
attrClear = clearNodeParent
attrTransfer _ v = do
return v
dbgAttrInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.GLib.Structs.Node.parent"
, O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-glib-2.0.30/docs/GI-GLib-Structs-Node.html#g:attr:parent"
})
node_parent :: AttrLabelProxy "parent"
node_parent = AttrLabelProxy
#endif
getNodeChildren :: MonadIO m => Node -> m (Maybe Node)
getNodeChildren :: forall (m :: * -> *). MonadIO m => Node -> m (Maybe Node)
getNodeChildren Node
s = IO (Maybe Node) -> m (Maybe Node)
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Maybe Node) -> m (Maybe Node))
-> IO (Maybe Node) -> m (Maybe Node)
forall a b. (a -> b) -> a -> b
$ Node -> (Ptr Node -> IO (Maybe Node)) -> IO (Maybe Node)
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr Node
s ((Ptr Node -> IO (Maybe Node)) -> IO (Maybe Node))
-> (Ptr Node -> IO (Maybe Node)) -> IO (Maybe Node)
forall a b. (a -> b) -> a -> b
$ \Ptr Node
ptr -> do
val <- Ptr (Ptr Node) -> IO (Ptr Node)
forall a. Storable a => Ptr a -> IO a
peek (Ptr Node
ptr Ptr Node -> Int -> Ptr (Ptr Node)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32) :: IO (Ptr Node)
result <- SP.convertIfNonNull val $ \Ptr Node
val' -> do
val'' <- ((ManagedPtr Node -> Node) -> Ptr Node -> IO Node
forall a.
(HasCallStack, BoxedPtr a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
newPtr ManagedPtr Node -> Node
Node) Ptr Node
val'
return val''
return result
setNodeChildren :: MonadIO m => Node -> Ptr Node -> m ()
setNodeChildren :: forall (m :: * -> *). MonadIO m => Node -> Ptr Node -> m ()
setNodeChildren Node
s Ptr Node
val = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ Node -> (Ptr Node -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr Node
s ((Ptr Node -> IO ()) -> IO ()) -> (Ptr Node -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Node
ptr -> do
Ptr (Ptr Node) -> Ptr Node -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr Node
ptr Ptr Node -> Int -> Ptr (Ptr Node)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32) (Ptr Node
val :: Ptr Node)
clearNodeChildren :: MonadIO m => Node -> m ()
clearNodeChildren :: forall (m :: * -> *). MonadIO m => Node -> m ()
clearNodeChildren Node
s = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ Node -> (Ptr Node -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr Node
s ((Ptr Node -> IO ()) -> IO ()) -> (Ptr Node -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Node
ptr -> do
Ptr (Ptr Node) -> Ptr Node -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr Node
ptr Ptr Node -> Int -> Ptr (Ptr Node)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32) (Ptr Node
forall a. Ptr a
FP.nullPtr :: Ptr Node)
#if defined(ENABLE_OVERLOADING)
data NodeChildrenFieldInfo
instance AttrInfo NodeChildrenFieldInfo where
type AttrBaseTypeConstraint NodeChildrenFieldInfo = (~) Node
type AttrAllowedOps NodeChildrenFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
type AttrSetTypeConstraint NodeChildrenFieldInfo = (~) (Ptr Node)
type AttrTransferTypeConstraint NodeChildrenFieldInfo = (~)(Ptr Node)
type AttrTransferType NodeChildrenFieldInfo = (Ptr Node)
type AttrGetType NodeChildrenFieldInfo = Maybe Node
type AttrLabel NodeChildrenFieldInfo = "children"
type AttrOrigin NodeChildrenFieldInfo = Node
attrGet = getNodeChildren
attrSet = setNodeChildren
attrConstruct = undefined
attrClear = clearNodeChildren
attrTransfer _ v = do
return v
dbgAttrInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.GLib.Structs.Node.children"
, O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-glib-2.0.30/docs/GI-GLib-Structs-Node.html#g:attr:children"
})
node_children :: AttrLabelProxy "children"
node_children = AttrLabelProxy
#endif
#if defined(ENABLE_OVERLOADING)
instance O.HasAttributeList Node
type instance O.AttributeList Node = NodeAttributeList
type NodeAttributeList = ('[ '("data", NodeDataFieldInfo), '("next", NodeNextFieldInfo), '("prev", NodePrevFieldInfo), '("parent", NodeParentFieldInfo), '("children", NodeChildrenFieldInfo)] :: [(Symbol, DK.Type)])
#endif
foreign import ccall "g_node_child_index" g_node_child_index ::
Ptr Node ->
Ptr () ->
IO Int32
nodeChildIndex ::
(B.CallStack.HasCallStack, MonadIO m) =>
Node
-> Ptr ()
-> m Int32
nodeChildIndex :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Node -> Ptr () -> m Int32
nodeChildIndex Node
node Ptr ()
data_ = IO Int32 -> m Int32
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Int32 -> m Int32) -> IO Int32 -> m Int32
forall a b. (a -> b) -> a -> b
$ do
node' <- Node -> IO (Ptr Node)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Node
node
result <- g_node_child_index node' data_
touchManagedPtr node
return result
#if defined(ENABLE_OVERLOADING)
data NodeChildIndexMethodInfo
instance (signature ~ (Ptr () -> m Int32), MonadIO m) => O.OverloadedMethod NodeChildIndexMethodInfo Node signature where
overloadedMethod = nodeChildIndex
instance O.OverloadedMethodInfo NodeChildIndexMethodInfo Node where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.GLib.Structs.Node.nodeChildIndex",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-glib-2.0.30/docs/GI-GLib-Structs-Node.html#v:nodeChildIndex"
})
#endif
foreign import ccall "g_node_child_position" g_node_child_position ::
Ptr Node ->
Ptr Node ->
IO Int32
nodeChildPosition ::
(B.CallStack.HasCallStack, MonadIO m) =>
Node
-> Node
-> m Int32
nodeChildPosition :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Node -> Node -> m Int32
nodeChildPosition Node
node Node
child = IO Int32 -> m Int32
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Int32 -> m Int32) -> IO Int32 -> m Int32
forall a b. (a -> b) -> a -> b
$ do
node' <- Node -> IO (Ptr Node)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Node
node
child' <- unsafeManagedPtrGetPtr child
result <- g_node_child_position node' child'
touchManagedPtr node
touchManagedPtr child
return result
#if defined(ENABLE_OVERLOADING)
data NodeChildPositionMethodInfo
instance (signature ~ (Node -> m Int32), MonadIO m) => O.OverloadedMethod NodeChildPositionMethodInfo Node signature where
overloadedMethod = nodeChildPosition
instance O.OverloadedMethodInfo NodeChildPositionMethodInfo Node where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.GLib.Structs.Node.nodeChildPosition",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-glib-2.0.30/docs/GI-GLib-Structs-Node.html#v:nodeChildPosition"
})
#endif
foreign import ccall "g_node_children_foreach" g_node_children_foreach ::
Ptr Node ->
CUInt ->
FunPtr GLib.Callbacks.C_NodeForeachFunc ->
Ptr () ->
IO ()
nodeChildrenForeach ::
(B.CallStack.HasCallStack, MonadIO m) =>
Node
-> [GLib.Flags.TraverseFlags]
-> GLib.Callbacks.NodeForeachFunc
-> m ()
nodeChildrenForeach :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Node -> [TraverseFlags] -> NodeForeachFunc -> m ()
nodeChildrenForeach Node
node [TraverseFlags]
flags NodeForeachFunc
func = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
node' <- Node -> IO (Ptr Node)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Node
node
let flags' = [TraverseFlags] -> CUInt
forall b a. (Num b, IsGFlag a) => [a] -> b
gflagsToWord [TraverseFlags]
flags
func' <- GLib.Callbacks.mk_NodeForeachFunc (GLib.Callbacks.wrap_NodeForeachFunc Nothing func)
let data_ = Ptr a
forall a. Ptr a
nullPtr
g_node_children_foreach node' flags' func' data_
safeFreeFunPtr $ castFunPtrToPtr func'
touchManagedPtr node
return ()
#if defined(ENABLE_OVERLOADING)
data NodeChildrenForeachMethodInfo
instance (signature ~ ([GLib.Flags.TraverseFlags] -> GLib.Callbacks.NodeForeachFunc -> m ()), MonadIO m) => O.OverloadedMethod NodeChildrenForeachMethodInfo Node signature where
overloadedMethod = nodeChildrenForeach
instance O.OverloadedMethodInfo NodeChildrenForeachMethodInfo Node where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.GLib.Structs.Node.nodeChildrenForeach",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-glib-2.0.30/docs/GI-GLib-Structs-Node.html#v:nodeChildrenForeach"
})
#endif
foreign import ccall "g_node_depth" g_node_depth ::
Ptr Node ->
IO Word32
nodeDepth ::
(B.CallStack.HasCallStack, MonadIO m) =>
Node
-> m Word32
nodeDepth :: forall (m :: * -> *). (HasCallStack, MonadIO m) => Node -> m Word32
nodeDepth Node
node = IO Word32 -> m Word32
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Word32 -> m Word32) -> IO Word32 -> m Word32
forall a b. (a -> b) -> a -> b
$ do
node' <- Node -> IO (Ptr Node)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Node
node
result <- g_node_depth node'
touchManagedPtr node
return result
#if defined(ENABLE_OVERLOADING)
data NodeDepthMethodInfo
instance (signature ~ (m Word32), MonadIO m) => O.OverloadedMethod NodeDepthMethodInfo Node signature where
overloadedMethod = nodeDepth
instance O.OverloadedMethodInfo NodeDepthMethodInfo Node where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.GLib.Structs.Node.nodeDepth",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-glib-2.0.30/docs/GI-GLib-Structs-Node.html#v:nodeDepth"
})
#endif
foreign import ccall "g_node_destroy" g_node_destroy ::
Ptr Node ->
IO ()
nodeDestroy ::
(B.CallStack.HasCallStack, MonadIO m) =>
Node
-> m ()
nodeDestroy :: forall (m :: * -> *). (HasCallStack, MonadIO m) => Node -> m ()
nodeDestroy Node
root = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
root' <- Node -> IO (Ptr Node)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Node
root
g_node_destroy root'
touchManagedPtr root
return ()
#if defined(ENABLE_OVERLOADING)
data NodeDestroyMethodInfo
instance (signature ~ (m ()), MonadIO m) => O.OverloadedMethod NodeDestroyMethodInfo Node signature where
overloadedMethod = nodeDestroy
instance O.OverloadedMethodInfo NodeDestroyMethodInfo Node where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.GLib.Structs.Node.nodeDestroy",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-glib-2.0.30/docs/GI-GLib-Structs-Node.html#v:nodeDestroy"
})
#endif
foreign import ccall "g_node_is_ancestor" g_node_is_ancestor ::
Ptr Node ->
Ptr Node ->
IO CInt
nodeIsAncestor ::
(B.CallStack.HasCallStack, MonadIO m) =>
Node
-> Node
-> m Bool
nodeIsAncestor :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Node -> Node -> m Bool
nodeIsAncestor Node
node Node
descendant = IO Bool -> m Bool
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
forall a b. (a -> b) -> a -> b
$ do
node' <- Node -> IO (Ptr Node)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Node
node
descendant' <- unsafeManagedPtrGetPtr descendant
result <- g_node_is_ancestor node' descendant'
let result' = (CInt -> CInt -> Bool
forall a. Eq a => a -> a -> Bool
/= CInt
0) CInt
result
touchManagedPtr node
touchManagedPtr descendant
return result'
#if defined(ENABLE_OVERLOADING)
data NodeIsAncestorMethodInfo
instance (signature ~ (Node -> m Bool), MonadIO m) => O.OverloadedMethod NodeIsAncestorMethodInfo Node signature where
overloadedMethod = nodeIsAncestor
instance O.OverloadedMethodInfo NodeIsAncestorMethodInfo Node where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.GLib.Structs.Node.nodeIsAncestor",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-glib-2.0.30/docs/GI-GLib-Structs-Node.html#v:nodeIsAncestor"
})
#endif
foreign import ccall "g_node_max_height" g_node_max_height ::
Ptr Node ->
IO Word32
nodeMaxHeight ::
(B.CallStack.HasCallStack, MonadIO m) =>
Node
-> m Word32
nodeMaxHeight :: forall (m :: * -> *). (HasCallStack, MonadIO m) => Node -> m Word32
nodeMaxHeight Node
root = IO Word32 -> m Word32
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Word32 -> m Word32) -> IO Word32 -> m Word32
forall a b. (a -> b) -> a -> b
$ do
root' <- Node -> IO (Ptr Node)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Node
root
result <- g_node_max_height root'
touchManagedPtr root
return result
#if defined(ENABLE_OVERLOADING)
data NodeMaxHeightMethodInfo
instance (signature ~ (m Word32), MonadIO m) => O.OverloadedMethod NodeMaxHeightMethodInfo Node signature where
overloadedMethod = nodeMaxHeight
instance O.OverloadedMethodInfo NodeMaxHeightMethodInfo Node where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.GLib.Structs.Node.nodeMaxHeight",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-glib-2.0.30/docs/GI-GLib-Structs-Node.html#v:nodeMaxHeight"
})
#endif
foreign import ccall "g_node_n_children" g_node_n_children ::
Ptr Node ->
IO Word32
nodeNChildren ::
(B.CallStack.HasCallStack, MonadIO m) =>
Node
-> m Word32
nodeNChildren :: forall (m :: * -> *). (HasCallStack, MonadIO m) => Node -> m Word32
nodeNChildren Node
node = IO Word32 -> m Word32
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Word32 -> m Word32) -> IO Word32 -> m Word32
forall a b. (a -> b) -> a -> b
$ do
node' <- Node -> IO (Ptr Node)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Node
node
result <- g_node_n_children node'
touchManagedPtr node
return result
#if defined(ENABLE_OVERLOADING)
data NodeNChildrenMethodInfo
instance (signature ~ (m Word32), MonadIO m) => O.OverloadedMethod NodeNChildrenMethodInfo Node signature where
overloadedMethod = nodeNChildren
instance O.OverloadedMethodInfo NodeNChildrenMethodInfo Node where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.GLib.Structs.Node.nodeNChildren",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-glib-2.0.30/docs/GI-GLib-Structs-Node.html#v:nodeNChildren"
})
#endif
foreign import ccall "g_node_n_nodes" g_node_n_nodes ::
Ptr Node ->
CUInt ->
IO Word32
nodeNNodes ::
(B.CallStack.HasCallStack, MonadIO m) =>
Node
-> [GLib.Flags.TraverseFlags]
-> m Word32
nodeNNodes :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Node -> [TraverseFlags] -> m Word32
nodeNNodes Node
root [TraverseFlags]
flags = IO Word32 -> m Word32
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Word32 -> m Word32) -> IO Word32 -> m Word32
forall a b. (a -> b) -> a -> b
$ do
root' <- Node -> IO (Ptr Node)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Node
root
let flags' = [TraverseFlags] -> CUInt
forall b a. (Num b, IsGFlag a) => [a] -> b
gflagsToWord [TraverseFlags]
flags
result <- g_node_n_nodes root' flags'
touchManagedPtr root
return result
#if defined(ENABLE_OVERLOADING)
data NodeNNodesMethodInfo
instance (signature ~ ([GLib.Flags.TraverseFlags] -> m Word32), MonadIO m) => O.OverloadedMethod NodeNNodesMethodInfo Node signature where
overloadedMethod = nodeNNodes
instance O.OverloadedMethodInfo NodeNNodesMethodInfo Node where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.GLib.Structs.Node.nodeNNodes",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-glib-2.0.30/docs/GI-GLib-Structs-Node.html#v:nodeNNodes"
})
#endif
foreign import ccall "g_node_reverse_children" g_node_reverse_children ::
Ptr Node ->
IO ()
nodeReverseChildren ::
(B.CallStack.HasCallStack, MonadIO m) =>
Node
-> m ()
nodeReverseChildren :: forall (m :: * -> *). (HasCallStack, MonadIO m) => Node -> m ()
nodeReverseChildren Node
node = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
node' <- Node -> IO (Ptr Node)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Node
node
g_node_reverse_children node'
touchManagedPtr node
return ()
#if defined(ENABLE_OVERLOADING)
data NodeReverseChildrenMethodInfo
instance (signature ~ (m ()), MonadIO m) => O.OverloadedMethod NodeReverseChildrenMethodInfo Node signature where
overloadedMethod = nodeReverseChildren
instance O.OverloadedMethodInfo NodeReverseChildrenMethodInfo Node where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.GLib.Structs.Node.nodeReverseChildren",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-glib-2.0.30/docs/GI-GLib-Structs-Node.html#v:nodeReverseChildren"
})
#endif
foreign import ccall "g_node_traverse" g_node_traverse ::
Ptr Node ->
CUInt ->
CUInt ->
Int32 ->
FunPtr GLib.Callbacks.C_NodeTraverseFunc ->
Ptr () ->
IO ()
nodeTraverse ::
(B.CallStack.HasCallStack, MonadIO m) =>
Node
-> GLib.Enums.TraverseType
-> [GLib.Flags.TraverseFlags]
-> Int32
-> GLib.Callbacks.NodeTraverseFunc
-> m ()
nodeTraverse :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Node
-> TraverseType
-> [TraverseFlags]
-> Int32
-> NodeTraverseFunc
-> m ()
nodeTraverse Node
root TraverseType
order [TraverseFlags]
flags Int32
maxDepth NodeTraverseFunc
func = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
root' <- Node -> IO (Ptr Node)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Node
root
let order' = (Int -> CUInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CUInt) -> (TraverseType -> Int) -> TraverseType -> CUInt
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TraverseType -> Int
forall a. Enum a => a -> Int
fromEnum) TraverseType
order
let flags' = [TraverseFlags] -> CUInt
forall b a. (Num b, IsGFlag a) => [a] -> b
gflagsToWord [TraverseFlags]
flags
func' <- GLib.Callbacks.mk_NodeTraverseFunc (GLib.Callbacks.wrap_NodeTraverseFunc Nothing func)
let data_ = Ptr a
forall a. Ptr a
nullPtr
g_node_traverse root' order' flags' maxDepth func' data_
safeFreeFunPtr $ castFunPtrToPtr func'
touchManagedPtr root
return ()
#if defined(ENABLE_OVERLOADING)
data NodeTraverseMethodInfo
instance (signature ~ (GLib.Enums.TraverseType -> [GLib.Flags.TraverseFlags] -> Int32 -> GLib.Callbacks.NodeTraverseFunc -> m ()), MonadIO m) => O.OverloadedMethod NodeTraverseMethodInfo Node signature where
overloadedMethod = nodeTraverse
instance O.OverloadedMethodInfo NodeTraverseMethodInfo Node where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.GLib.Structs.Node.nodeTraverse",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-glib-2.0.30/docs/GI-GLib-Structs-Node.html#v:nodeTraverse"
})
#endif
foreign import ccall "g_node_unlink" g_node_unlink ::
Ptr Node ->
IO ()
nodeUnlink ::
(B.CallStack.HasCallStack, MonadIO m) =>
Node
-> m ()
nodeUnlink :: forall (m :: * -> *). (HasCallStack, MonadIO m) => Node -> m ()
nodeUnlink Node
node = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
node' <- Node -> IO (Ptr Node)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Node
node
g_node_unlink node'
touchManagedPtr node
return ()
#if defined(ENABLE_OVERLOADING)
data NodeUnlinkMethodInfo
instance (signature ~ (m ()), MonadIO m) => O.OverloadedMethod NodeUnlinkMethodInfo Node signature where
overloadedMethod = nodeUnlink
instance O.OverloadedMethodInfo NodeUnlinkMethodInfo Node where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.GLib.Structs.Node.nodeUnlink",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-glib-2.0.30/docs/GI-GLib-Structs-Node.html#v:nodeUnlink"
})
#endif
foreign import ccall "g_node_pop_allocator" g_node_pop_allocator ::
IO ()
{-# DEPRECATED nodePopAllocator ["(Since version 2.10)"] #-}
nodePopAllocator ::
(B.CallStack.HasCallStack, MonadIO m) =>
m ()
nodePopAllocator :: forall (m :: * -> *). (HasCallStack, MonadIO m) => m ()
nodePopAllocator = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
IO ()
g_node_pop_allocator
() -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
#if defined(ENABLE_OVERLOADING)
#endif
foreign import ccall "g_node_push_allocator" g_node_push_allocator ::
Ptr GLib.Allocator.Allocator ->
IO ()
{-# DEPRECATED nodePushAllocator ["(Since version 2.10)"] #-}
nodePushAllocator ::
(B.CallStack.HasCallStack, MonadIO m) =>
GLib.Allocator.Allocator
-> m ()
nodePushAllocator :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Allocator -> m ()
nodePushAllocator Allocator
allocator = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
allocator' <- Allocator -> IO (Ptr Allocator)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Allocator
allocator
g_node_push_allocator allocator'
touchManagedPtr allocator
return ()
#if defined(ENABLE_OVERLOADING)
#endif
#if defined(ENABLE_OVERLOADING)
type family ResolveNodeMethod (t :: Symbol) (o :: DK.Type) :: DK.Type where
ResolveNodeMethod "childIndex" o = NodeChildIndexMethodInfo
ResolveNodeMethod "childPosition" o = NodeChildPositionMethodInfo
ResolveNodeMethod "childrenForeach" o = NodeChildrenForeachMethodInfo
ResolveNodeMethod "depth" o = NodeDepthMethodInfo
ResolveNodeMethod "destroy" o = NodeDestroyMethodInfo
ResolveNodeMethod "isAncestor" o = NodeIsAncestorMethodInfo
ResolveNodeMethod "maxHeight" o = NodeMaxHeightMethodInfo
ResolveNodeMethod "nChildren" o = NodeNChildrenMethodInfo
ResolveNodeMethod "nNodes" o = NodeNNodesMethodInfo
ResolveNodeMethod "reverseChildren" o = NodeReverseChildrenMethodInfo
ResolveNodeMethod "traverse" o = NodeTraverseMethodInfo
ResolveNodeMethod "unlink" o = NodeUnlinkMethodInfo
ResolveNodeMethod l o = O.MethodResolutionFailed l o
instance (info ~ ResolveNodeMethod t Node, O.OverloadedMethod info Node p) => OL.IsLabel t (Node -> p) where
#if MIN_VERSION_base(4,10,0)
fromLabel = O.overloadedMethod @info
#else
fromLabel _ = O.overloadedMethod @info
#endif
#if MIN_VERSION_base(4,13,0)
instance (info ~ ResolveNodeMethod t Node, O.OverloadedMethod info Node p, R.HasField t Node p) => R.HasField t Node p where
getField = O.overloadedMethod @info
#endif
instance (info ~ ResolveNodeMethod t Node, O.OverloadedMethodInfo info Node) => OL.IsLabel t (O.MethodProxy info Node) where
#if MIN_VERSION_base(4,10,0)
fromLabel = O.MethodProxy
#else
fromLabel _ = O.MethodProxy
#endif
#endif