1from ctypes import POINTER, c_char_p, c_int, c_char
2from .dll import _bind
3
4__all__ = [
5    # Enums
6    "SDL_errorcode",
7    "SDL_ENOMEM", "SDL_EFREAD", "SDL_EFWRITE", "SDL_EFSEEK",
8    "SDL_UNSUPPORTED", "SDL_LASTERROR",
9
10    # Macro Functions
11    "SDL_OutOfMemory", "SDL_Unsupported", "SDL_InvalidParamError", "SDL_Error",
12
13    # Functions
14    "SDL_SetError", "SDL_GetError", "SDL_GetErrorMsg", "SDL_ClearError"
15]
16
17
18SDL_SetError = _bind("SDL_SetError", [c_char_p], c_int)
19SDL_GetError = _bind("SDL_GetError", None, c_char_p)
20SDL_GetErrorMsg = _bind("SDL_GetErrorMsg", [POINTER(c_char), c_int], c_char_p, added='2.0.14')
21SDL_ClearError = _bind("SDL_ClearError")
22
23
24SDL_errorcode = c_int
25
26SDL_ENOMEM = 0
27SDL_EFREAD = 1
28SDL_EFWRITE = 2
29SDL_EFSEEK = 3
30SDL_UNSUPPORTED = 4
31SDL_LASTERROR = 5
32
33
34SDL_Error = _bind("SDL_Error", [SDL_errorcode], c_int)
35SDL_OutOfMemory = SDL_Error(SDL_ENOMEM)
36SDL_Unsupported = SDL_Error(SDL_UNSUPPORTED)
37SDL_InvalidParamError = lambda x: SDL_SetError("Parameter '%s' is invalid" % (x))
38