summary refs log tree commit diff stats
path: root/lib/wrappers/sdl/sdl.nim
diff options
context:
space:
mode:
Diffstat (limited to 'lib/wrappers/sdl/sdl.nim')
-rwxr-xr-xlib/wrappers/sdl/sdl.nim57
1 files changed, 19 insertions, 38 deletions
diff --git a/lib/wrappers/sdl/sdl.nim b/lib/wrappers/sdl/sdl.nim
index 616c7d096..51dbfb3c1 100755
--- a/lib/wrappers/sdl/sdl.nim
+++ b/lib/wrappers/sdl/sdl.nim
@@ -1283,44 +1283,25 @@ type                          # This is the system-independent thread info struc
   TWordArray* = array[0..16383, int16] # Generic procedure pointer
   TProcedure* = proc ()
 
-proc EActive*(event: PEvent): PActiveEvent =
-  result = cast[PActiveEvent](event)
-
-proc EKeyboard*(event: PEvent): PKeyBoardEvent =
-  result = cast[PKeyBoardEvent](event)
-
-proc EMouseMotion*(event: PEvent): PMouseMotionEvent =
-  result = cast[PMouseMotionEvent](event)
-
-proc EMouseButton*(event: PEvent): PMouseButtonEvent =
-  result = cast[PMouseButtonEvent](event)
-
-proc EJoyAxis*(event: PEvent): PJoyAxisEvent =
-  result = cast[PJoyAxisEvent](event)
-
-proc EJoyBall*(event: PEvent): PJoyBallEvent =
-  result = cast[PJoyBallEvent](event)
-
-proc EJoyHat*(event: PEvent): PJoyHatEvent =
-  result = cast[PJoyHatEvent](event)
-
-proc EJoyButton*(event: PEvent): PJoyButtonEvent =
-  result = cast[PJoyButtonEvent](event)
-
-proc EResize*(event: PEvent): PResizeEvent =
-  result = cast[PResizeEvent](event)
-
-proc EExpose*(event: PEvent): PExposeEvent =
-  result = cast[PExposeEvent](event)
-
-proc EQuit*(event: PEvent): PQuitEvent =
-  result = cast[PQuitEvent](event)
-
-proc EUser*(event: PEvent): PUserEvent =
-  result = cast[PUserEvent](event)
-
-proc ESysWM*(event: PEvent): PSysWMEvent =
-  result = cast[PSysWMEvent](event)
+type TEventSeq = set[TEventKind]
+template evconv(procName: expr, ptrName: typeDesc, assertions: TEventSeq): stmt =
+  proc `procName`*(event: PEvent): ptrName =
+    assert(assertions.contains(event.kind))
+    result = cast[ptrName](event)
+
+evconv(EvActive, PActiveEvent, {ACTIVEEVENT})
+evconv(EvKeyboard, PKeyboardEvent, {KEYDOWN, KEYUP})
+evconv(EvMouseMotion, PMouseMotionEvent, {MOUSEMOTION})
+evconv(EvMouseButton, PMouseButtonEvent, {MOUSEBUTTONDOWN, MOUSEBUTTONUP})
+evconv(EvJoyAxis, PJoyAxisEvent,{JOYAXISMOTION})
+evconv(EvJoyBall, PJoyBallEvent, {JOYBALLMOTION})
+evconv(EvJoyHat, PJoyHatEvent, {JOYHATMOTION})
+evconv(EvJoyButton, PJoyButtonEvent, {JOYBUTTONDOWN, JOYBUTTONUP})
+evconv(EvResize, PResizeEvent, {VIDEORESIZE})
+evconv(EvExpose, PExposeEvent, {VIDEOEXPOSE})
+evconv(EvQuit, PQuitEvent, {QUITEV})
+evconv(EvUser, PUserEvent, {USEREVENT})
+evconv(EvSysWM, PSysWMEvent, {SYSWMEVENT})
 
 #------------------------------------------------------------------------------
 # initialization
5120bc6a66accd'>74a88ad5 ^
bf1cf044 ^




75cfe388 ^
2bbac1c8 ^

c3418a29 ^
55f49f12 ^
3b0f7e10 ^



dd11334b ^
c90c83f7 ^
5eaf687d ^
e8314106 ^



bf1cf044 ^
8944a3b5 ^
8c8c18c6 ^



8944a3b5 ^
f831f657 ^



8944a3b5 ^
bf1cf044 ^
8c5866ff ^

4e1ffa6b ^




dd11334b ^
5eaf687d ^
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93