Add symbols module

This commit is contained in:
Joey Yakimowich-Payne 2020-04-12 15:02:00 -06:00
commit 7f78ad1576
9 changed files with 123 additions and 594 deletions

View file

@ -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

108
src/sdl2/cleansymbols.nim Normal file
View file

@ -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)

View file

@ -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")

View file

@ -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")

View file

@ -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")

View file

@ -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")

View file

@ -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")

View file

@ -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")

View file

@ -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")