{-# LINE 2 "./Graphics/UI/Gtk/Multiline/Types.chs" #-}
{-# OPTIONS_HADDOCK hide #-}
module Graphics.UI.Gtk.Multiline.Types (
TextIter(TextIter),
textIterCopy,
mkTextIterCopy,
makeEmptyTextIter
) where
import System.Glib.FFI
import Graphics.UI.Gtk.General.Structs (textIterSize)
{-# LINE 38 "./Graphics/UI/Gtk/Multiline/Types.chs" #-}
newtype TextIter = TextIter (ForeignPtr (TextIter))
{-# LINE 42 "./Graphics/UI/Gtk/Multiline/Types.chs" #-}
textIterCopy :: TextIter -> IO TextIter
textIterCopy :: TextIter -> IO TextIter
textIterCopy (TextIter ForeignPtr TextIter
iter) = do
ForeignPtr TextIter
iter' <- Int -> IO (ForeignPtr TextIter)
forall a. Int -> IO (ForeignPtr a)
mallocForeignPtrBytes Int
textIterSize
ForeignPtr TextIter -> (Ptr TextIter -> IO ()) -> IO ()
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr TextIter
iter' ((Ptr TextIter -> IO ()) -> IO ())
-> (Ptr TextIter -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr TextIter
iterPtr' ->
ForeignPtr TextIter -> (Ptr TextIter -> IO ()) -> IO ()
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr TextIter
iter ((Ptr TextIter -> IO ()) -> IO ())
-> (Ptr TextIter -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr TextIter
iterPtr ->
Ptr TextIter -> Ptr TextIter -> Int -> IO ()
forall a. Ptr a -> Ptr a -> Int -> IO ()
copyBytes Ptr TextIter
iterPtr' Ptr TextIter
iterPtr Int
textIterSize
TextIter -> IO TextIter
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (ForeignPtr TextIter -> TextIter
TextIter ForeignPtr TextIter
iter')
mkTextIterCopy :: Ptr TextIter -> IO TextIter
mkTextIterCopy :: Ptr TextIter -> IO TextIter
mkTextIterCopy Ptr TextIter
iterPtr = do
ForeignPtr TextIter
iter' <- Int -> IO (ForeignPtr TextIter)
forall a. Int -> IO (ForeignPtr a)
mallocForeignPtrBytes Int
textIterSize
ForeignPtr TextIter -> (Ptr TextIter -> IO ()) -> IO ()
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr TextIter
iter' ((Ptr TextIter -> IO ()) -> IO ())
-> (Ptr TextIter -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr TextIter
iterPtr' ->
Ptr TextIter -> Ptr TextIter -> Int -> IO ()
forall a. Ptr a -> Ptr a -> Int -> IO ()
copyBytes Ptr TextIter
iterPtr' Ptr TextIter
iterPtr Int
textIterSize
TextIter -> IO TextIter
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (ForeignPtr TextIter -> TextIter
TextIter ForeignPtr TextIter
iter')
makeEmptyTextIter :: IO TextIter
makeEmptyTextIter :: IO TextIter
makeEmptyTextIter = do
ForeignPtr TextIter
iter <- Int -> IO (ForeignPtr TextIter)
forall a. Int -> IO (ForeignPtr a)
mallocForeignPtrBytes Int
textIterSize
TextIter -> IO TextIter
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (ForeignPtr TextIter -> TextIter
TextIter ForeignPtr TextIter
iter)