{-# LINE 2 "./Graphics/UI/Gtk/SourceView/SourceIter.chs" #-}
module Graphics.UI.Gtk.SourceView.SourceIter (
SourceSearchFlags(..),
sourceIterForwardSearch,
sourceIterBackwardSearch,
) where
import Control.Monad (liftM)
import Data.Maybe (fromMaybe)
import Graphics.UI.Gtk.Abstract.Object (makeNewObject)
import Graphics.UI.Gtk.SourceView.Enums
import System.Glib.FFI
import System.Glib.Flags (Flags, fromFlags)
import System.Glib.UTFString
import Graphics.UI.Gtk.Multiline.TextIter
{-# LINE 54 "./Graphics/UI/Gtk/SourceView/SourceIter.chs" #-}
import Graphics.UI.Gtk.SourceView.Types
{-# LINE 55 "./Graphics/UI/Gtk/SourceView/SourceIter.chs" #-}
{-# LINE 57 "./Graphics/UI/Gtk/SourceView/SourceIter.chs" #-}
sourceIterForwardSearch :: GlibString string => TextIter -> string -> [SourceSearchFlags] ->
Maybe TextIter -> IO (Maybe (TextIter, TextIter))
sourceIterForwardSearch ti str flags limit = do
start <- makeEmptyTextIter
end <- makeEmptyTextIter
found <- liftM toBool $ withUTFString str $ \cStr ->
(\(TextIter arg1) arg2 arg3 (TextIter arg4) (TextIter arg5) (TextIter arg6) -> withForeignPtr arg1 $ \argPtr1 ->withForeignPtr arg4 $ \argPtr4 ->withForeignPtr arg5 $ \argPtr5 ->withForeignPtr arg6 $ \argPtr6 ->gtk_source_iter_forward_search argPtr1 arg2 arg3 argPtr4 argPtr5 argPtr6) ti cStr
((fromIntegral.fromFlags) flags) start end
(fromMaybe (TextIter nullForeignPtr) limit)
return $ if found then Just (start,end) else Nothing
sourceIterBackwardSearch :: GlibString string => TextIter -> string -> [SourceSearchFlags] ->
Maybe TextIter -> IO (Maybe (TextIter, TextIter))
sourceIterBackwardSearch ti str flags limit = do
start <- makeEmptyTextIter
end <- makeEmptyTextIter
found <- liftM toBool $ withUTFString str $ \cStr ->
(\(TextIter arg1) arg2 arg3 (TextIter arg4) (TextIter arg5) (TextIter arg6) -> withForeignPtr arg1 $ \argPtr1 ->withForeignPtr arg4 $ \argPtr4 ->withForeignPtr arg5 $ \argPtr5 ->withForeignPtr arg6 $ \argPtr6 ->gtk_source_iter_backward_search argPtr1 arg2 arg3 argPtr4 argPtr5 argPtr6) ti cStr
((fromIntegral.fromFlags) flags) start end
(fromMaybe (TextIter nullForeignPtr) limit)
return $ if found then Just (start,end) else Nothing
foreign import ccall unsafe "gtk_source_iter_forward_search"
gtk_source_iter_forward_search :: ((Ptr TextIter) -> ((Ptr CChar) -> (CInt -> ((Ptr TextIter) -> ((Ptr TextIter) -> ((Ptr TextIter) -> (IO CInt)))))))
foreign import ccall unsafe "gtk_source_iter_backward_search"
gtk_source_iter_backward_search :: ((Ptr TextIter) -> ((Ptr CChar) -> (CInt -> ((Ptr TextIter) -> ((Ptr TextIter) -> ((Ptr TextIter) -> (IO CInt)))))))