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] }
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] }