Files
pip/main.cpp
2022-11-28 14:41:12 +03:00

47 lines
1.1 KiB
C++

#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<double>());
//piCout << v;
//piCout << v.toString();
//v.setValueFromString("2E-3");
//piCout << v.value<double>();
//piCout << v.toString();
return 0;
}