#include "pip.h" #include "piiostream.h" #include "pibytearray.h" #include "pimathbase.h" #include "pijson.h" #include "pivaluetree.h" using namespace PICoutManipulators; struct SomeType { int i; float f; }; PICout operator <<(PICout c, const SomeType & v) { c << "SomeType(" << v.i << "," << v.f << ")"; return c; } REGISTER_VARIANT(SomeType); REGISTER_VARIANT_CAST(SomeType, PIString) { return PIString::fromNumber(v.i) + ";" + PIString::fromNumber(v.f); } REGISTER_VARIANT_CAST(PIString, SomeType) { PIStringList sl = v.split(';').resize(2); return SomeType{sl[0].toInt(), sl[1].toFloat()}; } int main(int argc, char * argv[]) { PIValueTree root; root.addChild({"bool", PIVariant(false)}); root.addChild({"integer", PIVariant(256)}); root.addChild({"string", PIVariant("str")}); for (auto it: root.children()) { piCout << it.name() << it.value(); } piCout << piSerialize(root); //PIVariant v = PIVariant::fromType(PIVariant::typeID()); //piCout << v; //piCout << v.toString(); //v.setValueFromString("2E-3"); //piCout << v.value(); //piCout << v.toString(); return 0; }