lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]




On Tue, Aug 30, 2011 at 11:39 AM, Robert Raschke <rtrlists@googlemail.com> wrote:

On Tue, Aug 30, 2011 at 4:22 PM, oliver <oliver.schoenborn@gmail.com> wrote:

On Tue, Aug 30, 2011 at 10:58 AM, Robert Raschke <rtrlists@googlemail.com> wrote:

On Tue, Aug 30, 2011 at 3:52 PM, Robert Raschke <rtrlists@googlemail.com> wrote:

On Tue, Aug 30, 2011 at 3:22 PM, oliver <oliver.schoenborn@gmail.com> wrote:
Would it be correct to say, "all functions which take a stack index
require that it is inside the available stack space", 
...
or when stackspace equals X
   luaL_checkany(L,X+1) is undefined.

BTW, is there a way of knowing "available stack space"? Alternately a "bool lua_isacceptable(L, index)" would be a nice function to have. 
Oliver

int lua_checkstack(lua_State *L, int extra);

http://www.lua.org/manual/5.1/manual.html#lua_checkstack


Actually, on reflection that's not exactly what you're asking for. But lua_gettop (http://www.lua.org/manual/5.1/manual.html#lua_gettop) gets you the size of the stack. So these two give you what you need, or not?

Robby

I was under the impression that the stack has a certain size (say, 20, defined when the lua lib is compiled), and that gettop just returns the index of the top-most element on that stack. So if top=10, an index is still acceptable if it refers to 11, but not if it refers to 21. Is this defined rigorously anywhere? 
Oliver


I'm might be misunderstanding what you are trying to do. If you want to know if you can push more elements on to the stack then you use lua_checkstack(). If you want to know how many elements currently reside on the stack, you use lua_gettop(). I fail to see why you might want to know how many currently unused, but allocated, stack spaces lie above the current top element within it.

Robby


Because as Liam mentioned in another post in this thread, acceptable index is 

(index < 0 && abs(index) <= top) ||
    (index > 0 && index <= stackspace) 

(which I had seen in several other places). The index is known, top is from lua_gettop, but what is stackspace? I can't just assume it is 20 since it might have been changed by whoever built the lua library. 

Oliver