From 7f78ad1576c70324a43ecabde36e6a811c8ea5ee Mon Sep 17 00:00:00 2001 From: Joey Yakimowich-Payne Date: Sun, 12 Apr 2020 15:02:00 -0600 Subject: [PATCH] Add symbols module --- sdl2.nimble | 4 +- src/sdl2/cleansymbols.nim | 108 ++++++++++++++++++++++++++++++++++++++ src/sdl2/sdl2.nim | 90 +------------------------------ src/sdl2/sdl2_gfx.nim | 85 +----------------------------- src/sdl2/sdl2_gpu.nim | 90 +------------------------------ src/sdl2/sdl2_image.nim | 86 +----------------------------- src/sdl2/sdl2_mixer.nim | 84 +---------------------------- src/sdl2/sdl2_net.nim | 86 +----------------------------- src/sdl2/sdl2_ttf.nim | 84 +---------------------------- 9 files changed, 123 insertions(+), 594 deletions(-) create mode 100644 src/sdl2/cleansymbols.nim diff --git a/sdl2.nimble b/sdl2.nimble index 5a04917..60a539d 100644 --- a/sdl2.nimble +++ b/sdl2.nimble @@ -6,10 +6,8 @@ description = "SDL2 Autogenerated wrapper" license = "MIT" srcDir = "src" - - # Dependencies -requires "nim >= 1.0.6", "nimterop#head" +requires "nim >= 1.0.6", "nimterop#cpluginpath", "regex" when gorgeEx("nimble path nimterop").exitCode == 0: import nimterop/docs diff --git a/src/sdl2/cleansymbols.nim b/src/sdl2/cleansymbols.nim new file mode 100644 index 0000000..ad367cd --- /dev/null +++ b/src/sdl2/cleansymbols.nim @@ -0,0 +1,108 @@ +# import macros, nimterop / plugin +import strutils, regex +import sets + +proc firstLetterLower(m: RegexMatch, s: string): string = + s[m.group(0)[0]].toLowerAscii + +proc camelCase(m: RegexMatch, s: string): string = + s[m.group(0)[0]].toUpperAscii + +proc nothing(m: RegexMatch, s: string): string = + s[m.group(0)[0]] + +const gpuReg = re"^GPU_(.)" +const sdlReg = re"^SDL_(.)" +const underscoreReg = re"_(.)" + +const EVENT_TYPES = toHashSet([ + "FIRSTEVENT", + "QUIT", + "APP_TERMINATING", + "APP_LOWMEMORY", + "APP_WILLENTERBACKGROUND", + "APP_DIDENTERBACKGROUND", + "APP_WILLENTERFOREGROUND", + "APP_DIDENTERFOREGROUND", + "DISPLAYEVENT", + "WINDOWEVENT", + "SYSWMEVENT", + "KEYDOWN", + "KEYUP", + "TEXTEDITING", + "TEXTINPUT", + "KEYMAPCHANGED", + "MOUSEMOTION", + "MOUSEBUTTONDOWN", + "MOUSEBUTTONUP", + "MOUSEWHEEL", + "JOYAXISMOTION", + "JOYBALLMOTION", + "JOYHATMOTION", + "JOYBUTTONDOWN", + "JOYBUTTONUP", + "JOYDEVICEADDED", + "JOYDEVICEREMOVED", + "CONTROLLERAXISMOTION", + "CONTROLLERBUTTONDOWN", + "CONTROLLERBUTTONUP", + "CONTROLLERDEVICEADDED", + "CONTROLLERDEVICEREMOVED", + "CONTROLLERDEVICEREMAPPED", + "FINGERDOWN", + "FINGERUP", + "FINGERMOTION", + "DOLLARGESTURE", + "DOLLARRECORD", + "MULTIGESTURE", + "CLIPBOARDUPDATE", + "DROPFILE", + "DROPTEXT", + "DROPBEGIN", + "DROPCOMPLETE", + "AUDIODEVICEADDED", + "AUDIODEVICEREMOVED", + "SENSORUPDATE", + "RENDER_TARGETS_RESET", + "RENDER_DEVICE_RESET", + "USEREVENT", + "LASTEVENT", +]) + +# Symbol renaming examples +proc onSymbol*(sym: var Symbol) {.exportc, dynlib.} = + # Remove prefixes or suffixes from procs + if sym.name == "SDL_init_flags": + sym.name = "sdlInitFlags" + if sym.name == "GPU_init_flags": + sym.name = "gpuInitFlags" + + if sym.kind == nskProc or sym.kind == nskType or sym.kind == nskConst: + if sym.name != "_": + sym.name = sym.name.strip(chars={'_'}).replace("___", "_") + + if sym.kind == nskProc: + sym.name = sym.name.replace(gpuReg, firstLetterLower) + sym.name = sym.name.replace(sdlReg, firstLetterLower) + else: + sym.name = sym.name.replace(gpuReg, nothing) + sym.name = sym.name.replace(sdlReg, nothing) + + if sym.name.startsWith("SDLK_"): + sym.name = sym.name.replace("SDLK_", "KEYCODE_") + + if EVENT_TYPES.contains(sym.name): + sym.name = "EVENT_" & sym.name + + if sym.name == "version": + sym.name = "Version" + + if sym.name == "ThreadID": + sym.name = "CurrentThreadID" + if sym.name == "GLContextResetNotification": + sym.name = "GLContextResetNotificationEnum" + if sym.name == "KeyCode": + sym.name = "KeyCodeEnum" + + if sym.kind == nskField: + sym.name = sym.name.replace(underscoreReg, camelCase) \ No newline at end of file diff --git a/src/sdl2/sdl2.nim b/src/sdl2/sdl2.nim index 0944ae6..39f9b7c 100644 --- a/src/sdl2/sdl2.nim +++ b/src/sdl2/sdl2.nim @@ -5,6 +5,7 @@ const baseDir = currentSourcePath.parentDir().parentDir().parentDir() srcDir = baseDir / "build" / "sdl2" buildDir = srcDir / "buildcache" + symbolPluginPath = currentSourcePath.parentDir() / "cleansymbols.nim" getHeader( "SDL.h", @@ -58,94 +59,7 @@ cOverride: Sint8* = int8 Bool* = bool -cPlugin: - import strutils, nre - import sets - - const EVENT_TYPES = toHashSet([ - "FIRSTEVENT", - "QUIT", - "APP_TERMINATING", - "APP_LOWMEMORY", - "APP_WILLENTERBACKGROUND", - "APP_DIDENTERBACKGROUND", - "APP_WILLENTERFOREGROUND", - "APP_DIDENTERFOREGROUND", - "DISPLAYEVENT", - "WINDOWEVENT", - "SYSWMEVENT", - "KEYDOWN", - "KEYUP", - "TEXTEDITING", - "TEXTINPUT", - "KEYMAPCHANGED", - "MOUSEMOTION", - "MOUSEBUTTONDOWN", - "MOUSEBUTTONUP", - "MOUSEWHEEL", - "JOYAXISMOTION", - "JOYBALLMOTION", - "JOYHATMOTION", - "JOYBUTTONDOWN", - "JOYBUTTONUP", - "JOYDEVICEADDED", - "JOYDEVICEREMOVED", - "CONTROLLERAXISMOTION", - "CONTROLLERBUTTONDOWN", - "CONTROLLERBUTTONUP", - "CONTROLLERDEVICEADDED", - "CONTROLLERDEVICEREMOVED", - "CONTROLLERDEVICEREMAPPED", - "FINGERDOWN", - "FINGERUP", - "FINGERMOTION", - "DOLLARGESTURE", - "DOLLARRECORD", - "MULTIGESTURE", - "CLIPBOARDUPDATE", - "DROPFILE", - "DROPTEXT", - "DROPBEGIN", - "DROPCOMPLETE", - "AUDIODEVICEADDED", - "AUDIODEVICEREMOVED", - "SENSORUPDATE", - "RENDER_TARGETS_RESET", - "RENDER_DEVICE_RESET", - "USEREVENT", - "LASTEVENT", - ]) - - # Symbol renaming examples - proc onSymbol*(sym: var Symbol) {.exportc, dynlib.} = - # Get rid of leading and trailing underscores - # sym.name = sym.name.strip(chars = {'_'}) - if sym.name == "SDL_init_flags": - sym.name = "sdlInitFlags" - if sym.name == "GPU_init_flags": - sym.name = "gpuInitFlags" - - if sym.kind == nskProc or sym.kind == nskType or sym.kind == nskConst: - if sym.name != "_": - sym.name = sym.name.strip(chars={'_'}).replace("___", "_") - - sym.name = sym.name.replace(re"^SDL_", "") - - if sym.name.startsWith("SDLK_"): - sym.name = sym.name.replace("SDLK_", "KEYCODE_") - - if EVENT_TYPES.contains(sym.name): - sym.name = "EVENT_" & sym.name - - if sym.name == "version": - sym.name = "Version" - - if sym.name == "ThreadID": - sym.name = "CurrentThreadID" - if sym.name == "GLContextResetNotification": - sym.name = "GLContextResetNotificationEnum" - if sym.name == "KeyCode": - sym.name = "KeyCodeEnum" +cPluginPath(symbolPluginPath) when defined(SDL_Static): cImport(SDL_Path, recurse = true, flags = "-f=ast2 -DDOXYGEN_SHOULD_IGNORE_THIS") diff --git a/src/sdl2/sdl2_gfx.nim b/src/sdl2/sdl2_gfx.nim index c07a548..6862ac0 100644 --- a/src/sdl2/sdl2_gfx.nim +++ b/src/sdl2/sdl2_gfx.nim @@ -9,6 +9,7 @@ const buildDir = baseDir / "build" sdlIncludeDir = buildDir / "sdl2" / "include" srcDir = buildDir / "sdl2_gfx" + symbolPluginPath = currentSourcePath.parentDir() / "cleansymbols.nim" getHeader( "SDL2_gfxPrimitives.h", @@ -21,89 +22,7 @@ getHeader( # cDebug() # cDisableCaching() -cPlugin: - import strutils, nre - import sets - - const EVENT_TYPES = toHashSet([ - "FIRSTEVENT", - "QUIT", - "APP_TERMINATING", - "APP_LOWMEMORY", - "APP_WILLENTERBACKGROUND", - "APP_DIDENTERBACKGROUND", - "APP_WILLENTERFOREGROUND", - "APP_DIDENTERFOREGROUND", - "DISPLAYEVENT", - "WINDOWEVENT", - "SYSWMEVENT", - "KEYDOWN", - "KEYUP", - "TEXTEDITING", - "TEXTINPUT", - "KEYMAPCHANGED", - "MOUSEMOTION", - "MOUSEBUTTONDOWN", - "MOUSEBUTTONUP", - "MOUSEWHEEL", - "JOYAXISMOTION", - "JOYBALLMOTION", - "JOYHATMOTION", - "JOYBUTTONDOWN", - "JOYBUTTONUP", - "JOYDEVICEADDED", - "JOYDEVICEREMOVED", - "CONTROLLERAXISMOTION", - "CONTROLLERBUTTONDOWN", - "CONTROLLERBUTTONUP", - "CONTROLLERDEVICEADDED", - "CONTROLLERDEVICEREMOVED", - "CONTROLLERDEVICEREMAPPED", - "FINGERDOWN", - "FINGERUP", - "FINGERMOTION", - "DOLLARGESTURE", - "DOLLARRECORD", - "MULTIGESTURE", - "CLIPBOARDUPDATE", - "DROPFILE", - "DROPTEXT", - "DROPBEGIN", - "DROPCOMPLETE", - "AUDIODEVICEADDED", - "AUDIODEVICEREMOVED", - "SENSORUPDATE", - "RENDER_TARGETS_RESET", - "RENDER_DEVICE_RESET", - "USEREVENT", - "LASTEVENT", - ]) - - # Symbol renaming examples - proc onSymbol*(sym: var Symbol) {.exportc, dynlib.} = - # Get rid of leading and trailing underscores - if sym.kind == nskProc or sym.kind == nskType or sym.kind == nskConst: - if sym.name != "_": - sym.name = sym.name.strip(chars={'_'}).replace("___", "_") - - sym.name = sym.name.replace(re"^SDL_", "") - - if sym.name.startsWith("SDLK_"): - sym.name = sym.name.replace("SDLK_", "KEYCODE_") - - if EVENT_TYPES.contains(sym.name): - sym.name = "EVENT_" & sym.name - - if sym.name == "version": - sym.name = "Version" - - if sym.name == "ThreadID": - sym.name = "CurrentThreadID" - if sym.name == "GLContextResetNotification": - sym.name = "GLContextResetNotificationEnum" - if sym.name == "KeyCode": - sym.name = "KeyCodeEnum" - +cPluginPath(symbolPluginPath) when defined(SDL2_GfxPrimitives_Static): cImport(srcDir / "SDL2_gfxPrimitives.h", recurse = false, flags = &"-I={sdlIncludeDir} -f=ast2") diff --git a/src/sdl2/sdl2_gpu.nim b/src/sdl2/sdl2_gpu.nim index 0e43356..572a30c 100644 --- a/src/sdl2/sdl2_gpu.nim +++ b/src/sdl2/sdl2_gpu.nim @@ -11,6 +11,7 @@ const sdlIncludeDir = sdlDir / "include" cmakeModPath = baseDir / "cmake" / "sdl2" srcDir = buildDir / "sdl2_gpu" + symbolPluginPath = currentSourcePath.parentDir() / "cleansymbols.nim" getHeader( "SDL_gpu.h", @@ -39,94 +40,7 @@ cOverride: LOG_LEVEL_WARNING LOG_LEVEL_ERROR -cPlugin: - import strutils, nre - import sets - - const EVENT_TYPES = toHashSet([ - "FIRSTEVENT", - "QUIT", - "APP_TERMINATING", - "APP_LOWMEMORY", - "APP_WILLENTERBACKGROUND", - "APP_DIDENTERBACKGROUND", - "APP_WILLENTERFOREGROUND", - "APP_DIDENTERFOREGROUND", - "DISPLAYEVENT", - "WINDOWEVENT", - "SYSWMEVENT", - "KEYDOWN", - "KEYUP", - "TEXTEDITING", - "TEXTINPUT", - "KEYMAPCHANGED", - "MOUSEMOTION", - "MOUSEBUTTONDOWN", - "MOUSEBUTTONUP", - "MOUSEWHEEL", - "JOYAXISMOTION", - "JOYBALLMOTION", - "JOYHATMOTION", - "JOYBUTTONDOWN", - "JOYBUTTONUP", - "JOYDEVICEADDED", - "JOYDEVICEREMOVED", - "CONTROLLERAXISMOTION", - "CONTROLLERBUTTONDOWN", - "CONTROLLERBUTTONUP", - "CONTROLLERDEVICEADDED", - "CONTROLLERDEVICEREMOVED", - "CONTROLLERDEVICEREMAPPED", - "FINGERDOWN", - "FINGERUP", - "FINGERMOTION", - "DOLLARGESTURE", - "DOLLARRECORD", - "MULTIGESTURE", - "CLIPBOARDUPDATE", - "DROPFILE", - "DROPTEXT", - "DROPBEGIN", - "DROPCOMPLETE", - "AUDIODEVICEADDED", - "AUDIODEVICEREMOVED", - "SENSORUPDATE", - "RENDER_TARGETS_RESET", - "RENDER_DEVICE_RESET", - "USEREVENT", - "LASTEVENT", - ]) - - # Symbol renaming examples - proc onSymbol*(sym: var Symbol) {.exportc, dynlib.} = - # Remove prefixes or suffixes from procs - if sym.name == "SDL_init_flags": - sym.name = "sdlInitFlags" - if sym.name == "GPU_init_flags": - sym.name = "gpuInitFlags" - - if sym.kind == nskProc or sym.kind == nskType or sym.kind == nskConst: - if sym.name != "_": - sym.name = sym.name.strip(chars={'_'}).replace("___", "_") - - sym.name = sym.name.replace(re"^GPU_", "") - sym.name = sym.name.replace(re"^SDL_", "") - - if sym.name.startsWith("SDLK_"): - sym.name = sym.name.replace("SDLK_", "KEYCODE_") - - if EVENT_TYPES.contains(sym.name): - sym.name = "EVENT_" & sym.name - - if sym.name == "version": - sym.name = "Version" - - if sym.name == "ThreadID": - sym.name = "CurrentThreadID" - if sym.name == "GLContextResetNotification": - sym.name = "GLContextResetNotificationEnum" - if sym.name == "KeyCode": - sym.name = "KeyCodeEnum" +cPluginPath(symbolPluginPath) when defined(SDL_gpu_Static): cImport(SDL_gpuPath, recurse = false, flags = &"-I={sdlIncludeDir} -f=ast2") diff --git a/src/sdl2/sdl2_image.nim b/src/sdl2/sdl2_image.nim index 50ad6dc..59e44f5 100644 --- a/src/sdl2/sdl2_image.nim +++ b/src/sdl2/sdl2_image.nim @@ -9,6 +9,7 @@ const buildDir = baseDir / "build" sdlIncludeDir = buildDir / "sdl2" / "include" srcDir = buildDir / "sdl2_image" + symbolPluginPath = currentSourcePath.parentDir() / "cleansymbols.nim" getHeader( "SDL_image.h", @@ -21,90 +22,7 @@ getHeader( # cDebug() # cDisableCaching() - -cPlugin: - import strutils, nre - import sets - - const EVENT_TYPES = toHashSet([ - "FIRSTEVENT", - "QUIT", - "APP_TERMINATING", - "APP_LOWMEMORY", - "APP_WILLENTERBACKGROUND", - "APP_DIDENTERBACKGROUND", - "APP_WILLENTERFOREGROUND", - "APP_DIDENTERFOREGROUND", - "DISPLAYEVENT", - "WINDOWEVENT", - "SYSWMEVENT", - "KEYDOWN", - "KEYUP", - "TEXTEDITING", - "TEXTINPUT", - "KEYMAPCHANGED", - "MOUSEMOTION", - "MOUSEBUTTONDOWN", - "MOUSEBUTTONUP", - "MOUSEWHEEL", - "JOYAXISMOTION", - "JOYBALLMOTION", - "JOYHATMOTION", - "JOYBUTTONDOWN", - "JOYBUTTONUP", - "JOYDEVICEADDED", - "JOYDEVICEREMOVED", - "CONTROLLERAXISMOTION", - "CONTROLLERBUTTONDOWN", - "CONTROLLERBUTTONUP", - "CONTROLLERDEVICEADDED", - "CONTROLLERDEVICEREMOVED", - "CONTROLLERDEVICEREMAPPED", - "FINGERDOWN", - "FINGERUP", - "FINGERMOTION", - "DOLLARGESTURE", - "DOLLARRECORD", - "MULTIGESTURE", - "CLIPBOARDUPDATE", - "DROPFILE", - "DROPTEXT", - "DROPBEGIN", - "DROPCOMPLETE", - "AUDIODEVICEADDED", - "AUDIODEVICEREMOVED", - "SENSORUPDATE", - "RENDER_TARGETS_RESET", - "RENDER_DEVICE_RESET", - "USEREVENT", - "LASTEVENT", - ]) - - # Symbol renaming examples - proc onSymbol*(sym: var Symbol) {.exportc, dynlib.} = - # Get rid of leading and trailing underscores - if sym.kind == nskProc or sym.kind == nskType or sym.kind == nskConst: - if sym.name != "_": - sym.name = sym.name.strip(chars={'_'}).replace("___", "_") - - sym.name = sym.name.replace(re"^SDL_", "") - - if sym.name.startsWith("SDLK_"): - sym.name = sym.name.replace("SDLK_", "KEYCODE_") - - if EVENT_TYPES.contains(sym.name): - sym.name = "EVENT_" & sym.name - - if sym.name == "version": - sym.name = "Version" - - if sym.name == "ThreadID": - sym.name = "CurrentThreadID" - if sym.name == "GLContextResetNotification": - sym.name = "GLContextResetNotificationEnum" - if sym.name == "KeyCode": - sym.name = "KeyCodeEnum" - +cPluginPath(symbolPluginPath) when defined(SDL_image_Static): cImport(SDL_image_Path, recurse = false, flags = &"-I={sdlIncludeDir} -f=ast2") diff --git a/src/sdl2/sdl2_mixer.nim b/src/sdl2/sdl2_mixer.nim index 9a70d80..d0931ab 100644 --- a/src/sdl2/sdl2_mixer.nim +++ b/src/sdl2/sdl2_mixer.nim @@ -9,6 +9,7 @@ const buildDir = baseDir / "build" sdlIncludeDir = buildDir / "sdl2" / "include" srcDir = buildDir / "sdl2_mixer" + symbolPluginPath = currentSourcePath.parentDir() / "cleansymbols.nim" getHeader( "SDL_mixer.h", @@ -21,88 +22,7 @@ getHeader( # cDebug() # cDisableCaching() -cPlugin: - import strutils, nre - import sets - - const EVENT_TYPES = toHashSet([ - "FIRSTEVENT", - "QUIT", - "APP_TERMINATING", - "APP_LOWMEMORY", - "APP_WILLENTERBACKGROUND", - "APP_DIDENTERBACKGROUND", - "APP_WILLENTERFOREGROUND", - "APP_DIDENTERFOREGROUND", - "DISPLAYEVENT", - "WINDOWEVENT", - "SYSWMEVENT", - "KEYDOWN", - "KEYUP", - "TEXTEDITING", - "TEXTINPUT", - "KEYMAPCHANGED", - "MOUSEMOTION", - "MOUSEBUTTONDOWN", - "MOUSEBUTTONUP", - "MOUSEWHEEL", - "JOYAXISMOTION", - "JOYBALLMOTION", - "JOYHATMOTION", - "JOYBUTTONDOWN", - "JOYBUTTONUP", - "JOYDEVICEADDED", - "JOYDEVICEREMOVED", - "CONTROLLERAXISMOTION", - "CONTROLLERBUTTONDOWN", - "CONTROLLERBUTTONUP", - "CONTROLLERDEVICEADDED", - "CONTROLLERDEVICEREMOVED", - "CONTROLLERDEVICEREMAPPED", - "FINGERDOWN", - "FINGERUP", - "FINGERMOTION", - "DOLLARGESTURE", - "DOLLARRECORD", - "MULTIGESTURE", - "CLIPBOARDUPDATE", - "DROPFILE", - "DROPTEXT", - "DROPBEGIN", - "DROPCOMPLETE", - "AUDIODEVICEADDED", - "AUDIODEVICEREMOVED", - "SENSORUPDATE", - "RENDER_TARGETS_RESET", - "RENDER_DEVICE_RESET", - "USEREVENT", - "LASTEVENT", - ]) - - # Symbol renaming examples - proc onSymbol*(sym: var Symbol) {.exportc, dynlib.} = - # Get rid of leading and trailing underscores - if sym.kind == nskProc or sym.kind == nskType or sym.kind == nskConst: - if sym.name != "_": - sym.name = sym.name.strip(chars={'_'}).replace("___", "_") - - sym.name = sym.name.replace(re"^SDL_", "") - - if sym.name.startsWith("SDLK_"): - sym.name = sym.name.replace("SDLK_", "KEYCODE_") - - if EVENT_TYPES.contains(sym.name): - sym.name = "EVENT_" & sym.name - - if sym.name == "version": - sym.name = "Version" - - if sym.name == "ThreadID": - sym.name = "CurrentThreadID" - if sym.name == "GLContextResetNotification": - sym.name = "GLContextResetNotificationEnum" - if sym.name == "KeyCode": - sym.name = "KeyCodeEnum" +cPluginPath(symbolPluginPath) when defined(SDL_mixer_Static): cImport(SDL_mixer_Path, recurse = false, flags = &"-I={sdlIncludeDir} -f=ast2") diff --git a/src/sdl2/sdl2_net.nim b/src/sdl2/sdl2_net.nim index 0bcebc8..0e956df 100644 --- a/src/sdl2/sdl2_net.nim +++ b/src/sdl2/sdl2_net.nim @@ -9,6 +9,7 @@ const buildDir = baseDir / "build" sdlIncludeDir = buildDir / "sdl2" / "include" srcDir = buildDir / "sdl2_net" + symbolPluginPath = currentSourcePath.parentDir() / "cleansymbols.nim" getHeader( "SDL_net.h", @@ -21,90 +22,7 @@ getHeader( # cDebug() # cDisableCaching() - -cPlugin: - import strutils, nre - import sets - - const EVENT_TYPES = toHashSet([ - "FIRSTEVENT", - "QUIT", - "APP_TERMINATING", - "APP_LOWMEMORY", - "APP_WILLENTERBACKGROUND", - "APP_DIDENTERBACKGROUND", - "APP_WILLENTERFOREGROUND", - "APP_DIDENTERFOREGROUND", - "DISPLAYEVENT", - "WINDOWEVENT", - "SYSWMEVENT", - "KEYDOWN", - "KEYUP", - "TEXTEDITING", - "TEXTINPUT", - "KEYMAPCHANGED", - "MOUSEMOTION", - "MOUSEBUTTONDOWN", - "MOUSEBUTTONUP", - "MOUSEWHEEL", - "JOYAXISMOTION", - "JOYBALLMOTION", - "JOYHATMOTION", - "JOYBUTTONDOWN", - "JOYBUTTONUP", - "JOYDEVICEADDED", - "JOYDEVICEREMOVED", - "CONTROLLERAXISMOTION", - "CONTROLLERBUTTONDOWN", - "CONTROLLERBUTTONUP", - "CONTROLLERDEVICEADDED", - "CONTROLLERDEVICEREMOVED", - "CONTROLLERDEVICEREMAPPED", - "FINGERDOWN", - "FINGERUP", - "FINGERMOTION", - "DOLLARGESTURE", - "DOLLARRECORD", - "MULTIGESTURE", - "CLIPBOARDUPDATE", - "DROPFILE", - "DROPTEXT", - "DROPBEGIN", - "DROPCOMPLETE", - "AUDIODEVICEADDED", - "AUDIODEVICEREMOVED", - "SENSORUPDATE", - "RENDER_TARGETS_RESET", - "RENDER_DEVICE_RESET", - "USEREVENT", - "LASTEVENT", - ]) - - # Symbol renaming examples - proc onSymbol*(sym: var Symbol) {.exportc, dynlib.} = - # Get rid of leading and trailing underscores - if sym.kind == nskProc or sym.kind == nskType or sym.kind == nskConst: - if sym.name != "_": - sym.name = sym.name.strip(chars={'_'}).replace("___", "_") - - sym.name = sym.name.replace(re"^SDL_", "") - - if sym.name.startsWith("SDLK_"): - sym.name = sym.name.replace("SDLK_", "KEYCODE_") - - if EVENT_TYPES.contains(sym.name): - sym.name = "EVENT_" & sym.name - - if sym.name == "version": - sym.name = "Version" - - if sym.name == "ThreadID": - sym.name = "CurrentThreadID" - if sym.name == "GLContextResetNotification": - sym.name = "GLContextResetNotificationEnum" - if sym.name == "KeyCode": - sym.name = "KeyCodeEnum" - +cPluginPath(symbolPluginPath) when defined(SDL_net_Static): cImport(SDL_net_Path, recurse = false, flags = &"-I={sdlIncludeDir} -f=ast2") diff --git a/src/sdl2/sdl2_ttf.nim b/src/sdl2/sdl2_ttf.nim index 07fa44a..78e679d 100644 --- a/src/sdl2/sdl2_ttf.nim +++ b/src/sdl2/sdl2_ttf.nim @@ -11,6 +11,7 @@ const sdlIncludeDir = sdlDir / "include" cmakeModPath = baseDir / "cmake" / "sdl2" srcDir = buildDir / "sdl2_ttf" + symbolPluginPath = currentSourcePath.parentDir() / "cleansymbols.nim" getHeader( "SDL_ttf.h", @@ -25,88 +26,7 @@ getHeader( # cDebug() # cDisableCaching() -cPlugin: - import strutils, nre - import sets - - const EVENT_TYPES = toHashSet([ - "FIRSTEVENT", - "QUIT", - "APP_TERMINATING", - "APP_LOWMEMORY", - "APP_WILLENTERBACKGROUND", - "APP_DIDENTERBACKGROUND", - "APP_WILLENTERFOREGROUND", - "APP_DIDENTERFOREGROUND", - "DISPLAYEVENT", - "WINDOWEVENT", - "SYSWMEVENT", - "KEYDOWN", - "KEYUP", - "TEXTEDITING", - "TEXTINPUT", - "KEYMAPCHANGED", - "MOUSEMOTION", - "MOUSEBUTTONDOWN", - "MOUSEBUTTONUP", - "MOUSEWHEEL", - "JOYAXISMOTION", - "JOYBALLMOTION", - "JOYHATMOTION", - "JOYBUTTONDOWN", - "JOYBUTTONUP", - "JOYDEVICEADDED", - "JOYDEVICEREMOVED", - "CONTROLLERAXISMOTION", - "CONTROLLERBUTTONDOWN", - "CONTROLLERBUTTONUP", - "CONTROLLERDEVICEADDED", - "CONTROLLERDEVICEREMOVED", - "CONTROLLERDEVICEREMAPPED", - "FINGERDOWN", - "FINGERUP", - "FINGERMOTION", - "DOLLARGESTURE", - "DOLLARRECORD", - "MULTIGESTURE", - "CLIPBOARDUPDATE", - "DROPFILE", - "DROPTEXT", - "DROPBEGIN", - "DROPCOMPLETE", - "AUDIODEVICEADDED", - "AUDIODEVICEREMOVED", - "SENSORUPDATE", - "RENDER_TARGETS_RESET", - "RENDER_DEVICE_RESET", - "USEREVENT", - "LASTEVENT", - ]) - - # Symbol renaming examples - proc onSymbol*(sym: var Symbol) {.exportc, dynlib.} = - # Get rid of leading and trailing underscores - if sym.kind == nskProc or sym.kind == nskType or sym.kind == nskConst: - if sym.name != "_": - sym.name = sym.name.strip(chars={'_'}).replace("___", "_") - - sym.name = sym.name.replace(re"^SDL_", "") - - if sym.name.startsWith("SDLK_"): - sym.name = sym.name.replace("SDLK_", "KEYCODE_") - - if EVENT_TYPES.contains(sym.name): - sym.name = "EVENT_" & sym.name - - if sym.name == "version": - sym.name = "Version" - - if sym.name == "ThreadID": - sym.name = "CurrentThreadID" - if sym.name == "GLContextResetNotification": - sym.name = "GLContextResetNotificationEnum" - if sym.name == "KeyCode": - sym.name = "KeyCodeEnum" +cPluginPath(symbolPluginPath) when defined(SDL_ttf_Static): cImport(SDL_ttf_Path, recurse = false, flags = &"-I={sdlIncludeDir} -f=ast2")