sfxsfl před 3 roky
rodič
revize
06ff61310c
100 změnil soubory, kde provedl 621 přidání a 122 odebrání
  1. binární
      Callback_04/.vs/Callback_04/FileContentIndex/eac72908-1579-400f-9a31-811204e40152.vsidx
  2. 0 0
      Callback_04/.vs/Callback_04/FileContentIndex/read.lock
  3. binární
      Callback_04/.vs/Callback_04/v17/.suo
  4. binární
      Callback_04/.vs/Callback_04/v17/Browse.VC.db
  5. binární
      Callback_04/.vs/Callback_04/v17/ipch/AutoPCH/9a1d38d78125c222/CALLBACK_04.ipch
  6. 4 4
      Callback_04/Callback_04.vcxproj
  7. binární
      Callback_04/Debug/Callback_04.exe
  8. binární
      Callback_04/Debug/Callback_04.ilk
  9. 1 2
      Callback_04/Debug/Callback_04.log
  10. binární
      Callback_04/Debug/Callback_04.obj
  11. binární
      Callback_04/Debug/Callback_04.pdb
  12. binární
      Callback_04/Debug/Callback_04.tlog/CL.command.1.tlog
  13. binární
      Callback_04/Debug/Callback_04.tlog/CL.read.1.tlog
  14. binární
      Callback_04/Debug/Callback_04.tlog/CL.write.1.tlog
  15. 1 1
      Callback_04/Debug/Callback_04.tlog/Callback_04.lastbuildstate
  16. binární
      Callback_04/Debug/Callback_04.tlog/link.read.1.tlog
  17. binární
      Callback_04/Debug/vc143.idb
  18. binární
      Callback_04/Debug/vc143.pdb
  19. binární
      Callback_05/.vs/Callback_05/FileContentIndex/7a5989f3-23c7-4d5e-ab2f-85e95eb7a8b3.vsidx
  20. 0 0
      Callback_05/.vs/Callback_05/FileContentIndex/read.lock
  21. binární
      Callback_05/.vs/Callback_05/v17/.suo
  22. binární
      Callback_05/.vs/Callback_05/v17/Browse.VC.db
  23. binární
      Callback_05/.vs/Callback_05/v17/ipch/AutoPCH/bf28b2616ecf1062/CALLBACK_05.ipch
  24. 31 77
      Callback_05/Callback_05.cpp
  25. 4 4
      Callback_05/Callback_05.vcxproj
  26. binární
      Callback_05/Debug/Callback_05.exe
  27. binární
      Callback_05/Debug/Callback_05.ilk
  28. 3 1
      Callback_05/Debug/Callback_05.log
  29. binární
      Callback_05/Debug/Callback_05.obj
  30. binární
      Callback_05/Debug/Callback_05.pdb
  31. binární
      Callback_05/Debug/Callback_05.tlog/CL.command.1.tlog
  32. binární
      Callback_05/Debug/Callback_05.tlog/CL.read.1.tlog
  33. binární
      Callback_05/Debug/Callback_05.tlog/CL.write.1.tlog
  34. 1 1
      Callback_05/Debug/Callback_05.tlog/Callback_05.lastbuildstate
  35. binární
      Callback_05/Debug/Callback_05.tlog/link.read.1.tlog
  36. binární
      Callback_05/Debug/Callback_05.tlog/link.write.1.tlog
  37. 0 0
      Callback_05/Debug/Callback_05.tlog/unsuccessfulbuild
  38. binární
      Callback_05/Debug/vc143.idb
  39. binární
      Callback_05/Debug/vc143.pdb
  40. binární
      Callback_27/.vs/Callback_27/v17/.suo
  41. binární
      Callback_27/.vs/Callback_27/v17/Browse.VC.db
  42. binární
      Callback_27/.vs/Callback_27/v17/ipch/AutoPCH/8c6870e20d909d19/CALLBACK_27.ipch
  43. binární
      Callback_27/.vs/Callback_27/v17/ipch/AutoPCH/c2b6e6b2c8c70818/CCLASSA.ipch
  44. 9 2
      Callback_27/Callback_27/Callback_27.cpp
  45. 2 27
      Callback_27/Callback_27/cCallbackHdl.h
  46. 1 1
      Callback_27/Callback_27/cClassA.cpp
  47. 12 0
      Callback_27/Callback_27/x64/Debug/Callback_27.Build.CppClean.log
  48. binární
      Callback_27/Callback_27/x64/Debug/Callback_27.ilk
  49. 35 2
      Callback_27/Callback_27/x64/Debug/Callback_27.log
  50. binární
      Callback_27/Callback_27/x64/Debug/Callback_27.obj
  51. binární
      Callback_27/Callback_27/x64/Debug/Callback_27.tlog/CL.command.1.tlog
  52. binární
      Callback_27/Callback_27/x64/Debug/Callback_27.tlog/CL.write.1.tlog
  53. 0 0
      Callback_27/Callback_27/x64/Debug/Callback_27.tlog/unsuccessfulbuild
  54. 0 0
      Callback_27/Callback_27/x64/Debug/Callback_27.vcxproj.FileListAbsolute.txt
  55. binární
      Callback_27/Callback_27/x64/Debug/cClassA.obj
  56. binární
      Callback_27/Callback_27/x64/Debug/callback_27.obj.enc
  57. binární
      Callback_27/Callback_27/x64/Debug/cclassa.obj.enc
  58. binární
      Callback_27/Callback_27/x64/Debug/vc143.idb
  59. binární
      Callback_27/Callback_27/x64/Debug/vc143.pdb
  60. binární
      Callback_27/x64/Debug/Callback_27.exe
  61. binární
      Callback_27/x64/Debug/Callback_27.pdb
  62. binární
      Callback_29/.vs/Callback_29/v17/.suo
  63. binární
      Callback_29/.vs/Callback_29/v17/Browse.VC.db
  64. binární
      Callback_29/.vs/Callback_29/v17/ipch/AutoPCH/3bd7473f42e43275/CALLBACK_29.ipch
  65. binární
      Callback_29/.vs/Callback_29/v17/ipch/AutoPCH/681047ba84fd5ae5/CDATASTRUCT.ipch
  66. binární
      Callback_29/.vs/Callback_29/v17/ipch/AutoPCH/946e9e9706e0dd1d/CCALLBACKHDL.ipch
  67. binární
      Callback_29/.vs/Callback_29/v17/ipch/AutoPCH/d4f9f805cb1e820e/CCLASSA.ipch
  68. 31 0
      Callback_29/Callback_29.sln
  69. 120 0
      Callback_29/Callback_29/Callback_29.cpp
  70. 153 0
      Callback_29/Callback_29/Callback_29.vcxproj
  71. 36 0
      Callback_29/Callback_29/Callback_29.vcxproj.filters
  72. 4 0
      Callback_29/Callback_29/Callback_29.vcxproj.user
  73. 74 0
      Callback_29/Callback_29/cCallbackHdl.h
  74. 4 0
      Callback_29/Callback_29/cClassA.cpp
  75. 7 0
      Callback_29/Callback_29/cClassA.h
  76. 36 0
      Callback_29/Callback_29/cDataStruct.h
  77. 11 0
      Callback_29/Callback_29/x64/Debug/Callback_29.exe.recipe
  78. binární
      Callback_29/Callback_29/x64/Debug/Callback_29.ilk
  79. 8 0
      Callback_29/Callback_29/x64/Debug/Callback_29.log
  80. binární
      Callback_29/Callback_29/x64/Debug/Callback_29.obj
  81. binární
      Callback_29/Callback_29/x64/Debug/Callback_29.tlog/CL.command.1.tlog
  82. binární
      Callback_29/Callback_29/x64/Debug/Callback_29.tlog/CL.read.1.tlog
  83. binární
      Callback_29/Callback_29/x64/Debug/Callback_29.tlog/CL.write.1.tlog
  84. 2 0
      Callback_29/Callback_29/x64/Debug/Callback_29.tlog/Callback_29.lastbuildstate
  85. binární
      Callback_29/Callback_29/x64/Debug/Callback_29.tlog/link.command.1.tlog
  86. binární
      Callback_29/Callback_29/x64/Debug/Callback_29.tlog/link.read.1.tlog
  87. binární
      Callback_29/Callback_29/x64/Debug/Callback_29.tlog/link.write.1.tlog
  88. binární
      Callback_29/Callback_29/x64/Debug/cClassA.obj
  89. binární
      Callback_29/Callback_29/x64/Debug/vc143.idb
  90. binární
      Callback_29/Callback_29/x64/Debug/vc143.pdb
  91. binární
      Callback_29/x64/Debug/Callback_29.exe
  92. binární
      Callback_29/x64/Debug/Callback_29.pdb
  93. binární
      Callback_30/.vs/Callback_30/FileContentIndex/595bc602-fb3a-44ab-8f13-8659c4be72c4.vsidx
  94. 0 0
      Callback_30/.vs/Callback_30/FileContentIndex/read.lock
  95. binární
      Callback_30/.vs/Callback_30/v17/.suo
  96. binární
      Callback_30/.vs/Callback_30/v17/Browse.VC.db
  97. binární
      Callback_30/.vs/Callback_30/v17/ipch/AutoPCH/5112b8694dc9197d/CALLBACK_30.ipch
  98. binární
      Callback_30/.vs/Callback_30/v17/ipch/AutoPCH/8b32e653f46c9a77/CDATASTRUCT.ipch
  99. binární
      Callback_30/.vs/Callback_30/v17/ipch/AutoPCH/caf0b6d18079f397/CCALLBACKHDL.ipch
  100. 31 0
      Callback_30/Callback_30.sln

binární
Callback_04/.vs/Callback_04/FileContentIndex/eac72908-1579-400f-9a31-811204e40152.vsidx


+ 0 - 0
Callback_04/.vs/Callback_04/FileContentIndex/read.lock


binární
Callback_04/.vs/Callback_04/v17/.suo


binární
Callback_04/.vs/Callback_04/v17/Browse.VC.db


binární
Callback_04/.vs/Callback_04/v17/ipch/AutoPCH/9a1d38d78125c222/CALLBACK_04.ipch


+ 4 - 4
Callback_04/Callback_04.vcxproj

@@ -29,26 +29,26 @@
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v142</PlatformToolset>
+    <PlatformToolset>v143</PlatformToolset>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v142</PlatformToolset>
+    <PlatformToolset>v143</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v142</PlatformToolset>
+    <PlatformToolset>v143</PlatformToolset>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v142</PlatformToolset>
+    <PlatformToolset>v143</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>

binární
Callback_04/Debug/Callback_04.exe


binární
Callback_04/Debug/Callback_04.ilk


+ 1 - 2
Callback_04/Debug/Callback_04.log

@@ -1,2 +1 @@
-  Callback_04.cpp
-  Callback_04.vcxproj -> C:\Users\wruser\source\repos\Callback_04\Debug\Callback_04.exe
+  Callback_04.vcxproj -> C:\Users\wruser\source\repos\Callback_04\Debug\Callback_04.exe

binární
Callback_04/Debug/Callback_04.obj


binární
Callback_04/Debug/Callback_04.pdb


binární
Callback_04/Debug/Callback_04.tlog/CL.command.1.tlog


binární
Callback_04/Debug/Callback_04.tlog/CL.read.1.tlog


binární
Callback_04/Debug/Callback_04.tlog/CL.write.1.tlog


+ 1 - 1
Callback_04/Debug/Callback_04.tlog/Callback_04.lastbuildstate

@@ -1,2 +1,2 @@
-PlatformToolSet=v142:VCToolArchitecture=Native32Bit:VCToolsVersion=14.29.30133:VCServicingVersionMFC=14.29.30136:VCServicingVersionCrtHeaders=14.29.30136:TargetPlatformVersion=10.0.17763.0:
+PlatformToolSet=v143:VCToolArchitecture=Native32Bit:VCToolsVersion=14.32.31326:TargetPlatformVersion=10.0.19041.0:
 Debug|Win32|C:\Users\wruser\source\repos\Callback_04\|

binární
Callback_04/Debug/Callback_04.tlog/link.read.1.tlog


binární
Callback_04/Debug/vc143.idb


binární
Callback_04/Debug/vc143.pdb


binární
Callback_05/.vs/Callback_05/FileContentIndex/7a5989f3-23c7-4d5e-ab2f-85e95eb7a8b3.vsidx


+ 0 - 0
Callback_05/.vs/Callback_05/FileContentIndex/read.lock


binární
Callback_05/.vs/Callback_05/v17/.suo


binární
Callback_05/.vs/Callback_05/v17/Browse.VC.db


binární
Callback_05/.vs/Callback_05/v17/ipch/AutoPCH/bf28b2616ecf1062/CALLBACK_05.ipch


+ 31 - 77
Callback_05/Callback_05.cpp

@@ -4,49 +4,20 @@
 using std::cout;
 using std::endl;
 
-class EventHandler
-{
-public:
-/*
-    template<typename T>
-    void addHandler(T* owner)
-    {
-        cout << "Handler added..." << endl;
-        //Let's pretend an event just occured
-        owner->Callback(owner, 1);
-    }
-*/
-    void addHandler(std::function<void(int)> callback)
-    {
-        cout << "Handler added..." << endl;
-        // Let's pretend an event just occured
-        callback(1);
-    }
-
-};
-
-EventHandler* handler;
 
 /**********************************************************************************************
  *
  */
-
 class MyClass
 {
 public:
     MyClass() {
-        using namespace std::placeholders;
 
         private_x = 5;
-        // handler->addHandler(this);
-        handler->addHandler(std::bind(&MyClass::Callback, this, _1));
-    }
-
-    void Callback(int x) {
-        cout << x + private_x << endl;
-    }
+    };
     
     int public_x = 12;
+
 private:
     int private_x;
 };
@@ -54,21 +25,12 @@ private:
 /**********************************************************************************************
  *
  */
-
 class YourClass
 {
 public:
     YourClass()
     {
-        using namespace std::placeholders;
-
         private_y = 8;
-        handler->addHandler(std::bind(&YourClass::Callback, this, _1));
-    }
-
-    void Callback(int x) 
-    {
-        cout << x + private_y << endl;
     }
 
 private:
@@ -78,57 +40,49 @@ private:
 /**********************************************************************************************
  * 
  */
+void g(MyClass * a1, YourClass* a2) {
 
-void freeStandingCallback(int x)
-{
-    cout << x << endl;
+    printf("access both classes\n"); 
+    printf("MyClass: %d\n", a1->public_x);
+    printf("YourClass: private\n");
 }
 
 /**********************************************************************************************
  *
  */
+class EventHandler
+{
+public:
 
-// https://en.cppreference.com/w/cpp/language/function_template
-
-template<class X>
-void f(X a) {
-    printf("Test");
-}
-
-template<class X>
-void f(X* a) {
-    printf("Test");
-}
-
-void (*p)(int*) = &f;
-
-// https://en.cppreference.com/w/cpp/language/function_template
-
-// template<class T1, class T2>
-void g(MyClass* a1, YourClass* a2) {
-
-    printf("access both classes\n"); 
-    printf("MyClass: %d\n", a1->public_x);
-    printf("YourClass: private\n");
-}
+    std::function<void(MyClass*, YourClass*)> cb = nullptr; 
 
+    template<class T1, class T2>
+    void addHandler(std::function<void(T1*, T2*)> callback)
+    {
+        cout << "Handler added..." << endl;
+        cb = callback; 
+    }
 
+    template<class T1, class T2>
+    void call_cb(T1* myCl, T2* yourCl) {
+        if(cb != nullptr)
+          (cb)(myCl, yourCl);
+    }
+};
 
+/**********************************************************************************************
+ *
+ */
 int main(int argc, char** argv)
 {
-    handler = new EventHandler();
     MyClass* myClass = new MyClass();
     YourClass* yourClass = new YourClass();
+    EventHandler* handler = new EventHandler();
 
-    handler->addHandler([](int x) { 
-        std::cout << "x is " << x << '\n'; 
-        });
-
-    handler->addHandler(freeStandingCallback);
-
-    f(myClass->public_x);
-
-    g(myClass, yourClass);
-
+    /*
+     *  Here is the compiler error
+     */
+    handler->addHandler(g);
+    handler->call_cb(myClass, yourClass); 
 }
 

+ 4 - 4
Callback_05/Callback_05.vcxproj

@@ -29,26 +29,26 @@
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v142</PlatformToolset>
+    <PlatformToolset>v143</PlatformToolset>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v142</PlatformToolset>
+    <PlatformToolset>v143</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v142</PlatformToolset>
+    <PlatformToolset>v143</PlatformToolset>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v142</PlatformToolset>
+    <PlatformToolset>v143</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>

binární
Callback_05/Debug/Callback_05.exe


binární
Callback_05/Debug/Callback_05.ilk


+ 3 - 1
Callback_05/Debug/Callback_05.log

@@ -1,2 +1,4 @@
   Callback_05.cpp
-  Callback_05.vcxproj -> C:\Users\wruser\source\repos\Callback_05\Debug\Callback_05.exe
+C:\Users\wruser\source\repos\Callback_05\Callback_05.cpp(85,12): error C2672: "EventHandler::addHandler": keine übereinstimmende überladene Funktion gefunden
+C:\Users\wruser\source\repos\Callback_05\Callback_05.cpp(85,26): error C2784: „void EventHandler::addHandler(std::function<void(T1 *,T2 *)>)“: Das Vorlage-Argument für „std::function<void(T1 *,T2 *)>“ konnte nicht von „void (MyClass *,YourClass *)“ abgeleitet werden.
+C:\Users\wruser\source\repos\Callback_05\Callback_05.cpp(60): message : Siehe Deklaration von "EventHandler::addHandler"

binární
Callback_05/Debug/Callback_05.obj


binární
Callback_05/Debug/Callback_05.pdb


binární
Callback_05/Debug/Callback_05.tlog/CL.command.1.tlog


binární
Callback_05/Debug/Callback_05.tlog/CL.read.1.tlog


binární
Callback_05/Debug/Callback_05.tlog/CL.write.1.tlog


+ 1 - 1
Callback_05/Debug/Callback_05.tlog/Callback_05.lastbuildstate

@@ -1,2 +1,2 @@
-PlatformToolSet=v142:VCToolArchitecture=Native32Bit:VCToolsVersion=14.29.30133:VCServicingVersionMFC=14.29.30136:VCServicingVersionCrtHeaders=14.29.30136:TargetPlatformVersion=10.0.17763.0:
+PlatformToolSet=v143:VCToolArchitecture=Native32Bit:VCToolsVersion=14.32.31326:TargetPlatformVersion=10.0.19041.0:
 Debug|Win32|C:\Users\wruser\source\repos\Callback_05\|

binární
Callback_05/Debug/Callback_05.tlog/link.read.1.tlog


binární
Callback_05/Debug/Callback_05.tlog/link.write.1.tlog


+ 0 - 0
Callback_05/Debug/Callback_05.tlog/unsuccessfulbuild


binární
Callback_05/Debug/vc143.idb


binární
Callback_05/Debug/vc143.pdb


binární
Callback_27/.vs/Callback_27/v17/.suo


binární
Callback_27/.vs/Callback_27/v17/Browse.VC.db


binární
Callback_27/.vs/Callback_27/v17/ipch/AutoPCH/8c6870e20d909d19/CALLBACK_27.ipch


binární
Callback_27/.vs/Callback_27/v17/ipch/AutoPCH/c2b6e6b2c8c70818/CCLASSA.ipch


+ 9 - 2
Callback_27/Callback_27/Callback_27.cpp

@@ -84,8 +84,15 @@ struct Client1
 };
 
 
-auto lambda = [](myData v) { std::cout << "Lambda: " << v.myAge * 2 << std::endl; return 0; };
-auto lambda2 = [](void* v, void* w) { std::cout << "Lambda: " << std::endl; return 0; };
+auto lambda = [&](myData v) { 
+	std::cout << "Lambda: " << v.myAge * 2 << std::endl; 
+	return 0; 
+};
+
+auto lambda2 = [&](void* v, void* w) { 
+	std::cout << "Lambda: " << std::endl; 
+	return 0; 
+};
 
 class Button {
 

+ 2 - 27
Callback_27/Callback_27/cCallbackHdl.h

@@ -52,7 +52,6 @@ public:
 	}
 
 	/// Call all the registered callbacks.
-	// template <class T>
 	uint8_t CallBack_V_call(const CALLBACK_TYPE type, void* val, void* xal) const
 	{
 		if (m_call_map.find(type) == m_call_map.end()) {
@@ -61,36 +60,12 @@ public:
 		}
 
 		const auto& cb = m_call_map.find(type)->second;
-		return (cb)(val,xal);
-		// return 0; 
-	}
-
-
-#if 0
-	template <class T>
-	uint8_t register_call_2map(const CALLBACK_TYPE type, const T& cb)
-	{
-		// add callback to end of callback list
-		call_map.insert(std::make_pair(type, std::move(cb)));
-		return 0;
+		return (cb)(val, xal);
 	}
 
-	/// Call all the registered callbacks.
-	template <class T> // , class... Args>
-	uint8_t call_call_2map(const CALLBACK_TYPE type, T& val, T& xal) const // Args&&... args
-	{
-		if (call_map.find(type) == call_map.end()) {
-			// std::cout << "Index not found: " << index << std::endl;
-			return 1;
-		}
 
-		const auto& cb = call_map.find(type)->second;
-		return (cb)(val,xal);
-		// return 0;
-	}
-#endif
 
-// private:
+private:
 
 	// The map that stores the callbacks.
 	std::map<CALLBACK_TYPE, std::function<uint8_t(myData&)>> callmap;

+ 1 - 1
Callback_27/Callback_27/cClassA.cpp

@@ -1,6 +1,6 @@
 #include "cClassA.h"
 #include "cCallbackHdl.h"
-#include "cDataStruct.h"
+#include "cDataStruct.h" 
 
 /***********************************************************************************************************************
  *    Callback on a c function

+ 12 - 0
Callback_27/Callback_27/x64/Debug/Callback_27.Build.CppClean.log

@@ -0,0 +1,12 @@
+c:\users\wruser\source\repos\callback_27\x64\debug\callback_27.exe
+c:\users\wruser\source\repos\callback_27\callback_27\x64\debug\callback_27.ilk
+c:\users\wruser\source\repos\callback_27\x64\debug\callback_27.pdb
+c:\users\wruser\source\repos\callback_27\callback_27\x64\debug\callback_27.obj
+c:\users\wruser\source\repos\callback_27\callback_27\x64\debug\callback_27.obj.enc
+c:\users\wruser\source\repos\callback_27\callback_27\x64\debug\cclassa.obj.enc
+c:\users\wruser\source\repos\callback_27\callback_27\x64\debug\vc143.idb
+c:\users\wruser\source\repos\callback_27\callback_27\x64\debug\vc143.pdb
+c:\users\wruser\source\repos\callback_27\callback_27\x64\debug\callback_27.tlog\cl.command.1.tlog
+c:\users\wruser\source\repos\callback_27\callback_27\x64\debug\callback_27.tlog\link.command.1.tlog
+c:\users\wruser\source\repos\callback_27\callback_27\x64\debug\callback_27.tlog\link.read.1.tlog
+c:\users\wruser\source\repos\callback_27\callback_27\x64\debug\callback_27.tlog\link.write.1.tlog

binární
Callback_27/Callback_27/x64/Debug/Callback_27.ilk


+ 35 - 2
Callback_27/Callback_27/x64/Debug/Callback_27.log

@@ -1,3 +1,36 @@
   Callback_27.cpp
-C:\Users\wruser\source\repos\Callback_27\Callback_27\Callback_27.cpp(158,9): warning C4101: "mostData": Unreferenzierte lokale Variable
-  Callback_27.vcxproj -> C:\Users\wruser\source\repos\Callback_27\x64\Debug\Callback_27.exe
+C:\Users\wruser\source\repos\Callback_27\Callback_27\cCallbackHdl.h(63,17): error C2061: Syntaxfehler: Bezeichner "cb"
+C:\Users\wruser\source\repos\Callback_27\Callback_27\cCallbackHdl.h(63,1): error C3260: "(": Unerwartete Token vor Text der Lambdafunktion werden übersprungen.
+C:\Users\wruser\source\repos\Callback_27\Callback_27\cClassA.h(10,1): error C2059: Syntaxfehler: "public"
+C:\Users\wruser\source\repos\Callback_27\Callback_27\cClassA.h(19,2): error C2440: "return": "cCallbackHdl::CallBack_V_call::<lambda_114899ed3376bbdf9097759ff5da0dbf>" kann nicht in "uint8_t" konvertiert werden
+C:\Users\wruser\source\repos\Callback_27\Callback_27\cClassA.h(19,1): message : Kein benutzerdefinierter Konvertierungsoperator verfügbar, der diese Konvertierung durchführen kann, oder der Operator kann nicht aufgerufen werden
+C:\Users\wruser\source\repos\Callback_27\Callback_27\Callback_27.cpp(24,1): error C2598: Bindungsinformationen müssen einen globalen Gültigkeitsbereich haben
+C:\Users\wruser\source\repos\Callback_27\Callback_27\Callback_27.cpp(25,17): error C2267: "c_client_callback": Statische Funktionen mit Blockgültigkeit sind unzulässig
+C:\Users\wruser\source\repos\Callback_27\Callback_27\Callback_27.cpp(25,17): error C2601: "c_client_callback": Lokale Funktionsdefinitionen sind unzulässig
+C:\Users\wruser\source\repos\Callback_27\Callback_27\Callback_27.cpp(24): message : Diese Zeile enthält eine "{", die keine Entsprechung hat.
+C:\Users\wruser\source\repos\Callback_27\Callback_27\Callback_27.cpp(38,1): error C2598: Bindungsinformationen müssen einen globalen Gültigkeitsbereich haben
+C:\Users\wruser\source\repos\Callback_27\Callback_27\Callback_27.cpp(39,17): error C2267: "c_client2_callback": Statische Funktionen mit Blockgültigkeit sind unzulässig
+C:\Users\wruser\source\repos\Callback_27\Callback_27\Callback_27.cpp(39,17): error C2601: "c_client2_callback": Lokale Funktionsdefinitionen sind unzulässig
+C:\Users\wruser\source\repos\Callback_27\Callback_27\Callback_27.cpp(38): message : Diese Zeile enthält eine "{", die keine Entsprechung hat.
+C:\Users\wruser\source\repos\Callback_27\Callback_27\Callback_27.cpp(48,1): error C2598: Bindungsinformationen müssen einen globalen Gültigkeitsbereich haben
+C:\Users\wruser\source\repos\Callback_27\Callback_27\Callback_27.cpp(49,17): error C2267: "c_client3_callback": Statische Funktionen mit Blockgültigkeit sind unzulässig
+C:\Users\wruser\source\repos\Callback_27\Callback_27\Callback_27.cpp(49,17): error C2601: "c_client3_callback": Lokale Funktionsdefinitionen sind unzulässig
+C:\Users\wruser\source\repos\Callback_27\Callback_27\Callback_27.cpp(48): message : Diese Zeile enthält eine "{", die keine Entsprechung hat.
+C:\Users\wruser\source\repos\Callback_27\Callback_27\Callback_27.cpp(129,54): error C2326: "void cCallbackHdl::CallBack_V_call::Button::init(void)": Funktion kann nicht auf "lambda" zugreifen
+C:\Users\wruser\source\repos\Callback_27\Callback_27\Callback_27.cpp(131,56): error C2326: "void cCallbackHdl::CallBack_V_call::Button::init(void)": Funktion kann nicht auf "lambda2" zugreifen
+C:\Users\wruser\source\repos\Callback_27\Callback_27\Callback_27.cpp(154,5): error C2601: "main": Lokale Funktionsdefinitionen sind unzulässig
+C:\Users\wruser\source\repos\Callback_27\Callback_27\Callback_27.cpp(180,1): fatal error C1004: Unerwartetes Dateiende gefunden.
+  cClassA.cpp
+C:\Users\wruser\source\repos\Callback_27\Callback_27\cCallbackHdl.h(63,17): error C2061: Syntaxfehler: Bezeichner "cb"
+C:\Users\wruser\source\repos\Callback_27\Callback_27\cCallbackHdl.h(63,1): error C3260: "(": Unerwartete Token vor Text der Lambdafunktion werden übersprungen.
+C:\Users\wruser\source\repos\Callback_27\Callback_27\cClassA.h(10,1): error C2059: Syntaxfehler: "public"
+C:\Users\wruser\source\repos\Callback_27\Callback_27\cClassA.h(19,2): error C2440: "return": "cCallbackHdl::CallBack_V_call::<lambda_114899ed3376bbdf9097759ff5da0dbf>" kann nicht in "uint8_t" konvertiert werden
+C:\Users\wruser\source\repos\Callback_27\Callback_27\cClassA.h(19,1): message : Kein benutzerdefinierter Konvertierungsoperator verfügbar, der diese Konvertierung durchführen kann, oder der Operator kann nicht aufgerufen werden
+C:\Users\wruser\source\repos\Callback_27\Callback_27\cClassA.cpp(9,17): error C2267: "c_client4_callback": Statische Funktionen mit Blockgültigkeit sind unzulässig
+C:\Users\wruser\source\repos\Callback_27\Callback_27\cClassA.cpp(9,17): error C2601: "c_client4_callback": Lokale Funktionsdefinitionen sind unzulässig
+C:\Users\wruser\source\repos\Callback_27\Callback_27\cClassA.cpp(32,6): error C2653: "A": Keine Klasse oder Namespace
+C:\Users\wruser\source\repos\Callback_27\Callback_27\cClassA.cpp(32,16): error C2601: "init": Lokale Funktionsdefinitionen sind unzulässig
+C:\Users\wruser\source\repos\Callback_27\Callback_27\cClassA.cpp(38,6): error C2653: "A": Keine Klasse oder Namespace
+C:\Users\wruser\source\repos\Callback_27\Callback_27\cClassA.cpp(38,15): error C2601: "run": Lokale Funktionsdefinitionen sind unzulässig
+C:\Users\wruser\source\repos\Callback_27\Callback_27\cClassA.cpp(48,1): fatal error C1004: Unerwartetes Dateiende gefunden.
+  Code wird generiert...

binární
Callback_27/Callback_27/x64/Debug/Callback_27.obj


binární
Callback_27/Callback_27/x64/Debug/Callback_27.tlog/CL.command.1.tlog


binární
Callback_27/Callback_27/x64/Debug/Callback_27.tlog/CL.write.1.tlog


+ 0 - 0
Callback_27/Callback_27/x64/Debug/Callback_27.tlog/unsuccessfulbuild


+ 0 - 0
Callback_27/Callback_27/x64/Debug/Callback_27.vcxproj.FileListAbsolute.txt


binární
Callback_27/Callback_27/x64/Debug/cClassA.obj


binární
Callback_27/Callback_27/x64/Debug/callback_27.obj.enc


binární
Callback_27/Callback_27/x64/Debug/cclassa.obj.enc


binární
Callback_27/Callback_27/x64/Debug/vc143.idb


binární
Callback_27/Callback_27/x64/Debug/vc143.pdb


binární
Callback_27/x64/Debug/Callback_27.exe


binární
Callback_27/x64/Debug/Callback_27.pdb


binární
Callback_29/.vs/Callback_29/v17/.suo


binární
Callback_29/.vs/Callback_29/v17/Browse.VC.db


binární
Callback_29/.vs/Callback_29/v17/ipch/AutoPCH/3bd7473f42e43275/CALLBACK_29.ipch


binární
Callback_29/.vs/Callback_29/v17/ipch/AutoPCH/681047ba84fd5ae5/CDATASTRUCT.ipch


binární
Callback_29/.vs/Callback_29/v17/ipch/AutoPCH/946e9e9706e0dd1d/CCALLBACKHDL.ipch


binární
Callback_29/.vs/Callback_29/v17/ipch/AutoPCH/d4f9f805cb1e820e/CCLASSA.ipch


+ 31 - 0
Callback_29/Callback_29.sln

@@ -0,0 +1,31 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.1.32328.378
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Callback_29", "Callback_29\Callback_29.vcxproj", "{6C01E599-E51A-428D-A9A1-3229ADD44B8C}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|x64 = Debug|x64
+		Debug|x86 = Debug|x86
+		Release|x64 = Release|x64
+		Release|x86 = Release|x86
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{6C01E599-E51A-428D-A9A1-3229ADD44B8C}.Debug|x64.ActiveCfg = Debug|x64
+		{6C01E599-E51A-428D-A9A1-3229ADD44B8C}.Debug|x64.Build.0 = Debug|x64
+		{6C01E599-E51A-428D-A9A1-3229ADD44B8C}.Debug|x86.ActiveCfg = Debug|Win32
+		{6C01E599-E51A-428D-A9A1-3229ADD44B8C}.Debug|x86.Build.0 = Debug|Win32
+		{6C01E599-E51A-428D-A9A1-3229ADD44B8C}.Release|x64.ActiveCfg = Release|x64
+		{6C01E599-E51A-428D-A9A1-3229ADD44B8C}.Release|x64.Build.0 = Release|x64
+		{6C01E599-E51A-428D-A9A1-3229ADD44B8C}.Release|x86.ActiveCfg = Release|Win32
+		{6C01E599-E51A-428D-A9A1-3229ADD44B8C}.Release|x86.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+		SolutionGuid = {8DE365A5-FA09-43CD-9DE2-806019950BD6}
+	EndGlobalSection
+EndGlobal

+ 120 - 0
Callback_29/Callback_29/Callback_29.cpp

@@ -0,0 +1,120 @@
+// Callback_24.cpp : Diese Datei enthält die Funktion "main". Hier beginnt und endet die Ausführung des Programms.
+//
+//  https://github.com/wisoltech/cpp11-callbacks/blob/master/callback4.cc
+//  https://www.wisol.ch/w/articles/2015-03-08-callbacks-in-cpp11/
+// 
+//
+
+#include <iostream>
+#include <vector>
+#include <functional>
+#include <map>
+
+#include "cCallbackHdl.h"
+#include "cDataStruct.h"
+#include "cClassA.h"
+
+
+class Button;
+
+/***********************************************************************************************************************
+ * Dummy Client #1
+ * Uses a static method for a callback.
+ */
+struct Client1
+{
+	static uint8_t func(void* v, void* w) {
+		myData* x = (myData*)v;
+		Button* y = (Button*)w;
+
+		printf("static Client1::func2 %d\n", x->myAge);
+		printf("static Client1::func2 %d\n", x->myAge);
+		return 4;
+	};
+
+	static uint8_t func2() {
+
+		printf("static Client1::func2 %d\n");
+		printf("static Client1::func2 %d\n");
+		return 4;
+	};
+
+};
+
+
+class Button {
+
+public:
+
+	cCallbackHdl cbHdl;
+
+	myData mydata{ 24, "myData struct", myData::FEMALE };
+
+	myOtherData myOtherdata{ 34, "myOtherdata struct", myOtherData::FEMALE };
+
+	/*************************************************************************************
+	 *
+	 */
+	void init() {
+		/**************************************************************************************
+		 *  https://en.cppreference.com/w/cpp/language/lambda
+		 *  https://stackoverflow.com/questions/6458612/c0x-proper-way-to-receive-a-lambda-as-parameter-by-reference
+		 */
+
+		auto lambda2 = [this](void* v, void* w) { std::cout << "Lambda: " << std::endl; return 0; };
+
+		auto res = cbHdl.cb_register(CALLBACK_TYPE::A, [this](void* v, void* w) {
+			myData* x = (myData*)v;
+			Button* y = (Button*)w;
+
+			printf("lambda callback: %d\n", x->myAge);
+			return 2;
+			});
+
+		uint8_t resmap = cbHdl.cb_register(CALLBACK_TYPE::D, lambda2);
+		resmap = cbHdl.cb_register(CALLBACK_TYPE::D, &Client1::func);
+
+		auto desres = cbHdl.cb_2register(CALLBACK_TYPE::A, [this]() {
+
+			printf("lambda callback: %d\n", 12);
+			return 2;
+			});
+
+	}
+
+	/**********************************************************************************************/
+
+	void run() {
+		std::cout << " run ..." << std::endl;
+
+		uint8_t x = cbHdl.cb_call(CALLBACK_TYPE::A, (void*)&myOtherdata, (void*)this);
+		uint8_t y = cbHdl.cb_call(CALLBACK_TYPE::D, (void*)&myOtherdata, (void*) nullptr);
+		auto cb2 = cbHdl.cb_2call(CALLBACK_TYPE::A);
+		(cb2) ();
+
+
+	}
+};
+
+
+/***********************************************************************************************************************
+ *    Callback on a c function
+ */
+int main()
+{
+	std::cout << "Hello World!\n";
+
+	Button button;
+
+	/*
+	 *  https://www.wisol.ch/w/articles/2015-03-08-callbacks-in-cpp11/
+	 */
+
+	button.init();
+	button.run();
+
+	return 1;
+}
+
+
+

+ 153 - 0
Callback_29/Callback_29/Callback_29.vcxproj

@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <VCProjectVersion>16.0</VCProjectVersion>
+    <Keyword>Win32Proj</Keyword>
+    <ProjectGuid>{6c01e599-e51a-428d-a9a1-3229add44b8c}</ProjectGuid>
+    <RootNamespace>Callback29</RootNamespace>
+    <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <PlatformToolset>v143</PlatformToolset>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <PlatformToolset>v143</PlatformToolset>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <PlatformToolset>v143</PlatformToolset>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <PlatformToolset>v143</PlatformToolset>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="Shared">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <LinkIncremental>true</LinkIncremental>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <LinkIncremental>false</LinkIncremental>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <LinkIncremental>true</LinkIncremental>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <LinkIncremental>false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <SDLCheck>true</SDLCheck>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <ConformanceMode>true</ConformanceMode>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <SDLCheck>true</SDLCheck>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <ConformanceMode>true</ConformanceMode>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <SDLCheck>true</SDLCheck>
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <ConformanceMode>true</ConformanceMode>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <SDLCheck>true</SDLCheck>
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <ConformanceMode>true</ConformanceMode>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="Callback_29.cpp" />
+    <ClCompile Include="cClassA.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="cCallbackHdl.h" />
+    <ClInclude Include="cClassA.h" />
+    <ClInclude Include="cDataStruct.h" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>

+ 36 - 0
Callback_29/Callback_29/Callback_29.vcxproj.filters

@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Quelldateien">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+    <Filter Include="Headerdateien">
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+      <Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
+    </Filter>
+    <Filter Include="Ressourcendateien">
+      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="Callback_29.cpp">
+      <Filter>Quelldateien</Filter>
+    </ClCompile>
+    <ClCompile Include="cClassA.cpp">
+      <Filter>Quelldateien</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="cClassA.h">
+      <Filter>Headerdateien</Filter>
+    </ClInclude>
+    <ClInclude Include="cDataStruct.h">
+      <Filter>Headerdateien</Filter>
+    </ClInclude>
+    <ClInclude Include="cCallbackHdl.h">
+      <Filter>Headerdateien</Filter>
+    </ClInclude>
+  </ItemGroup>
+</Project>

+ 4 - 0
Callback_29/Callback_29/Callback_29.vcxproj.user

@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup />
+</Project>

+ 74 - 0
Callback_29/Callback_29/cCallbackHdl.h

@@ -0,0 +1,74 @@
+#pragma once
+
+#include <iostream>
+#include <vector>
+#include <functional>
+#include <map>
+#include <unordered_map>
+
+#include "cDataStruct.h"
+
+/***********************************************************************************************************************
+ ***********************************************************************************************************************/
+
+
+enum class CALLBACK_TYPE { A, B, C, D };
+
+using map_t = std::map < CALLBACK_TYPE, std::function<uint8_t(void*, void*)>>;
+
+
+class cCallbackHdl {
+
+public:
+
+	cCallbackHdl() {};
+
+
+
+	template <class T>
+	uint8_t cb_register(const CALLBACK_TYPE type, const T& cb)
+	{
+		// add callback to end of callback list
+		m_call_map.insert(std::make_pair(type, std::move(cb)));
+		return 0;
+	}
+
+	template <class T>
+	uint8_t cb_2register(const CALLBACK_TYPE type, const T& cb)
+	{
+		// add callback to end of callback list
+		m_call_2_map.insert(std::make_pair(type, std::move(cb)));
+		return 0;
+	}
+
+	/// Call all the registered callbacks.
+	uint8_t cb_call(const CALLBACK_TYPE type, void* val, void* xal) const
+	{
+		if (m_call_map.find(type) == m_call_map.end()) {
+			// std::cout << "Index not found: " << index << std::endl;
+			return 1;
+		}
+
+		const auto& cb = m_call_map.find(type)->second;
+		return (cb)(val, xal);
+	}
+
+
+	/// Call all the registered callbacks.
+	auto cb_2call(const CALLBACK_TYPE type) const
+	{
+		if (m_call_2_map.find(type) == m_call_2_map.end()) {
+			std::cout << "Index not found: " << std::endl;
+		}
+
+		const auto& cb = m_call_2_map.find(type)->second;
+		return cb;
+	}
+
+private:
+
+	// The map that stores the callbacks.
+
+	std::map<CALLBACK_TYPE, std::function<uint8_t(void*, void*)>> m_call_map;
+	std::map<CALLBACK_TYPE, std::function<uint8_t()>> m_call_2_map;
+};

+ 4 - 0
Callback_29/Callback_29/cClassA.cpp

@@ -0,0 +1,4 @@
+#include "cClassA.h"
+#include "cCallbackHdl.h"
+#include "cDataStruct.h" 
+

+ 7 - 0
Callback_29/Callback_29/cClassA.h

@@ -0,0 +1,7 @@
+#pragma once
+
+#include "cCallbackHdl.h"
+#include "cDataStruct.h"
+
+
+

+ 36 - 0
Callback_29/Callback_29/cDataStruct.h

@@ -0,0 +1,36 @@
+#pragma once
+
+#include <iostream>
+#include <vector>
+#include <functional>
+#include <map>
+
+struct MyFieldInterface
+{
+	virtual void fieldInter() = 0;
+	virtual ~MyFieldInterface() {};
+};
+
+struct myfriendClass {
+
+	void fieldInter() {};
+	uint8_t myVal;
+	const char* pchar = "myfriendClass";
+};
+
+
+struct myData {
+
+	uint8_t myAge;
+	const char* pchar;
+	enum en_sex { MALE, FEMALE, DIVERS } sex;
+};
+
+struct myOtherData {
+
+	uint8_t myAge;
+	const char* pchar;
+	enum en_sex { MALE, FEMALE, DIVERS } sex;
+};
+
+

+ 11 - 0
Callback_29/Callback_29/x64/Debug/Callback_29.exe.recipe

@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project>
+  <ProjectOutputs>
+    <ProjectOutput>
+      <FullPath>C:\Users\wruser\source\repos\Callback_29\x64\Debug\Callback_29.exe</FullPath>
+    </ProjectOutput>
+  </ProjectOutputs>
+  <ContentFiles />
+  <SatelliteDlls />
+  <NonRecipeFileRefs />
+</Project>

binární
Callback_29/Callback_29/x64/Debug/Callback_29.ilk


+ 8 - 0
Callback_29/Callback_29/x64/Debug/Callback_29.log

@@ -0,0 +1,8 @@
+  Callback_29.cpp
+C:\Users\wruser\source\repos\Callback_29\Callback_29\Callback_29.cpp(37,10): warning C4473: "printf": nicht genügend Argumente für Formatzeichenfolge übergeben
+C:\Users\wruser\source\repos\Callback_29\Callback_29\Callback_29.cpp(37,10): message : Platzhalter und deren Parameter erwarten 1 variadic-Argumente, es wurden aber 0 variadic-Argumente bereitgestellt.
+C:\Users\wruser\source\repos\Callback_29\Callback_29\Callback_29.cpp(37,10): message : Das fehlende variadic-Argument "1" ist für die Zeichenfolge "%d" erforderlich.
+C:\Users\wruser\source\repos\Callback_29\Callback_29\Callback_29.cpp(38,10): warning C4473: "printf": nicht genügend Argumente für Formatzeichenfolge übergeben
+C:\Users\wruser\source\repos\Callback_29\Callback_29\Callback_29.cpp(38,10): message : Platzhalter und deren Parameter erwarten 1 variadic-Argumente, es wurden aber 0 variadic-Argumente bereitgestellt.
+C:\Users\wruser\source\repos\Callback_29\Callback_29\Callback_29.cpp(38,10): message : Das fehlende variadic-Argument "1" ist für die Zeichenfolge "%d" erforderlich.
+  Callback_29.vcxproj -> C:\Users\wruser\source\repos\Callback_29\x64\Debug\Callback_29.exe

binární
Callback_29/Callback_29/x64/Debug/Callback_29.obj


binární
Callback_29/Callback_29/x64/Debug/Callback_29.tlog/CL.command.1.tlog


binární
Callback_27/Callback_27/x64/Debug/Callback_27.tlog/CL.read.1.tlog → Callback_29/Callback_29/x64/Debug/Callback_29.tlog/CL.read.1.tlog


binární
Callback_29/Callback_29/x64/Debug/Callback_29.tlog/CL.write.1.tlog


+ 2 - 0
Callback_29/Callback_29/x64/Debug/Callback_29.tlog/Callback_29.lastbuildstate

@@ -0,0 +1,2 @@
+PlatformToolSet=v143:VCToolArchitecture=Native64Bit:VCToolsVersion=14.31.31103:TargetPlatformVersion=10.0.19041.0:
+Debug|x64|C:\Users\wruser\source\repos\Callback_29\|

binární
Callback_29/Callback_29/x64/Debug/Callback_29.tlog/link.command.1.tlog


binární
Callback_29/Callback_29/x64/Debug/Callback_29.tlog/link.read.1.tlog


binární
Callback_29/Callback_29/x64/Debug/Callback_29.tlog/link.write.1.tlog


binární
Callback_29/Callback_29/x64/Debug/cClassA.obj


binární
Callback_29/Callback_29/x64/Debug/vc143.idb


binární
Callback_29/Callback_29/x64/Debug/vc143.pdb


binární
Callback_29/x64/Debug/Callback_29.exe


binární
Callback_29/x64/Debug/Callback_29.pdb


binární
Callback_30/.vs/Callback_30/FileContentIndex/595bc602-fb3a-44ab-8f13-8659c4be72c4.vsidx


+ 0 - 0
Callback_30/.vs/Callback_30/FileContentIndex/read.lock


binární
Callback_30/.vs/Callback_30/v17/.suo


binární
Callback_30/.vs/Callback_30/v17/Browse.VC.db


binární
Callback_30/.vs/Callback_30/v17/ipch/AutoPCH/5112b8694dc9197d/CALLBACK_30.ipch


binární
Callback_30/.vs/Callback_30/v17/ipch/AutoPCH/8b32e653f46c9a77/CDATASTRUCT.ipch


binární
Callback_30/.vs/Callback_30/v17/ipch/AutoPCH/caf0b6d18079f397/CCALLBACKHDL.ipch


+ 31 - 0
Callback_30/Callback_30.sln

@@ -0,0 +1,31 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.1.32328.378
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Callback_30", "Callback_30\Callback_30.vcxproj", "{922E6443-3E14-419B-A8B5-30F3DF22C284}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|x64 = Debug|x64
+		Debug|x86 = Debug|x86
+		Release|x64 = Release|x64
+		Release|x86 = Release|x86
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{922E6443-3E14-419B-A8B5-30F3DF22C284}.Debug|x64.ActiveCfg = Debug|x64
+		{922E6443-3E14-419B-A8B5-30F3DF22C284}.Debug|x64.Build.0 = Debug|x64
+		{922E6443-3E14-419B-A8B5-30F3DF22C284}.Debug|x86.ActiveCfg = Debug|Win32
+		{922E6443-3E14-419B-A8B5-30F3DF22C284}.Debug|x86.Build.0 = Debug|Win32
+		{922E6443-3E14-419B-A8B5-30F3DF22C284}.Release|x64.ActiveCfg = Release|x64
+		{922E6443-3E14-419B-A8B5-30F3DF22C284}.Release|x64.Build.0 = Release|x64
+		{922E6443-3E14-419B-A8B5-30F3DF22C284}.Release|x86.ActiveCfg = Release|Win32
+		{922E6443-3E14-419B-A8B5-30F3DF22C284}.Release|x86.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+		SolutionGuid = {7AEB1980-D7CC-4C2C-A89F-A04FF9C7CF8D}
+	EndGlobalSection
+EndGlobal

Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů