X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fscripting%2Fsquirrel_util.hpp;h=da61b26744b7e9438c70cb2e450eafb9243ed4be;hb=11a3b78a422c0deac010eef7de06c97d6b83bad0;hp=f7cbf65a28a3d6a88fce2ea0c148c098e908e0f5;hpb=c62711567861587107d124642db29e2674ee6533;p=supertux.git diff --git a/src/scripting/squirrel_util.hpp b/src/scripting/squirrel_util.hpp index f7cbf65a2..da61b2674 100644 --- a/src/scripting/squirrel_util.hpp +++ b/src/scripting/squirrel_util.hpp @@ -35,11 +35,11 @@ namespace Scripting void exit_squirrel(); void update_debugger(); - std::string squirrel2string(HSQUIRRELVM vm, int i); + std::string squirrel2string(HSQUIRRELVM vm, SQInteger i); void print_squirrel_stack(HSQUIRRELVM vm); HSQOBJECT create_thread(HSQUIRRELVM vm); - SQObject vm_to_object(HSQUIRRELVM vm); + SQObject vm_to_object(HSQUIRRELVM vm); HSQUIRRELVM object_to_vm(HSQOBJECT object); void compile_script(HSQUIRRELVM vm, std::istream& in, @@ -48,7 +48,7 @@ namespace Scripting const std::string& sourcename); template - void expose_object(HSQUIRRELVM v, int table_idx, T* object, + void expose_object(HSQUIRRELVM v, SQInteger table_idx, T* object, const std::string& name, bool free = false) { sq_pushstring(v, name.c_str(), -1); @@ -65,14 +65,14 @@ namespace Scripting } } - static inline void unexpose_object(HSQUIRRELVM v, int table_idx, + static inline void unexpose_object(HSQUIRRELVM v, SQInteger table_idx, const std::string& name) { sq_pushstring(v, name.c_str(), name.length()); - + if(table_idx < 0) table_idx -= 1; - + if(SQ_FAILED(sq_deleteslot(v, table_idx, SQFalse))) { std::ostringstream msg; msg << "Couldn't unregister object '" << name << "' in squirrel root table"; @@ -80,6 +80,28 @@ namespace Scripting } } + // begin serialization functions + void store_float(HSQUIRRELVM vm, const char* name, float val); + void store_int(HSQUIRRELVM vm, const char* name, int val); + void store_string(HSQUIRRELVM vm, const char* name, const std::string& val); + void store_bool(HSQUIRRELVM vm, const char* name, bool val); + + bool has_float(HSQUIRRELVM vm, const char* name); + bool has_int(HSQUIRRELVM vm, const char* name); + bool has_string(HSQUIRRELVM vm, const char* name); + bool has_bool(HSQUIRRELVM vm, const char* name); + + bool get_float(HSQUIRRELVM vm, const char* name, float& val); + bool get_int(HSQUIRRELVM vm, const char* name, int& val); + bool get_string(HSQUIRRELVM vm, const char* name, std::string& val); + bool get_bool(HSQUIRRELVM vm, const char* name, bool& val); + + float read_float(HSQUIRRELVM vm, const char* name); + int read_int(HSQUIRRELVM vm, const char* name); + std::string read_string(HSQUIRRELVM vm, const char* name); + bool read_bool(HSQUIRRELVM vm, const char* name); + // end serialization functions + } #endif