bool getAt(unsigned int idx, double* val);
bool getAt(unsigned int idx, std::string* val);
- GVariant* toGVariant();
+ static Tuple* duplicate(Tuple& tuple);
- static GVariant* toGVariant(Tuple& tuple);
+ static GVariant* toGVariant(Tuple* tuple);
static GVariant* toGVariant(std::vector<Tuple*>& tuples);
+
static std::vector<Tuple*> buildFrom(GVariant* gVar);
private:
return true;
}
-GVariant* Tuple::toGVariant()
+Tuple* Tuple::duplicate(Tuple& tuple)
{
- return toGVariant(*this);
+ gchar* printed = g_variant_print(tuple.__gVar, TRUE);
+ GVariant* gv = g_variant_parse(NULL, printed, NULL, NULL, NULL);
+ g_free(printed);
+ return new(std::nothrow) Tuple(gv);
}
-GVariant* Tuple::toGVariant(Tuple& tuple)
+
+GVariant* Tuple::toGVariant(Tuple* tuple)
{
- GVariant* gv = tuple.__gVar;
- tuple.__gVar = NULL;
+ GVariant* gv = tuple->__gVar;
+ tuple->__gVar = NULL;
+ delete tuple;
return gv;
}
g_variant_builder_init(&builder, G_VARIANT_TYPE_ARRAY);
for (auto& tuple : tuples) {
- g_variant_builder_add_value(&builder, toGVariant(*tuple));
- delete tuple;
+ g_variant_builder_add_value(&builder, toGVariant(tuple));
}
tuples.clear();