Exemple #1
0
		void GetGlobal(const char *name,T t)
		{
			lua::GetGlobal(hLua,name);
			CheckVarFromLua(hLua,t,-1);
			lua::Pop(hLua,1);
		}
Exemple #2
0
//------------------------------------------------------------------------------
inline void CheckVarFromLua(lua::Handle hLua,lua::Var *t,int i)
{
	int   type = lua::TypeCast(hLua, i);

	if ( type==LUA_TSTRING )
	{
		lua::Str   var;
		CheckVarFromLua(hLua,&var,i);
		*t = var;
	}
	else if ( type==LUA_TBOOLEAN )
	{
		lua::Bool   var;
		CheckVarFromLua(hLua,&var,i);
		*t = var;
	}
	else if ( type==LUA_TNIL )
	{
		*t = lua::Var();
	}
	else if ( type==LUA_TNONE )
	{
		lua::Log<<"error:No one know what type is it. That's new"<<lua::End;
	}
	else if ( type==LUA_TLIGHTUSERDATA )
	{
		lua::Ptr   var;
		CheckVarFromLua(hLua,&var,i);
		*t = var;
	}
	else if ( type==LUA_TTABLE )
	{
		lua::Table   table;
		CheckVarFromLua(hLua,&table,i);
		*t = table;
	}
	else if ( type==LUA_TFUNCTION )
	{
		lua::PushValue(hLua,-1);
		lua::Func   func;
		lua::Register::Item   item = hLua->_register->newItem();
		item->setVar();
		func._set(hLua,item);

		*t = func;
	}
	else if ( type==LUA_TUSERDATA )
	{
		lua::PushValue(hLua,-1);
		lua::User   func;
		lua::Register::Item   item = hLua->_register->newItem();
		item->setVar();
		func._set(hLua,item);

		*t = func;
	}
	else if ( type==LUA_TTHREAD )
	{
		lua::PushValue(hLua,-1);
		lua::Task   func;
		lua::Register::Item   item = hLua->_register->newItem();
		item->setVar();
		func._set(hLua,item);

		*t = func;
	}
	else if ( lua_isinteger(hLua->_lua, i) )
	{
		lua::Int   var;
		CheckVarFromLua(hLua,&var,i);
		*t = var;
	}
	else if ( lua_isnumber(hLua->_lua, i) )
	{
		lua::Num   var;
		CheckVarFromLua(hLua,&var,i);
		*t = var;
	}
	else
	{
		lua::Log<<"error:you get something luapp can't handle with"<<lua::End;
		*t = lua::Var();
	}
}
Exemple #3
0
inline void _SaveTableValue(lua::NativeState hLua,lua::Table *table,T key)
{
	// ... [value]

	int   type = lua_type(hLua, -1);

	if ( type==LUA_TSTRING )
	{
		lua::Str   _value;
		CheckVarFromLua(hLua,&_value,-1);
		lua::Var   value(_value);
		(*table)[key] = value;
	}
	else if ( type==LUA_TTABLE )
	{
		lua::Table   subTable;
		_VisitTable(hLua,&subTable);

		lua::Var   value = subTable;
		(*table)[key] = value;
	}
	// Just in case.
	else if ( type==LUA_TNIL )
	{
		// This element is not exist.
	}
	else if ( type==LUA_TNONE )
	{
		lua::Log<<"error:No one know what type is it"<<lua::End;
	}
	else if ( type==LUA_TLIGHTUSERDATA )
	{
		lua::Ptr   value;
		CheckVarFromLua(hLua,&value,-1);
		(*table)[key] = value;
	}
	else if ( type==LUA_TBOOLEAN )
	{
		lua::Bool   value;
		CheckVarFromLua(hLua,&value,-1);
		(*table)[key] = value;
	}
	#ifndef _LUAPP_KEEP_LOCAL_LUA_VARIABLE_
	else if ( type==LUA_TFUNCTION )
	{
		lua::Func   value;
		(*table)[key] = value;
	}
	else if ( type==LUA_TTHREAD )
	{
		lua::Task   value;
		(*table)[key] = value;
	}
	else if ( type==LUA_TUSERDATA )
	{
		lua::User   value;
		(*table)[key] = value;
	}
	#endif
	else if ( lua_isinteger(hLua, -1) )
	{
		lua::Int   value;
		CheckVarFromLua(hLua,&value,-1);
		(*table)[key] = value;
	}
	else if ( lua_isnumber(hLua, -1) )
	{
		lua::Num   value;
		CheckVarFromLua(hLua,&value,-1);
		(*table)[key] = value;
	}
	else
	{
		// drop else value.
	}

	// ... [value]
}
Exemple #4
0
inline void _SaveTableValue(lua::Handle hLua,lua::Table *table,T key)
{
	// ... [value]

	int   type = lua::TypeCast(hLua, -1);

	if ( type==LUA_TSTRING )
	{
		lua::Str   _value;
		CheckVarFromLua(hLua,&_value,-1);
		lua::Var   value(_value);
		(*table)[key] = value;
	}
	else if ( type==LUA_TTABLE )
	{
		lua::Table   subTable;
		_VisitTable(hLua,&subTable);

		lua::Var   value = subTable;
		(*table)[key] = value;
	}
	// Just in case.
	else if ( type==LUA_TNIL )
	{
		// This element is not exist.
	}
	else if ( type==LUA_TNONE )
	{
		lua::Log<<"error:No one know what type is it"<<lua::End;
	}
	else if ( type==LUA_TLIGHTUSERDATA )
	{
		lua::Ptr   value;
		CheckVarFromLua(hLua,&value,-1);
		(*table)[key] = value;
	}
	else if ( type==LUA_TBOOLEAN )
	{
		lua::Bool   value;
		CheckVarFromLua(hLua,&value,-1);
		(*table)[key] = value;
	}
	else if ( type==LUA_TFUNCTION )
	{
		lua::PushValue(hLua,-1);
		lua::Func   value;
		lua::Register::Item   item = hLua->_register->newItem();
		item->setVar();
		value._set(hLua,item);
		(*table)[key] = value;
	}
	else if ( type==LUA_TUSERDATA )
	{
		lua::PushValue(hLua,-1);
		lua::User   value;
		lua::Register::Item   item = hLua->_register->newItem();
		item->setVar();
		value._set(hLua,item);
		(*table)[key] = value;
	}
	else if ( type==LUA_TTHREAD )
	{
		lua::PushValue(hLua,-1);
		lua::Task   value;
		lua::Register::Item   item = hLua->_register->newItem();
		item->setVar();
		value._set(hLua,item);
		(*table)[key] = value;
	}
	else if ( lua_isinteger(hLua->_lua, -1) )
	{
		lua::Int   value;
		CheckVarFromLua(hLua,&value,-1);
		(*table)[key] = value;
	}
	else if ( lua_isnumber(hLua->_lua, -1) )
	{
		lua::Num   value;
		CheckVarFromLua(hLua,&value,-1);
		(*table)[key] = value;
	}
	else
	{
		// drop else value.
	}

	// ... [value]
}
Exemple #5
0
//------------------------------------------------------------------------------
inline void CheckVarFromLua(lua::NativeState hLua,lua::Var *t,int i)
{
	int   type = lua_type(hLua, i);

	if ( type==LUA_TSTRING )
	{
		lua::Str   var;
		CheckVarFromLua(hLua,&var,i);
		*t = var;
	}
	else if ( type==LUA_TBOOLEAN )
	{
		lua::Bool   var;
		CheckVarFromLua(hLua,&var,i);
		*t = var;
	}
	else if ( type==LUA_TNIL )
	{
		*t = lua::Var();
	}
	else if ( type==LUA_TNONE )
	{
		lua::Log<<"error:No one know what type is it. That's new"<<lua::End;
	}
	else if ( type==LUA_TLIGHTUSERDATA )
	{
		lua::Ptr   var;
		CheckVarFromLua(hLua,&var,i);
		*t = var;
	}
	else if ( type==LUA_TTABLE )
	{
		lua::Table   table;
		CheckVarFromLua(hLua,&table,i);
		*t = table;
	}
	#ifndef _LUAPP_KEEP_LOCAL_LUA_VARIABLE_
	else if ( type==LUA_TFUNCTION )
	{
		lua::Func   var;
		*t = var;
	}
	else if ( type==LUA_TTHREAD )
	{
		lua::Task   var;
		*t = var;
	}
	else if ( type==LUA_TUSERDATA )
	{
		lua::User   var;
		*t = var;
	}
	#endif
	else if ( lua_isinteger(hLua, i) )
	{
		lua::Int   var;
		CheckVarFromLua(hLua,&var,i);
		*t = var;
	}
	else if ( lua_isnumber(hLua, i) )
	{
		lua::Num   var;
		CheckVarFromLua(hLua,&var,i);
		*t = var;
	}
	else
	{
		lua::Log<<"error:you get something luapp can't handle with"<<lua::End;
		*t = lua::Var();
	}
}