#include "lisp/list_iterator.hpp"
#include "scripting/squirrel_error.hpp"
-namespace Scripting {
+namespace scripting {
-void load_squirrel_table(HSQUIRRELVM vm, SQInteger table_idx, const lisp::Lisp* lisp)
+void load_squirrel_table(HSQUIRRELVM vm, SQInteger table_idx, const Reader& lisp)
{
using namespace lisp;
if(table_idx < 0)
table_idx -= 2;
- lisp::ListIterator iter(lisp);
+ lisp::ListIterator iter(&lisp);
while(iter.next() && iter.lisp() != NULL) {
const std::string& token = iter.item();
sq_pushstring(vm, token.c_str(), token.size());
switch(value->get_type()) {
case Lisp::TYPE_CONS:
sq_newtable(vm);
- load_squirrel_table(vm, sq_gettop(vm), iter.lisp());
+ load_squirrel_table(vm, sq_gettop(vm), *iter.lisp());
break;
case Lisp::TYPE_INTEGER:
sq_pushinteger(vm, value->get_int());
}
if(SQ_FAILED(sq_createslot(vm, table_idx)))
- throw Scripting::SquirrelError(vm, "Couldn't create new index");
+ throw scripting::SquirrelError(vm, "Couldn't create new index");
}
}
-void save_squirrel_table(HSQUIRRELVM vm, SQInteger table_idx, lisp::Writer& writer)
+void save_squirrel_table(HSQUIRRELVM vm, SQInteger table_idx, Writer& writer)
{
// offset because of sq_pushnull
if(table_idx < 0)
}
case OT_BOOL: {
SQBool val;
- sq_getbool(vm, -1, &val);
- writer.write(key, val == SQTrue);
+ if(SQ_SUCCEEDED(sq_getbool(vm, -1, &val)))
+ writer.write(key, val == SQTrue);
break;
}
case OT_STRING: {
sq_pop(vm, 1);
}
-} // namespace Scripting
+} // namespace scripting
/* EOF */