|
if(index < 0 && index >= LUA_MINSTACKINDEX) index -= 1;Actually, it might be useful to simply pre-reserve some expansion space though that assumes that nothing else in a release would force a recompile.
MarkP.S. The specific case that triggered this thinking for me was around adding LUA_UDENVINDEX which is defined as pointing to the environment table of the userdata value at index 1. It results in an error if index 1 does not contain a full userdata. Its intended use is to make it easier to create userdata objects that use their environment tables to store references to other Lua objects -- e.g., lua_getfield(L, LUA_UDENVINDEX, "on_click").
On Apr 24, 2009, at 1:17 PM, TNHarris wrote:
Hello, I'd like to wrap the Lua API in a C++ class to take advantage of overloading and default arguments, etc. I looked at Paolo Capriotti'slibrary but it seems to be oriented for using C++ objects on the stack.I don't need that so much as just a more convenient way to use Lua. I think something like this would be favorable: namespace luaxx { class State { void getTable(int index = -2) { lua_gettable(m_L, index); }; void getTable(int index = -2, int key = -1) { if (index < 0 && index > LUA_REGISTRYINDEX) index -= 1; push(key); lua_gettable(m_L, index); }; }; } Does anyone have a library already made? -- tom telliamed@whoopdedo.org