diff options
author | Michael Fellinger <m.fellinger@gmail.com> | 2011-01-05 19:30:52 +0900 |
---|---|---|
committer | Michael Fellinger <m.fellinger@gmail.com> | 2011-01-05 19:30:52 +0900 |
commit | f73d0e4657da999a71508971483740023d0b649d (patch) | |
tree | 066fbb743ce10ac809952f78ad6ffd649981f0bc /lib/wrappers/sdl | |
parent | 6d0f58b0ee1cb43318a3678667962ca55cb5f0fd (diff) | |
download | Nim-f73d0e4657da999a71508971483740023d0b649d.tar.gz |
Adjust name of event converters and remove the boilerplate
Diffstat (limited to 'lib/wrappers/sdl')
-rwxr-xr-x | lib/wrappers/sdl/sdl.nim | 57 |
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 |