Browse Source

Update Callback_27

sfxsfl 3 years ago
parent
commit
3dabe6c2c7

BIN
Callback_27/.vs/Callback_27/v17/.suo


BIN
Callback_27/.vs/Callback_27/v17/Browse.VC.db


BIN
Callback_27/.vs/Callback_27/v17/ipch/AutoPCH/8c6870e20d909d19/CALLBACK_27.ipch


BIN
Callback_27/.vs/Callback_27/v17/ipch/AutoPCH/c2b6e6b2c8c70818/CCLASSA.ipch


+ 24 - 46
Callback_27/Callback_27/Callback_27.cpp

@@ -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);
 	}
 };
 

+ 6 - 3
Callback_27/Callback_27/cCallbackHdl.h

@@ -4,6 +4,7 @@
 #include <vector>
 #include <functional>
 #include <map>
+#include <unordered_map>
 
 #include "cDataStruct.h"
 
@@ -13,13 +14,15 @@
 
 enum class CALLBACK_TYPE { A, B, C, D };
 
+
 class cCallbackHdl {
 
 public:
+
 	cCallbackHdl() {};
 
 	template <class T>
-	uint8_t register_callmap(const CALLBACK_TYPE type, const T& cb)
+	uint8_t CallBack_register(const CALLBACK_TYPE type, const T& cb)
 	{
 		// add callback to end of callback list
 		callmap.insert(std::make_pair(type, std::move(cb)));
@@ -28,7 +31,7 @@ public:
 
 	/// Call all the registered callbacks.
 	template <class T>
-	uint8_t call_callmap(const CALLBACK_TYPE type, T& val) const
+	uint8_t CallBack_call(const CALLBACK_TYPE type, T& val) const
 	{
 		if (callmap.find(type) == callmap.end()) {
 			// std::cout << "Index not found: " << index << std::endl;
@@ -66,6 +69,6 @@ private:
 
 	// The map that stores the callbacks.
 	std::map<CALLBACK_TYPE, std::function<uint8_t(myData&)>> callmap;
-
 	std::map<CALLBACK_TYPE, std::function<uint8_t(myData&, myData&)>> call_map;
+
 };

BIN
Callback_27/Callback_27/x64/Debug/Callback_27.ilk


+ 1 - 1
Callback_27/Callback_27/x64/Debug/Callback_27.log

@@ -1,3 +1,3 @@
   Callback_27.cpp
-C:\Users\wruser\source\repos\Callback_27\Callback_27\Callback_27.cpp(173,9): warning C4101: "mostData": Unreferenzierte lokale Variable
+C:\Users\wruser\source\repos\Callback_27\Callback_27\Callback_27.cpp(151,9): warning C4101: "mostData": Unreferenzierte lokale Variable
   Callback_27.vcxproj -> C:\Users\wruser\source\repos\Callback_27\x64\Debug\Callback_27.exe

BIN
Callback_27/Callback_27/x64/Debug/Callback_27.obj


BIN
Callback_27/Callback_27/x64/Debug/Callback_27.tlog/CL.read.1.tlog


BIN
Callback_27/Callback_27/x64/Debug/Callback_27.tlog/CL.write.1.tlog


BIN
Callback_27/Callback_27/x64/Debug/cClassA.obj


BIN
Callback_27/Callback_27/x64/Debug/vc143.idb


BIN
Callback_27/Callback_27/x64/Debug/vc143.pdb


BIN
Callback_27/x64/Debug/Callback_27.exe


BIN
Callback_27/x64/Debug/Callback_27.pdb