lua-users home
lua-l archive

RE: First post: Hierarchal Data storage... - Changing vars in tab les from C

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


Hi Dave..
The problem you have, is you are trying to set the variable on the variable
itself, and not its 'holding' parent table....
Tsk tsk...amateurs..
-----Original Message-----
From: Dave Owens [mailto:DaveO@climax.co.uk] 
Sent: 29 September 2003 17:05
To: Lua list
Subject: RE: First post: Hierarchal Data storage... - Changing vars in tab
les from C
Hi yall..me again..
I cant get my head around this stack useage, so I'm afraid I'm asking out
again..
I use this generic function to traverse my tables, to put onto the top of
the stack, the variable requested 
bool	FindChunk(const char *Name) 
{
	lua_getfenv(mLuaVM,0);
	while (*Name)
	{
		int	Type=lua_type(mLuaVM,-1);
		if (Type!=LUA_TTABLE)
		{ // Check we are currently looking at a table.
			return(false);
		}
		int Len=0;
		while (Name[Len] && Name[Len]!='.')	
		{
			Len++;
		}
		lua_pushlstring(mLuaVM, Name, Len);
		lua_gettable(mLuaVM, -2);
		lua_remove(mLuaVM, -2);		// Keep Stack tidy
		Name+=Len;
		if (*Name)
		{
			Name++;
		}
	}
	return(lua_type(mLuaVM,-1)!=LUA_TNIL);
}
Now, this function works fine, but when I try to do the flow for changing a
variable, i.e.
	if (FindChunk(BaseBucket,Name))
	{
		int	Type=lua_type(mLuaVM,-1);
		ASSERTM(Type==LUA_TNUMBER,"Var Not Number");
		lua_pushnumber(mLuaVM,v);
		lua_settable(mLuaVM, -2);
		return(true);
	}
Whatever value I put in the settable for stack pos, either bombs, or does
nothing..
What am I thick at now?
-----Original Message-----
From: Dave Owens [mailto:DaveO@climax.co.uk] 
Sent: 26 September 2003 11:37
To: Lua list
Subject: RE: First post: Hierarchal Data storage...
Once again..thanks...
Last one (maybe) for the moment..
I don't like having to have a 'named' table to hold all my 'tables' i.e.
Config = {
		blah = {
		...
		..
		}
}
In that I need to do 
>>	lua_getglobal(mLuaVM, "Config"); 	<<
	lua_pushlstring(mLuaVM, Name, Len);
	lua_gettable(mLuaVM, -2);
Using my new ref thingy, Id like to create a base table, that the script
vars are loaded into..how do I do that? And what are the limits for Refs? Do
I have to free them?
-----Original Message-----
From: Ashwin Hirschi [mailto:deery@chello.nl] 
Sent: 26 September 2003 03:32
To: Lua list
Subject: Re: First post: Hierarchal Data storage...
> Is it possible to store off the current 'table address' held in the 
> stack, so I can quickly push it back later?
You can use:
- lua_ref to get an int reference to your table
- lua_getref to push your ref'd table back on the stack, and
- lua_unref to release the reference
This'll work in both Lua 4 and 5.
Ashwin.

AltStyle によって変換されたページ (->オリジナル) /