{-# LINE 1 "src/Stopgap/Graphics/UI/Gtk.hsc" #-} {-# LANGUAGE BlockArguments #-} {-# OPTIONS_GHC -Wall -fno-warn-tabs #-} module Stopgap.Graphics.UI.Gtk where import Foreign.Ptr import Foreign.Marshal.Alloc import Foreign.Marshal.Array import Foreign.Storable import Foreign.C.Types import Foreign.C.String init :: String -> [String] -> IO () init :: String -> [String] -> IO () init String cmd [String] as = String -> [String] -> (Ptr CInt -> Ptr (Ptr CString) -> IO ()) -> IO () forall a. String -> [String] -> (Ptr CInt -> Ptr (Ptr CString) -> IO a) -> IO a withArgcArgv String cmd [String] as Ptr CInt -> Ptr (Ptr CString) -> IO () c_gtk_init withArgcArgv :: String -> [String] -> (Ptr CInt -> Ptr (Ptr CString) -> IO a) -> IO a withArgcArgv :: forall a. String -> [String] -> (Ptr CInt -> Ptr (Ptr CString) -> IO a) -> IO a withArgcArgv String cmd [String] as Ptr CInt -> Ptr (Ptr CString) -> IO a f = [String] -> ([CString] -> IO a) -> IO a forall a. [String] -> ([CString] -> IO a) -> IO a withCStringList (String cmd String -> [String] -> [String] forall a. a -> [a] -> [a] : [String] as) \[CString] cas -> [CString] -> (Int -> Ptr CString -> IO a) -> IO a forall a b. Storable a => [a] -> (Int -> Ptr a -> IO b) -> IO b withArrayLen [CString] cas \Int argc Ptr CString argv -> (Ptr CInt -> IO a) -> IO a forall a b. Storable a => (Ptr a -> IO b) -> IO b alloca \Ptr CInt pargc -> (Ptr (Ptr CString) -> IO a) -> IO a forall a b. Storable a => (Ptr a -> IO b) -> IO b alloca \Ptr (Ptr CString) pargv -> do Ptr CInt -> CInt -> IO () forall a. Storable a => Ptr a -> a -> IO () poke Ptr CInt pargc (Int -> CInt forall a b. (Integral a, Num b) => a -> b fromIntegral Int argc) Ptr (Ptr CString) -> Ptr CString -> IO () forall a. Storable a => Ptr a -> a -> IO () poke Ptr (Ptr CString) pargv Ptr CString argv Ptr CInt -> Ptr (Ptr CString) -> IO a f Ptr CInt pargc Ptr (Ptr CString) pargv withCStringList :: [String] -> ([CString] -> IO a) -> IO a withCStringList :: forall a. [String] -> ([CString] -> IO a) -> IO a withCStringList [] [CString] -> IO a f = [CString] -> IO a f [] withCStringList (String a : [String] as) [CString] -> IO a f = String -> (CString -> IO a) -> IO a forall a. String -> (CString -> IO a) -> IO a withCString String a \CString ca -> [String] -> ([CString] -> IO a) -> IO a forall a. [String] -> ([CString] -> IO a) -> IO a withCStringList [String] as \[CString] cas -> [CString] -> IO a f ([CString] -> IO a) -> [CString] -> IO a forall a b. (a -> b) -> a -> b $ CString ca CString -> [CString] -> [CString] forall a. a -> [a] -> [a] : [CString] cas foreign import ccall "gtk_init" c_gtk_init :: Ptr CInt -> Ptr (Ptr CString) -> IO () main :: IO () main :: IO () main = IO () c_gtk_main foreign import ccall "gtk_main" c_gtk_main :: IO () mainQuit :: IO () mainQuit :: IO () mainQuit = IO () c_gtk_main_quit foreign import ccall "gtk_main_quit" c_gtk_main_quit :: IO ()