rendered paste body#define MAKE_SDL_TYPE(L, meta, index, flib) \
{ \
(void)luaL_newmetatable(L, meta); \
lua_pushliteral(L, "__index"); \
lua_pushcfunction(L, index); \
lua_rawset(L, -3); \
luaL_register(L, NULL, flib); \
}
#define RETURN_INTEGER_FIELD(L, index, name, value) \
if(strcmp(index, name) == 0) \
{ \
lua_pushinteger(L, value); \
return 1; \
}
#define LUA_SDL_RECT "SDL_RECT"
static int sdl_rect_index(lua_State *L)
{
SDL_Rect *rect = luaL_checkudata(L, 1, LUA_SDL_RECT);
const char *index = luaL_checkstring(L, 2);
RETURN_INTEGER_FIELD(L, index, "x", rect->x)
RETURN_INTEGER_FIELD(L, index, "y", rect->y)
RETURN_INTEGER_FIELD(L, index, "w", rect->w)
RETURN_INTEGER_FIELD(L, index, "h", rect->h)
return 0;
}