示例#1
0
	void ReturnValue(lua::Handle L,R num)
	{
		PushVarToLua(L,num);
	}
示例#2
0
//------------------------------------------------------------------------------
inline void _PushValueToLuaTable(lua::Handle hLua,lua::Table &table)
{
	lua::NewTable(hLua);                 // ... [T]

	lua::Table::Iterator   it = table.getBegin();

	lua::Var   key;
	lua::Var   value;

	for ( ; ! it.isEnd() ; it++ )
	{
		// ... [T]

		it.getKeyValue( &key, &value );

		if ( lua::VarType<lua::Str>(key) )
		{
			lua::Str   t_key = lua::VarCast<lua::Str>(key);
			PushVarToLua(hLua,t_key);                        // ... [T] [key]
		}
		else if ( lua::VarType<lua::Int>(key) )
		{
			lua::Int   t_key = lua::VarCast<lua::Int>(key);
			PushVarToLua(hLua,t_key);                        // ... [T] [key]
		}
		else if ( lua::VarType<lua::Num>(key) )
		{
			lua::Num   t_key = lua::VarCast<lua::Num>(key);
			PushVarToLua(hLua,t_key);                        // ... [T] [key]
		}
		#ifdef _LUAPP_ENABLE_BOOLEAN_INDEX_OF_TABLE_
		else if ( lua::VarType<lua::Bool>(key) )
		{
			lua::Bool  t_key = lua::VarCast<lua::Bool>(key);
			PushVarToLua(hLua,t_key);                        // ... [T] [key]
		}
		#endif
		else
		{
			continue;    // Just in case.
		}

		if ( lua::VarType<lua::Str>(value) )
		{
			lua::Str   t_value = lua::VarCast<lua::Str>(value);
			PushVarToLua(hLua,t_value);                               // ... [T] [key] [value]
		}
		else if ( lua::VarType<lua::Int>(value) )
		{
			lua::Int   t_value = lua::VarCast<lua::Int>(value);
			PushVarToLua(hLua,t_value);                               // ... [T] [key] [value]
		}
		else if ( lua::VarType<lua::Num>(value) )
		{
			lua::Num   t_value = lua::VarCast<lua::Num>(value);
			PushVarToLua(hLua,t_value);                               // ... [T] [key] [value]
		}
		else if ( lua::VarType<lua::Ptr>(value) )
		{
			lua::Ptr   t_value = lua::VarCast<lua::Ptr>(value);
			PushVarToLua(hLua,t_value);                               // ... [T] [key] [value]
		}
		else if ( lua::VarType<lua::Bool>(value) )
		{
			lua::Bool   t_value = lua::VarCast<lua::Bool>(value);
			PushVarToLua(hLua,t_value);                               // ... [T] [key] [value]
		}
		else if ( lua::VarType<lua::Map>(value) )
		{
			lua::Map    t_value = lua::VarCast<lua::Map>(value);
			t_value._getItem()->getVar();                             // ... [T] [key] [value]
		}
		else if ( lua::VarType<lua::Func>(value) )
		{
			lua::Func   t_value = lua::VarCast<lua::Func>(value);
			t_value._getItem()->getVar();                             // ... [T] [key] [value]
		}
		else if ( lua::VarType<lua::Task>(value) )
		{
			lua::Task   t_value = lua::VarCast<lua::Task>(value);
			t_value._getItem()->getVar();                             // ... [T] [key] [value]
		}
		else if ( lua::VarType<lua::Table>(value) )
		{
			lua::Table   t_value = lua::VarCast<lua::Table>(value);
			_PushValueToLuaTable(hLua,t_value);                       // ... [T] [key] [value]
		}
		else if ( lua::VarType<lua::User>(value) )
		{
			lua::User   t_value = lua::VarCast<lua::User>(value);
			t_value._getItem()->getVar();                             // ... [T] [key] [value]
		}
		else
		{
			lua::Pop(hLua, 1);           // ... [T]
			continue;
		}

		lua::SetTable(hLua,-3);      // ... [T]
	}

	// ... [T]
}
示例#3
0
文件: State.hpp 项目: 4ker/luapp
		void SetGlobal(const char *name,T t)
		{
			PushVarToLua(hLua,t);
			lua::SetGlobal(hLua,name);
		}
示例#4
0
//------------------------------------------------------------------------------
inline void PushVarToLua(lua::Handle hLua,lua::Var &t)
{
	if ( lua::VarType<lua::Str>(t) )
	{
		lua::Str   var = lua::VarCast<lua::Str>(t);
		PushVarToLua(hLua,var);
	}
	else if ( lua::VarType<lua::Num>(t) )
	{
		lua::Num   var = lua::VarCast<lua::Num>(t);
		PushVarToLua(hLua,var);
	}
	else if ( lua::VarType<lua::Int>(t) )
	{
		lua::Int   var = lua::VarCast<lua::Int>(t);
		PushVarToLua(hLua,var);
	}
	else if ( lua::VarType<lua::Bool>(t) )
	{
		lua::Bool  var = lua::VarCast<lua::Bool>(t);
		PushVarToLua(hLua,var);
	}
	else if ( lua::VarType<lua::Nil>(t) )
	{
		lua::PushNil(hLua);
	}
	else if ( lua::VarType<lua::Ptr>(t) )
	{
		lua::Ptr  var = lua::VarCast<lua::Ptr>(t);
		PushVarToLua(hLua,var);
	}
	else if ( lua::VarType<lua::Map>(t) )
	{
		lua::Map    var = lua::VarCast<lua::Map>(t);
		var._getItem()->getVar();
	}
	else if ( lua::VarType<lua::Func>(t) )
	{
		lua::Func   var = lua::VarCast<lua::Func>(t);
		var._getItem()->getVar();
	}
	else if ( lua::VarType<lua::Task>(t) )
	{
		lua::Task   var = lua::VarCast<lua::Task>(t);
		var._getItem()->getVar();
	}
	else if ( lua::VarType<lua::Table>(t) )
	{
		lua::Table  var = lua::VarCast<lua::Table>(t);
		PushVarToLua(hLua,var);
	}
	else if ( lua::VarType<lua::User>(t) )
	{
		lua::User   var = lua::VarCast<lua::User>(t);
		var._getItem()->getVar();
	}
	else
	{
		lua::Log<<"error:you push unknown or unsupported data type"<<lua::End;
		lua::PushNil(hLua);
	}
}