implementation module Gdk.Internal import StdEnv import StdMaybe import System._Pointer gdk_event_get_keyval :: !Pointer -> Maybe Int gdk_event_get_keyval event # arr = {#0} # ok = get event (get_array_pointer arr) | ok = Just (arr.[0]) = Nothing where get :: !Pointer !Pointer -> Bool get _ _ = code { ccall gdk_event_get_keyval "pp:I" } gdk_keyval_from_name :: !String -> Int gdk_keyval_from_name name = get (packString name) where get :: !String -> Int get _ = code { ccall gdk_keyval_from_name "s:I" } gdk_keyval_name :: !Int -> String gdk_keyval_name keyval = derefString (get keyval) where get :: !Pointer -> Pointer get _ = code { ccall gdk_keyval_name "p:p" } get_array_pointer :: !{#Int} -> Pointer get_array_pointer arr = get arr + IF_INT_64_OR_32 24 12 where get :: !{#Int} -> Pointer get _ = code { push_a_b 0 pop_a 1 }