blob: 9c50238e764d4af9d1d2be54ae6c90139f579621 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
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 && arr.[0] <> 0
= 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
}
|