All pastes #280246 Raw Edit

Someone

public text v1 · immutable
·published 2006-12-15 19:25 UTC
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;
}