#include "pibytearray.h" #include "piiostream.h" #include "pijson.h" #include "pimathbase.h" #include "pip.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(); // piCout << PITime(); // piCout << PITime::fromString("05:12:56"); // piCout << PITime::fromString("05: 12:56"); // piCout << PITime::fromString("05.12:56"); // piCout << PITime::fromString("05.12:56:333", "h.m.s"); // piCout << PIDateTime::fromString(PIDateTime::current().toString("__yyyy_MM_d__hh_mm_ss__"), "__yyyy_MM_d__hh_mm_ss__"); /*piCout << PIVariantTypes::Color(); piCout << PIVariantTypes::Color(0xFF00FFff); PIVariant v = PIVariant::fromType(PIVariant::typeName()); piCout << PIVariant::typeName(); piCout << PIVariant::typeFromName(PIVariant::typeName()); piCout << PIVariant::typeIDFromName(PIVariant::typeName()); piCout << PIVariant::typeIDFromType(PIVariant::pivColor); v.setValueFromString("0xFF00FFff"); piCout << v;*/ // PIVariantTypes::Enum e; // e.enum_name = "MyEnum"; // e << PIVariantTypes::Enumerator(10105, "Null") << PIVariantTypes::Enumerator(20, "Sec") << PIVariantTypes::Enumerator(100, "Fir"); // e.selectValue(20); // piCout << e.toString(); // piCout << PIVariantTypes::Enum::fromString(e.toString()).toString(); // piCout << PIVariantTypes::Enum::fromString("\"MyEnum\"(\"Null\":10105 \"Sec\":20 \"Fir\":100) 20").toString(); { PIScopeExitCall ec([]() { piCout << "exit"; }); ec.cancel(); } piCout << PIVariantTypes::Enum::fromString("(\"DeformationWithTemperature2\":1\n;Sigma1:2\n;Tau:3)").toString(); return 0; }