template<> void* ToluaToVector<String>(lua_State* L, int narg, void* def) { if (!lua_istable(L, narg)) return 0; static Vector<String> result; result.Clear(); int length = lua_objlen(L, narg); for (int i = 1; i <= length; ++i) { lua_pushinteger(L, i); lua_gettable(L, narg); if (!lua_isstring(L, -1)) { lua_pop(L, 1); return 0; } String string = tolua_tourho3dstring(L, -1, ""); result.Push(string); lua_pop(L, 1); } return &result; }
template <> void* ToluaToVector<String>(lua_State* L, int narg, void* /*def*/) { if (!lua_istable(L, narg)) return 0; static Vector<String> result; result.Clear(); result.Resize((unsigned)lua_objlen(L, narg)); for (unsigned i = 0; i < result.Size(); ++i) { lua_rawgeti(L, narg, i + 1); result[i] = tolua_tourho3dstring(L, -1, ""); lua_pop(L, 1); } return &result; }
const char* tolua_tourho3dstring(lua_State* L, int narg, const String& str) { return tolua_tourho3dstring(L, narg, str.CString()); }