47 lines
1.1 KiB
C++
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;
|
|
}
|