|
|
@@ -15,6 +15,8 @@
|
|
|
#include "cClassA.h"
|
|
|
|
|
|
|
|
|
+typedef std::pair<myData*, myOtherData*> pair;
|
|
|
+
|
|
|
/***********************************************************************************************************************
|
|
|
* Callback on a c function
|
|
|
*/
|
|
|
@@ -62,32 +64,38 @@ struct Client1
|
|
|
{
|
|
|
static uint8_t func0(myData v)
|
|
|
{
|
|
|
- printf("static Client0::func %d\n", v.myAge);
|
|
|
+ printf("static Client0::func0 %d\n", v.myAge);
|
|
|
return 3;
|
|
|
}
|
|
|
static uint8_t func1(myData& v, myData& w)
|
|
|
{
|
|
|
- printf("static Client1::func2 %d\n", v.myAge);
|
|
|
- printf("static Client1::func2 %d\n", w.myAge);
|
|
|
+ printf("static Client1::func1 %d\n", v.myAge);
|
|
|
+ printf("static Client1::func1 %d\n", w.myAge);
|
|
|
return 3;
|
|
|
}
|
|
|
- static uint8_t func2(std::pair<myData*, myOtherData*> &p) {
|
|
|
- myData* v = p.first;
|
|
|
- myOtherData* w = p.second;
|
|
|
+ static uint8_t func2(pair *p) {
|
|
|
+ myData* v = p->first;
|
|
|
+ myOtherData* w = p->second;
|
|
|
+
|
|
|
+ printf("static Client1::func2 %d\n", v->myAge);
|
|
|
+ printf("static Client1::func2 %d\n", w->myAge);
|
|
|
return 4;
|
|
|
};
|
|
|
};
|
|
|
|
|
|
|
|
|
+auto lambda = [](myData v) { std::cout << "Lambda: " << v.myAge * 2 << std::endl; return 0; };
|
|
|
+
|
|
|
+
|
|
|
class Button {
|
|
|
|
|
|
public:
|
|
|
|
|
|
cCallbackHdl cbHdl;
|
|
|
|
|
|
- myData mydata;
|
|
|
+ myData mydata{ 24, "myData struct", myData::FEMALE };
|
|
|
|
|
|
- myOtherData myOtherdata; // { 34, "myOtherdata struct", myOtherData::FEMALE };
|
|
|
+ myOtherData myOtherdata { 34, "myOtherdata struct", myOtherData::FEMALE };
|
|
|
|
|
|
/*************************************************************************************
|
|
|
*
|
|
|
@@ -97,7 +105,6 @@ public:
|
|
|
* https://en.cppreference.com/w/cpp/language/lambda
|
|
|
* https://stackoverflow.com/questions/6458612/c0x-proper-way-to-receive-a-lambda-as-parameter-by-reference
|
|
|
*/
|
|
|
- const auto lambda = [](myData v) { std::cout << "Lambda: " << v.myAge * 2 << std::endl; return 0; };
|
|
|
|
|
|
int x = (lambda)(mydata);
|
|
|
|
|
|
@@ -105,37 +112,14 @@ public:
|
|
|
*
|
|
|
*/
|
|
|
|
|
|
- auto p1 = std::make_pair(&mydata, &myOtherdata);
|
|
|
- auto res = Client1::func2(p1);
|
|
|
-
|
|
|
- auto resmap = cbHdl.register_callmap(CALLBACK_TYPE::A, [](myData mydata) {
|
|
|
- printf("lambda callback: %d\n", mydata.myAge);
|
|
|
- return 2;
|
|
|
- });
|
|
|
-
|
|
|
- resmap = cbHdl.register_callmap(CALLBACK_TYPE::B, &c_client_callback);
|
|
|
- resmap = cbHdl.register_callmap(CALLBACK_TYPE::C, &Client1::func0);
|
|
|
-
|
|
|
- resmap = cbHdl.register_call_2map(CALLBACK_TYPE::B, &Client1::func1);
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-#if 0
|
|
|
-
|
|
|
- /*
|
|
|
- *
|
|
|
- */
|
|
|
- resmap = cbHdl.register_call_2map(CALLBACK_TYPE::A, [](myData mydata) {
|
|
|
+ auto resmap = cbHdl.CallBack_register(CALLBACK_TYPE::A, [](myData mydata) {
|
|
|
printf("lambda callback: %d\n", mydata.myAge);
|
|
|
return 2;
|
|
|
});
|
|
|
- // cbHdl.call_call_2map(CALLBACK_TYPE::A, mydata, mydata);
|
|
|
|
|
|
-
|
|
|
- // resmap = cbHdl.register_call_map(CALLBACK_TYPE::C, &Client1::func1);
|
|
|
- // cbHdl.call_map_(CALLBACK_TYPE::B, mydata);
|
|
|
-#endif
|
|
|
+ resmap = cbHdl.CallBack_register(CALLBACK_TYPE::B, &c_client_callback);
|
|
|
+ resmap = cbHdl.CallBack_register(CALLBACK_TYPE::C, &Client1::func0);
|
|
|
+ resmap = cbHdl.CallBack_register(CALLBACK_TYPE::D, lambda);
|
|
|
}
|
|
|
|
|
|
/**********************************************************************************************/
|
|
|
@@ -143,16 +127,10 @@ public:
|
|
|
void run() {
|
|
|
std::cout << " run ..." << std::endl;
|
|
|
|
|
|
- uint8_t x = cbHdl.call_callmap(CALLBACK_TYPE::A, mydata);
|
|
|
- x = cbHdl.call_callmap(CALLBACK_TYPE::B, mydata);
|
|
|
- x = cbHdl.call_callmap(CALLBACK_TYPE::C, mydata);
|
|
|
-
|
|
|
- cbHdl.call_call_2map(CALLBACK_TYPE::B, mydata, mydata);
|
|
|
-
|
|
|
- // uint8_t x = cbHdl.call(cCallbackHdl::en_event::A, mydata);
|
|
|
- // x = cbHdl.call(cCallbackHdl::en_event::B, myOtherdata);
|
|
|
- // x = cbHdl.call(cCallbackHdl::en_event::C, myOtherdata, mydata);
|
|
|
- // x = cbHdl.call(cCallbackHdl::en_event::D, myOtherdata, mydata);
|
|
|
+ uint8_t x = cbHdl.CallBack_call(CALLBACK_TYPE::A, mydata);
|
|
|
+ x = cbHdl.CallBack_call(CALLBACK_TYPE::B, mydata);
|
|
|
+ x = cbHdl.CallBack_call(CALLBACK_TYPE::C, mydata);
|
|
|
+ x = cbHdl.CallBack_call(CALLBACK_TYPE::D, mydata);
|
|
|
}
|
|
|
};
|
|
|
|