To read the value of any global Lua variable,
one can use the function:
lua_Object lua_getglobal (char *varname);
To store a value previously pushed onto the stack in a global variable,
there is the function:
void lua_storeglobal (char *varname);
Tables can also be manipulated via the API.
The function
lua_Object lua_getsubscript (void);
expects on the stack a table and an index,
and returns the contents of the table at that index.
As in Lua, if the first object is not a table,
or the index is not present in the table,
the correspondent fallback is called.
For compatibility with previous versions of the API,
the following macros are supported:
lua_Object lua_getindexed (lua_Object table, float index);
lua_Object lua_getfield (lua_Object table, char *field);
The first one is used for numeric indices,
while the second can be used for any string index.
To store a value in an index,
the program must push onto the stack the table, the index,
and the value,
and then call the function:
void lua_storesubscript (void);
Again, the correspondent fallback is called if needed.
Finally, the function
lua_Object lua_createtable (void);
creates a new table.
Please Notice:
Most functions from the Lua library receive parameters through the stack.
Because other functions also use the stack,
it is important that these
parameters be pushed just before the correspondent call,
without intermediate calls to the Lua library.
For instance, suppose the user wants the value of a[i].
A simplistic solution would be:
/* Warning: WRONG CODE */
lua_Object result;
lua_pushobject(lua_getglobal("a")); /* push table */
lua_pushobject(lua_getglobal("i")); /* push index */
result = lua_getsubscript();
However, the call lua_getglobal("i") modifies the stack,
and invalidates the previous pushed value.
A correct solution could be:
lua_Object index, result;
index = lua_getglobal("i");
lua_pushobject(lua_getglobal("a")); /* push table */
lua_pushobject(index); /* push index */
result = lua_getsubscript();
Next: 5.4 Calling Lua Functions Up: 5 The Application Program Previous: 5.2 Converting Values between