#include "pip.h" //! [0] enum Header { hInt = 1, hString, hVoid }; class MyObj : public PIObject , public PIParseHelper { PIOBJECT(MyObj); public: MyObj(): PIParseHelper(this) { // Keys with 1 argument assign(hInt, std::function([this](int i) { piCout << "lambda type Int" << i; })); assign(hInt, HANDLER(methodI)); assign(hString, HANDLER(methodS)); // hVoid key, without arguments assign(hVoid, []() { piCout << "type void"; }); assign(hVoid, HANDLER(method)); } EVENT_HANDLER1(void, methodI, int, i) { piCout << "methodI" << i; } EVENT_HANDLER1(void, methodS, PIString, s) { piCout << "methodS" << s; } EVENT_HANDLER0(void, method) { piCout << "method"; } }; int main() { MyObj o; PIByteArray data; data.clear(); data << 11; o.parse(hInt, data); // lambda type Int 11 // methodI 11 data.clear(); data << PIString("text"); o.parse(hString, data); // methodS text data.clear(); o.parse(hVoid, data); // type void // method } //! [0] //! [1] enum Header { hInt = 1, hString, hVoid }; class MyObj: public PIObject { PIOBJECT(MyObj); public: EVENT_HANDLER1(void, methodI, int, i) { piCout << "methodI" << i; } EVENT_HANDLER1(void, methodS, PIString, s) { piCout << "methodS" << s; } EVENT_HANDLER0(void, method) { piCout << "method"; } }; int main() { MyObj obj; PIParseHelper parser(&obj); parser.assign(hInt, obj.HANDLER(methodI)); parser.assign(hString, obj.HANDLER(methodS)); parser.assign(hVoid, obj.HANDLER(method)); PIByteArray data; data.clear(); data << 11; parser.parse(hInt, data); // methodI 11 data.clear(); data << PIString("text"); parser.parse(hString, data); // methodS text data.clear(); parser.parse(hVoid, data); // method } //! [1]