void ReturnValue(lua::Handle L,R num) { PushVarToLua(L,num); }
//------------------------------------------------------------------------------ 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] }
void SetGlobal(const char *name,T t) { PushVarToLua(hLua,t); lua::SetGlobal(hLua,name); }
//------------------------------------------------------------------------------ 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); } }