#include <ruby.h>
#include <ruby/encoding.h>
#include <QByteArray>
#include <QDataStream>
#include <QString>
#include <QDebug>
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;
}