#include #include #include #include #include #include VALUE QuasselTypes; VALUE unserialize(VALUE self, VALUE string); extern "C" { void Init_QuasselTypes(); } void Init_QuasselTypes() { QuasselTypes = rb_define_module("QuasselTypes"); rb_define_singleton_method(QuasselTypes, "unserialize", unserialize, 1); } VALUE unserialize(VALUE self, VALUE string) { Check_Type(string, T_STRING); QByteArray byte_array(RSTRING_PTR(string)->ptr); QDataStream data_stream(byte_array); QVariant variant; data_stream >> variant; QString output; QDebug debug(output); debug << variant; VALUE result = rb_str_new2(output.toUtf8().data); rb_enc_associate_index(string, rb_enc_find_index("UTF-8")); return result; }