From 785ddbb4b41154515b9793b13e3502531cd137b0 Mon Sep 17 00:00:00 2001 From: "BOOK-0CD3P8P8FE\\endur" Date: Mon, 16 Dec 2024 06:25:51 -0800 Subject: [PATCH 1/4] Add more unit tests --- src/Port/WorkerThreadStd.cpp | 9 + src/Port/WorkerThreadStd.h | 3 + tests/UnitTests/DelegateAsyncWait_UT.cpp | 3 - tests/UnitTests/DelegateAsync_UT.cpp | 3 - tests/UnitTests/DelegateThreads_UT.cpp | 292 +++++++++++++++++++++++ tests/UnitTests/DelegateUnitTests.cpp | 16 +- tests/UnitTests/Delegate_UT.cpp | 3 - 7 files changed, 316 insertions(+), 13 deletions(-) create mode 100644 tests/UnitTests/DelegateThreads_UT.cpp diff --git a/src/Port/WorkerThreadStd.cpp b/src/Port/WorkerThreadStd.cpp index 881cca3..ad2e12b 100644 --- a/src/Port/WorkerThreadStd.cpp +++ b/src/Port/WorkerThreadStd.cpp @@ -73,6 +73,15 @@ std::thread::id WorkerThread::GetCurrentThreadId() return this_thread::get_id(); } +//---------------------------------------------------------------------------- +// GetQueueSize +//---------------------------------------------------------------------------- +size_t WorkerThread::GetQueueSize() +{ + lock_guard lock(m_mutex); + return m_queue.size(); +} + //---------------------------------------------------------------------------- // ExitThread //---------------------------------------------------------------------------- diff --git a/src/Port/WorkerThreadStd.h b/src/Port/WorkerThreadStd.h index 404f7c7..a195f69 100644 --- a/src/Port/WorkerThreadStd.h +++ b/src/Port/WorkerThreadStd.h @@ -36,6 +36,9 @@ class WorkerThread : public DelegateLib::DelegateThread /// Get the ID of the currently executing thread static std::thread::id GetCurrentThreadId(); + /// Get size of thread message queue. + size_t GetQueueSize(); + virtual void DispatchDelegate(std::shared_ptr msg); private: diff --git a/tests/UnitTests/DelegateAsyncWait_UT.cpp b/tests/UnitTests/DelegateAsyncWait_UT.cpp index 7f1192a..69d5a66 100644 --- a/tests/UnitTests/DelegateAsyncWait_UT.cpp +++ b/tests/UnitTests/DelegateAsyncWait_UT.cpp @@ -2,9 +2,6 @@ #include "UnitTestCommon.h" #include #include "WorkerThreadStd.h" -#ifdef WIN32 -#include -#endif using namespace DelegateLib; using namespace std; diff --git a/tests/UnitTests/DelegateAsync_UT.cpp b/tests/UnitTests/DelegateAsync_UT.cpp index 13592f1..1e2d4e7 100644 --- a/tests/UnitTests/DelegateAsync_UT.cpp +++ b/tests/UnitTests/DelegateAsync_UT.cpp @@ -2,9 +2,6 @@ #include "UnitTestCommon.h" #include #include "WorkerThreadStd.h" -#ifdef WIN32 -#include -#endif using namespace DelegateLib; using namespace std; diff --git a/tests/UnitTests/DelegateThreads_UT.cpp b/tests/UnitTests/DelegateThreads_UT.cpp new file mode 100644 index 0000000..65cb53a --- /dev/null +++ b/tests/UnitTests/DelegateThreads_UT.cpp @@ -0,0 +1,292 @@ +#include "DelegateLib.h" +#include "UnitTestCommon.h" +#include +#include "WorkerThreadStd.h" +#include +#include + +using namespace DelegateLib; +using namespace std; +using namespace UnitTestData; + +static WorkerThread workerThread1("DelegateThreads1_UT"); +static WorkerThread workerThread2("DelegateThreads2_UT"); + +static std::mutex m_lock; +static const int LOOPS = 10; +static const int CNT_MAX = 7; +static int callerCnt[CNT_MAX] = { 0 }; + +static void Wait() +{ + // Wait for tests to complete. Test complete when thread queues empty. + while (workerThread1.GetQueueSize() != 0 && + workerThread2.GetQueueSize() != 0) + { + std::this_thread::sleep_for(std::chrono::milliseconds(10)); + } + std::this_thread::sleep_for(std::chrono::milliseconds(100)); +} + +static std::chrono::milliseconds getRandomTime() +{ + // Create a random number generator and a uniform distribution + std::random_device rd; // Non-deterministic random number generator + std::mt19937 gen(rd()); // Mersenne Twister engine initialized with rd + std::uniform_int_distribution<> dis(0, 10); // Uniform distribution between 0 and 10 + + // Generate a random number (between 0 and 10 milliseconds) + int random_ms = dis(gen); + + // Return the random number as a chrono::milliseconds object + return std::chrono::milliseconds(random_ms); +} + +static void FreeThreadSafe(std::chrono::milliseconds delay, int idx) +{ + const std::lock_guard lock(m_lock); + callerCnt[idx]++; + std::this_thread::sleep_for(delay); +} + +static std::function LambdaThreadSafe = [](std::chrono::milliseconds delay, int idx) +{ + const std::lock_guard lock(m_lock); + callerCnt[idx]++; + std::this_thread::sleep_for(delay); +}; + +class TestClass +{ +public: + void MemberThreadSafe(std::chrono::milliseconds delay, int idx) + { + const std::lock_guard lock(m_lock); + callerCnt[idx]++; + std::this_thread::sleep_for(delay); + } +}; + +static void FreeTests() +{ + std::memset(callerCnt, 0, sizeof(callerCnt)); + + auto delegateSync1 = MakeDelegate(&FreeThreadSafe); + auto delegateSync2 = MakeDelegate(&FreeThreadSafe); + auto delegateAsync1 = MakeDelegate(&FreeThreadSafe, workerThread1); + auto delegateAsync2 = MakeDelegate(&FreeThreadSafe, workerThread2); + auto delegateAsyncWait1 = MakeDelegate(&FreeThreadSafe, workerThread1, std::chrono::milliseconds(500)); + auto delegateAsyncWait2 = MakeDelegate(&FreeThreadSafe, workerThread1, std::chrono::milliseconds(500)); + + MulticastDelegateSafe container; + container += delegateSync1; + container += delegateSync2; + container += delegateAsync1; + container += delegateAsync2; + container += delegateAsyncWait1; + container += delegateAsyncWait2; + + int cnt = 0; + int cnt2 = 0; + while (cnt++ < LOOPS) + { + delegateSync1(getRandomTime(), 0); + delegateSync2(getRandomTime(), 1); + + auto retVal1 = delegateAsyncWait1.AsyncInvoke(getRandomTime(), 4); + ASSERT_TRUE(retVal1.has_value()); + auto retVal2 = delegateAsyncWait2.AsyncInvoke(getRandomTime(), 5); + ASSERT_TRUE(retVal2.has_value()); + + while (cnt2++ < 5) + { + delegateAsync1(getRandomTime(), 2); + delegateAsync2(getRandomTime(), 3); + } + cnt2 = 0; + container(getRandomTime(), 6); + } + + Wait(); + + ASSERT_TRUE(callerCnt[0] == LOOPS); + ASSERT_TRUE(callerCnt[1] == LOOPS); + ASSERT_TRUE(callerCnt[2] == LOOPS * 5); + ASSERT_TRUE(callerCnt[3] == LOOPS * 5); + ASSERT_TRUE(callerCnt[4] == LOOPS); + ASSERT_TRUE(callerCnt[5] == LOOPS); + ASSERT_TRUE(callerCnt[6] == LOOPS * 6); + std::cout << "FreeTests() complete!" << std::endl; +} + +static void MemberTests() +{ + std::memset(callerCnt, 0, sizeof(callerCnt)); + TestClass testClass; + + auto delegateSync1 = MakeDelegate(&testClass, &TestClass::MemberThreadSafe); + auto delegateSync2 = MakeDelegate(&testClass, &TestClass::MemberThreadSafe); + auto delegateAsync1 = MakeDelegate(&testClass, &TestClass::MemberThreadSafe, workerThread1); + auto delegateAsync2 = MakeDelegate(&testClass, &TestClass::MemberThreadSafe, workerThread2); + auto delegateAsyncWait1 = MakeDelegate(&testClass, &TestClass::MemberThreadSafe, workerThread1, std::chrono::milliseconds(500)); + auto delegateAsyncWait2 = MakeDelegate(&testClass, &TestClass::MemberThreadSafe, workerThread1, std::chrono::milliseconds(500)); + + MulticastDelegateSafe container; + container += delegateSync1; + container += delegateSync2; + container += delegateAsync1; + container += delegateAsync2; + container += delegateAsyncWait1; + container += delegateAsyncWait2; + + int cnt = 0; + int cnt2 = 0; + while (cnt++ < LOOPS) + { + delegateSync1(getRandomTime(), 0); + delegateSync2(getRandomTime(), 1); + + auto retVal1 = delegateAsyncWait1.AsyncInvoke(getRandomTime(), 4); + ASSERT_TRUE(retVal1.has_value()); + auto retVal2 = delegateAsyncWait2.AsyncInvoke(getRandomTime(), 5); + ASSERT_TRUE(retVal2.has_value()); + + while (cnt2++ < 5) + { + delegateAsync1(getRandomTime(), 2); + delegateAsync2(getRandomTime(), 3); + } + cnt2 = 0; + container(getRandomTime(), 6); + } + + Wait(); + + ASSERT_TRUE(callerCnt[0] == LOOPS); + ASSERT_TRUE(callerCnt[1] == LOOPS); + ASSERT_TRUE(callerCnt[2] == LOOPS * 5); + ASSERT_TRUE(callerCnt[3] == LOOPS * 5); + ASSERT_TRUE(callerCnt[4] == LOOPS); + ASSERT_TRUE(callerCnt[5] == LOOPS); + ASSERT_TRUE(callerCnt[6] == LOOPS * 6); + std::cout << "MemberTests() complete!" << std::endl; +} + +static void MemberSpTests() +{ + std::memset(callerCnt, 0, sizeof(callerCnt)); + auto testClass = std::make_shared(); + + auto delegateSync1 = MakeDelegate(testClass, &TestClass::MemberThreadSafe); + auto delegateSync2 = MakeDelegate(testClass, &TestClass::MemberThreadSafe); + auto delegateAsync1 = MakeDelegate(testClass, &TestClass::MemberThreadSafe, workerThread1); + auto delegateAsync2 = MakeDelegate(testClass, &TestClass::MemberThreadSafe, workerThread2); + auto delegateAsyncWait1 = MakeDelegate(testClass, &TestClass::MemberThreadSafe, workerThread1, std::chrono::milliseconds(500)); + auto delegateAsyncWait2 = MakeDelegate(testClass, &TestClass::MemberThreadSafe, workerThread1, std::chrono::milliseconds(500)); + + MulticastDelegateSafe container; + container += delegateSync1; + container += delegateSync2; + container += delegateAsync1; + container += delegateAsync2; + container += delegateAsyncWait1; + container += delegateAsyncWait2; + + int cnt = 0; + int cnt2 = 0; + while (cnt++ < LOOPS) + { + delegateSync1(getRandomTime(), 0); + delegateSync2(getRandomTime(), 1); + + auto retVal1 = delegateAsyncWait1.AsyncInvoke(getRandomTime(), 4); + ASSERT_TRUE(retVal1.has_value()); + auto retVal2 = delegateAsyncWait2.AsyncInvoke(getRandomTime(), 5); + ASSERT_TRUE(retVal2.has_value()); + + while (cnt2++ < 5) + { + delegateAsync1(getRandomTime(), 2); + delegateAsync2(getRandomTime(), 3); + } + cnt2 = 0; + container(getRandomTime(), 6); + } + + Wait(); + + ASSERT_TRUE(callerCnt[0] == LOOPS); + ASSERT_TRUE(callerCnt[1] == LOOPS); + ASSERT_TRUE(callerCnt[2] == LOOPS * 5); + ASSERT_TRUE(callerCnt[3] == LOOPS * 5); + ASSERT_TRUE(callerCnt[4] == LOOPS); + ASSERT_TRUE(callerCnt[5] == LOOPS); + ASSERT_TRUE(callerCnt[6] == LOOPS * 6); + std::cout << "MemberSpTests() complete!" << std::endl; +} + +static void FunctionTests() +{ + std::memset(callerCnt, 0, sizeof(callerCnt)); + + auto delegateSync1 = MakeDelegate(LambdaThreadSafe); + auto delegateSync2 = MakeDelegate(LambdaThreadSafe); + auto delegateAsync1 = MakeDelegate(LambdaThreadSafe, workerThread1); + auto delegateAsync2 = MakeDelegate(LambdaThreadSafe, workerThread2); + auto delegateAsyncWait1 = MakeDelegate(LambdaThreadSafe, workerThread1, std::chrono::milliseconds(500)); + auto delegateAsyncWait2 = MakeDelegate(LambdaThreadSafe, workerThread1, std::chrono::milliseconds(500)); + + MulticastDelegateSafe container; + container += delegateSync1; + container += delegateSync2; + container += delegateAsync1; + container += delegateAsync2; + container += delegateAsyncWait1; + container += delegateAsyncWait2; + + int cnt = 0; + int cnt2 = 0; + while (cnt++ < LOOPS) + { + delegateSync1(getRandomTime(), 0); + delegateSync2(getRandomTime(), 1); + + auto retVal1 = delegateAsyncWait1.AsyncInvoke(getRandomTime(), 4); + ASSERT_TRUE(retVal1.has_value()); + auto retVal2 = delegateAsyncWait2.AsyncInvoke(getRandomTime(), 5); + ASSERT_TRUE(retVal2.has_value()); + + while (cnt2++ < 5) + { + delegateAsync1(getRandomTime(), 2); + delegateAsync2(getRandomTime(), 3); + } + cnt2 = 0; + container(getRandomTime(), 6); + } + + Wait(); + + ASSERT_TRUE(callerCnt[0] == LOOPS); + ASSERT_TRUE(callerCnt[1] == LOOPS); + ASSERT_TRUE(callerCnt[2] == LOOPS * 5); + ASSERT_TRUE(callerCnt[3] == LOOPS * 5); + ASSERT_TRUE(callerCnt[4] == LOOPS); + ASSERT_TRUE(callerCnt[5] == LOOPS); + ASSERT_TRUE(callerCnt[6] == LOOPS * 6); + std::cout << "FunctionTests() complete!" << std::endl; +} + +void DelegateThreads_UT() +{ + workerThread1.CreateThread(); + workerThread2.CreateThread(); + + FreeTests(); + MemberTests(); + MemberSpTests(); + FunctionTests(); + + workerThread1.ExitThread(); + workerThread2.ExitThread(); +} \ No newline at end of file diff --git a/tests/UnitTests/DelegateUnitTests.cpp b/tests/UnitTests/DelegateUnitTests.cpp index 903dbd1..b85eaae 100644 --- a/tests/UnitTests/DelegateUnitTests.cpp +++ b/tests/UnitTests/DelegateUnitTests.cpp @@ -2575,12 +2575,21 @@ void DelegateMemberAsyncWaitTests() extern void Delegate_UT(); extern void DelegateAsync_UT(); extern void DelegateAsyncWait_UT(); +extern void DelegateThreads_UT(); void DelegateUnitTests() { - Delegate_UT(); - DelegateAsync_UT(); - DelegateAsyncWait_UT(); + try + { + Delegate_UT(); + DelegateAsync_UT(); + DelegateAsyncWait_UT(); + DelegateThreads_UT(); + } + catch (const std::exception& e) + { + std::cout << "Unit Tests Failed: " << e.what() << std::endl; + } testThread.CreateThread(); @@ -2613,7 +2622,6 @@ void DelegateUnitTests() std::cout << "Unit Tests Failed: " << e.what() << std::endl; } - #ifdef WIN32 QueryPerformanceCounter(&EndingTime); ElapsedMicroseconds.QuadPart = EndingTime.QuadPart - StartingTime.QuadPart; diff --git a/tests/UnitTests/Delegate_UT.cpp b/tests/UnitTests/Delegate_UT.cpp index 8960761..9bd94c0 100644 --- a/tests/UnitTests/Delegate_UT.cpp +++ b/tests/UnitTests/Delegate_UT.cpp @@ -2,9 +2,6 @@ #include "UnitTestCommon.h" #include #include "WorkerThreadStd.h" -#ifdef WIN32 -#include -#endif using namespace DelegateLib; using namespace std; From 5b158f17753026dee4625e7eec20b1e7d157ef2f Mon Sep 17 00:00:00 2001 From: "BOOK-0CD3P8P8FE\\endur" Date: Mon, 16 Dec 2024 06:35:21 -0800 Subject: [PATCH 2/4] Fix build errors --- src/Delegate/DelegateAsync.h | 8 ++++---- tests/UnitTests/DelegateThreads_UT.cpp | 1 + 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/Delegate/DelegateAsync.h b/src/Delegate/DelegateAsync.h index e9c4628..77090a1 100644 --- a/src/Delegate/DelegateAsync.h +++ b/src/Delegate/DelegateAsync.h @@ -215,7 +215,7 @@ class DelegateFreeAsync : public DelegateFree msg) { + virtual void DelegateInvoke(std::shared_ptr msg) override { // Typecast the base pointer to back correct derived to instance auto delegateMsg = std::dynamic_pointer_cast>(msg); if (delegateMsg == nullptr) @@ -435,7 +435,7 @@ class DelegateMemberAsync : public DelegateMember msg) { + virtual void DelegateInvoke(std::shared_ptr msg) override { // Typecast the base pointer to back correct derived to instance auto delegateMsg = std::dynamic_pointer_cast>(msg); if (delegateMsg == nullptr) @@ -656,7 +656,7 @@ class DelegateMemberSpAsync : public DelegateMemberSp< /// source and destination `delegateMsg` access because the source thread is not waiting /// for the function call to complete. /// @param[in] msg The delegate message created and sent within `operator()(Args... args)`. - virtual void DelegateInvoke(std::shared_ptr msg) { + virtual void DelegateInvoke(std::shared_ptr msg) override { // Typecast the base pointer to back correct derived to instance auto delegateMsg = std::dynamic_pointer_cast>(msg); if (delegateMsg == nullptr) @@ -860,7 +860,7 @@ class DelegateFunctionAsync : public DelegateFunction msg) { + virtual void DelegateInvoke(std::shared_ptr msg) override { // Typecast the base pointer to back correct derived to instance auto delegateMsg = std::dynamic_pointer_cast>(msg); if (delegateMsg == nullptr) diff --git a/tests/UnitTests/DelegateThreads_UT.cpp b/tests/UnitTests/DelegateThreads_UT.cpp index 65cb53a..8b29bdb 100644 --- a/tests/UnitTests/DelegateThreads_UT.cpp +++ b/tests/UnitTests/DelegateThreads_UT.cpp @@ -4,6 +4,7 @@ #include "WorkerThreadStd.h" #include #include +#include using namespace DelegateLib; using namespace std; From 6e7bccf08c3ab921e0952a87d71802df6e05600e Mon Sep 17 00:00:00 2001 From: "BOOK-0CD3P8P8FE\\endur" Date: Mon, 16 Dec 2024 08:42:37 -0800 Subject: [PATCH 3/4] Remove DelegateMemberSp related classes and combine. --- README.md | 87 +++++- docs/DETAILS.md | 74 +++--- src/Delegate/Delegate.h | 176 +++--------- src/Delegate/DelegateAsync.h | 265 +++--------------- src/Delegate/DelegateAsyncWait.h | 324 ++++------------------- src/Examples/SysDataNoLock.cpp | 1 + src/Examples/SysDataNoLock.h | 1 + src/main.cpp | 29 +- tests/UnitTests/DelegateAsyncWait_UT.cpp | 8 +- tests/UnitTests/DelegateAsync_UT.cpp | 6 +- tests/UnitTests/Delegate_UT.cpp | 6 +- 11 files changed, 261 insertions(+), 716 deletions(-) diff --git a/README.md b/README.md index 772db25..c8e044b 100644 --- a/README.md +++ b/README.md @@ -11,11 +11,65 @@ Asynchronous function calls support both non-blocking and blocking modes with a Originally published on CodeProject at: Asynchronous Multicast Delegates in Modern C++ +# Design Details + + See [Design Details](docs/DETAILS.md) for implementation design details and more examples. + + See Doxygen main page located at `doxygen/html/index.html` for source code documentation. Clone the repository to view the pages in a browser. + # Quick Start -A simple publish/subscribe asynchronous delegate example. +## Basic Examples -## Publisher Example +Synchronous free and member delegate examples. + +```cpp +// Create a delegate bound to a free function then invoke +auto delegateFree = MakeDelegate(&FreeFuncInt); +delegateFree(123); + +// Create a delegate bound to a member function then invoke +TestClass testClass; +auto delegateMember = MakeDelegate(&testClass, &TestClass::MemberFunc); +delegateMember(&testStruct); +``` + +Create a delegate container, insert a delegate instance and invoke asynchronously. + +```cpp +// Create a thread-safe multicast delegate container that accepts Delegate delegates +MulticastDelegateSafe delegateC; + +// Add a delegate to the container that will invoke on workerThread1 +delegateC += MakeDelegate(&testClass, &TestClass::MemberFunc, workerThread1); + +// Asynchronously invoke the delegate target member function TestClass::MemberFunc() +if (delegateC) + delegateC(&testStruct); + +// Remove the delegate from the container +delegateC -= MakeDelegate(&testClass, &TestClass::MemberFunc, workerThread1); +``` + +Asynchronously invoke `LambdaFunc1` on `workerThread1` and block waiting for the return value. + +```cpp +std::function LambdaFunc1 = [](int i) -> int +{ + cout << "Called LambdaFunc1 " << i << std::endl; + return ++i; +}; + +// Asynchronously invoke lambda on workerThread1 and wait for the return value +auto lambdaDelegate1 = MakeDelegate(LambdaFunc1, workerThread1, WAIT_INFINITE); +int lambdaRetVal2 = lambdaDelegate1(123); +``` + +## Publish/Subscribe Example + +A simple publish/subscribe example using asynchronous delegates. + +### Publisher Typically a delegate is inserted into a delegate container. AlarmCd is a delegate container. @@ -41,7 +95,7 @@ void NotifyAlarmSubscribers(int alarmId, const string& note) AlarmCb(alarmId, note); } ``` -## Subscriber Example +### Subscriber

Typically a subscriber registers with a delegate container instance to receive callbacks, either synchronously or asynchronously.

@@ -83,8 +137,6 @@ class AlarmSub } ``` -

This is a simple example. Many other usage patterns exist including asynchronous API's, blocking delegates with a timeout, and more.

- ## All Delegate Types Example A example delegate container inserting and removing all delegate types. @@ -258,13 +310,20 @@ DelegateBase DelegateMember<> DelegateMemberAsync<> DelegateMemberAsyncWait<> - DelegateMemberSp<> - DelegateMemberSpAsync<> - DelegateMemberSpAsyncWait<> DelegateFunction<> DelegateFunctionAsync<> DelegateFunctionAsyncWait<> +``` + +

DelegateFree<> binds to a free or static member function. DelegateMember<> binds to a class instance member function. DelegateFunction<> binds to a std::function target. All versions offer synchronous function invocation.

+ +

DelegateFreeAsync<>, DelegateMemberAsync<> and DelegateFunctionAsync<> operate in the same way as their synchronous counterparts; except these versions offer non-blocking asynchronous function execution on a specified thread of control.

+ +

DelegateFreeAsyncWait<>, DelegateMemberAsyncWait<> and DelegateFunctionAsyncWait<> provides blocking asynchronous function execution on a target thread with a caller supplied maximum wait timeout. The destination thread will not invoke the target function if the timeout expires.

+ +

The three main delegate container classes are:

+```cpp // Delegate Containers SinglecastDelegate<> MulticastDelegate<> @@ -276,6 +335,12 @@ DelegateMsg DelegateThread ``` +

SinglecastDelegate<> is a delegate container accepting a single delegate. The advantage of the single cast version is that it is slightly smaller.

+ +

MulticastDelegate<> is a delegate container accepting multiple delegates.

+ +

MultcastDelegateSafe<> is a thread-safe container accepting multiple delegates. Always use the thread-safe version if multiple threads access the container instance.

+ # Project Build CMake is used to create the build files. CMake is free and open-source software. Windows, Linux and other toolchains are supported. Example CMake console commands executed inside the project root directory: @@ -308,12 +373,6 @@ After executed, build the software from within the build directory
Figure 4: Linux Makefile Build
-# Design Details - - See [Design Details](docs/DETAILS.md) for implementation design details and more examples. - - See Doxygen main page located at `doxygen/html/index.html` for source code documentation. Clone the repository to view the pages in a browser. - # Related Repositories ## Alternative Implementations diff --git a/docs/DETAILS.md b/docs/DETAILS.md index 979182f..eb7d417 100644 --- a/docs/DETAILS.md +++ b/docs/DETAILS.md @@ -140,19 +140,16 @@ DelegateBase DelegateMember<> DelegateMemberAsync<> DelegateMemberAsyncWait<> - DelegateMemberSp<> - DelegateMemberSpAsync<> - DelegateMemberSpAsyncWait<> DelegateFunction<> DelegateFunctionAsync<> DelegateFunctionAsyncWait<> ``` -

DelegateFree<> binds to a free or static member function. DelegateMember<> binds to a class instance member function. DelegateMemberSp<> binds to a class instance member function using a std::shared_ptr instead of a raw object pointer. All versions offer synchronous function invocation.

+

DelegateFree<> binds to a free or static member function. DelegateMember<> binds to a class instance member function. DelegateFunction<> binds to a std::function target. All versions offer synchronous function invocation.

-

DelegateFreeAsync<>, DelegateMemberAsync<> and DelegateMemberSpAsync<> operate in the same way as their synchronous counterparts; except these versions offer non-blocking asynchronous function execution on a specified thread of control.

+

DelegateFreeAsync<>, DelegateMemberAsync<> and DelegateFunctionAsync<> operate in the same way as their synchronous counterparts; except these versions offer non-blocking asynchronous function execution on a specified thread of control.

-

DelegateFreeAsyncWait<>, DelegateMemberAsyncWait<> and DelegateMemberAsyncWait<> provides blocking asynchronous function execution on a target thread with a caller supplied maximum wait timeout. The destination thread will not invoke the target function if the timeout expires.

+

DelegateFreeAsyncWait<>, DelegateMemberAsyncWait<> and DelegateFunctionAsyncWait<> provides blocking asynchronous function execution on a target thread with a caller supplied maximum wait timeout. The destination thread will not invoke the target function if the timeout expires.

The three main delegate container classes are:

@@ -321,7 +318,7 @@ delegateH("Hello world", 2020); ## Bind to std::shared_ptr -

Binding to instance member function requires a pointer to an object. The delegate library supports binding with a raw pointer and a std::shared_ptr smart pointer. Usage is what you'd expect; just use a std::shared_ptr in place of the raw object pointer in the call to MakeDelegate(). Depending on if a thread argument is passed to MakeDelegate() or not, a DelegateMemberSp<> or DelegateMemberSpAsync<> instance is returned.

+

Binding to instance member function requires a pointer to an object. The delegate library supports binding with a raw pointer and a std::shared_ptr smart pointer. Usage is what you'd expect; just use a std::shared_ptr in place of the raw object pointer in the call to MakeDelegate(). ```cpp // Create a shared_ptr, create a delegate, then synchronously invoke delegate function @@ -335,30 +332,30 @@ delegateMemberSp("Hello world using shared_ptr", 2020);

Certain asynchronous delegate usage patterns can cause a callback invocation to occur on a deleted object. The problem is this: an object function is bound to a delegate and invoked asynchronously, but before the invocation occurs on the target thread, the target object is deleted. In other words, it is possible for an object bound to a delegate to be deleted before the target thread message queue has had a chance to invoke the callback. The following code exposes the issue:

```cpp - // Example of a bug where the testClassHeap is deleted before the asychronous delegate - // is invoked on the workerThread1. In other words, by the time workerThread1 calls - // the bound delegate function the testClassHeap instance is deleted and no longer valid. - TestClass* testClassHeap = new TestClass(); - auto delegateMemberAsync = - MakeDelegate(testClassHeap, &TestClass::MemberFuncStdString, workerThread1); - delegateMemberAsync("Function async invoked on deleted object. Bug!", 2020); - delegateMemberAsync.Clear(); - delete testClassHeap; +// Example of a bug where the testClassHeap is deleted before the asychronous delegate +// is invoked on the workerThread1. In other words, by the time workerThread1 calls +// the bound delegate function the testClassHeap instance is deleted and no longer valid. +TestClass* testClassHeap = new TestClass(); +auto delegateMemberAsync = + MakeDelegate(testClassHeap, &TestClass::MemberFuncStdString, workerThread1); +delegateMemberAsync("Function async invoked on deleted object. Bug!", 2020); +delegateMemberAsync.Clear(); +delete testClassHeap; ```

The example above is contrived, but it does clearly show that nothing prevents an object being deleted while waiting for the asynchronous invocation to occur. In many embedded system architectures, the registrations might occur on singleton objects or objects that have a lifetime that spans the entire execution. In this way, the application's usage pattern prevents callbacks into deleted objects. However, if objects pop into existence, temporarily subscribe to a delegate for callbacks, then get deleted later the possibility of a latent delegate stuck in a message queue could invoke a function on a deleted object.

-

Fortunately, C++ smart pointers are just the ticket to solve these complex object lifetime issues. A DelegateMemberSpAsync<> delegate binds using a std::shared_ptr instead of a raw object pointer. Now that the delegate has a shared pointer, the danger of the object being prematurely deleted is eliminated. The shared pointer will only delete the object pointed to once all references are no longer in use. In the code snippet below, all references to testClassSp are removed by the client code yet the delegate's copy placed into the queue prevents TestClass deletion until after the asynchronous delegate callback occurs.

+

Fortunately, C++ smart pointers are just the ticket to solve these complex object lifetime issues. A DelegateMemberAsync<> delegate binds using a std::shared_ptr instead of a raw object pointer. Now that the delegate has a shared pointer, the danger of the object being prematurely deleted is eliminated. The shared pointer will only delete the object pointed to once all references are no longer in use. In the code snippet below, all references to testClassSp are removed by the client code yet the delegate's copy placed into the queue prevents TestClass deletion until after the asynchronous delegate callback occurs.

```cpp - // Example of the smart pointer function version of the delegate. The testClassSp instance - // is only deleted after workerThread1 invokes the callback function thus solving the bug. - std::shared_ptr testClassSp(new TestClass()); - auto delegateMemberSpAsync = MakeDelegate - (testClassSp, &TestClass::MemberFuncStdString, workerThread1); - delegateMemberSpAsync("Function async invoked using smart pointer. Bug solved!", 2020); - delegateMemberSpAsync.Clear(); - testClassSp.reset(); +// Example of the smart pointer function version of the delegate. The testClassSp instance +// is only deleted after workerThread1 invokes the callback function thus solving the bug. +std::shared_ptr testClassSp(new TestClass()); +auto delegateMemberSpAsync = MakeDelegate + (testClassSp, &TestClass::MemberFuncStdString, workerThread1); +delegateMemberSpAsync("Function async invoked using smart pointer. Bug solved!", 2020); +delegateMemberSpAsync.Clear(); +testClassSp.reset(); ```

Actually, this technique can be used to call an object function, and then the object automatically deletes after the callback occurs. Using the above example, create a shared pointer instance, bind a delegate, and invoke the delegate. Now testClassSp can go out of scope and TestClass::MemberFuncStdString will still be safely called on workerThread1. The TestClass instance will delete by way of std::shared_ptr once the smart pointer reference count goes to 0 after the callback completes without any extra programmer involvement.

@@ -381,17 +378,17 @@ delegateMemberSpAsync("testClassSp deletes after delegate invokes", 2020);

Adding a timeout as the last argument to MakeDelegate() causes a DelegateFreeAsyncWait<> or DelegateMemberAsyncWait<> instance to be returned depending on if a free or member function is being bound. A "Wait" delegate is typically not added to a delegate container. The typical usage pattern is to create a delegate and function arguments on the stack, then invoke. The code fragment below creates a blocking delegate with the function signature int (std::string&). The function is called on workerThread1. The function MemberFuncStdStringRetInt() will update the outgoing string msg and return an integer to the caller.

```cpp - // Create a asynchronous blocking delegate and invoke. This thread will block until the - // msg and year stack values are set by MemberFuncStdStringRetInt on workerThread1. - auto delegateI = - MakeDelegate(&testClass, &TestClass::MemberFuncStdStringRetInt, - workerThread1, WAIT_INFINITE); - std::string msg; - int year = delegateI(msg); - if (delegateI.IsSuccess()) - { - cout << msg.c_str() << " " << year << endl; - } +// Create a asynchronous blocking delegate and invoke. This thread will block until the +// msg and year stack values are set by MemberFuncStdStringRetInt on workerThread1. +auto delegateI = + MakeDelegate(&testClass, &TestClass::MemberFuncStdStringRetInt, + workerThread1, WAIT_INFINITE); +std::string msg; +int year = delegateI(msg); +if (delegateI.IsSuccess()) +{ + cout << msg.c_str() << " " << year << endl; +} ``` ## Asynchronous Lambda Invocation @@ -399,7 +396,7 @@ delegateMemberSpAsync("testClassSp deletes after delegate invokes", 2020);

Delegates can invoke lambda functions asynchronously. The example below calls LambdaFunc1 on workerThread1.

```cpp -auto LambdaFunc1 = +[](int i) -> int +std::function LambdaFunc1 = [](int i) -> int { cout << "Called LambdaFunc1 " << i << std::endl; return ++i; @@ -440,9 +437,6 @@ DelegateBase DelegateMember<> DelegateMemberAsync<> DelegateMemberAsyncWait<> - DelegateMemberSp<> - DelegateMemberSpAsync<> - DelegateMemberSpAsyncWait<> DelegateFunction<> DelegateFunctionAsync<> DelegateFunctionAsyncWait<> diff --git a/src/Delegate/Delegate.h b/src/Delegate/Delegate.h index 5d7188c..7ce2595 100644 --- a/src/Delegate/Delegate.h +++ b/src/Delegate/Delegate.h @@ -180,7 +180,7 @@ template struct DelegateMember; // Not defined /// @brief `DelegateMember<>` class synchronously invokes a class member target -/// function using a class object pointer. +/// function using a class object pointer or shared pointer. /// @tparam TClass The class type that contains the member function. /// @tparam RetType The return type of the bound delegate function. /// @tparam Args The argument types of the bound delegate function. @@ -188,10 +188,21 @@ template class DelegateMember : public Delegate { public: typedef TClass* ObjectPtr; - typedef RetType(TClass::*MemberFunc)(Args...); - typedef RetType(TClass::*ConstMemberFunc)(Args...) const; + typedef std::shared_ptr SharedPtr; + typedef RetType(TClass::* MemberFunc)(Args...); + typedef RetType(TClass::* ConstMemberFunc)(Args...) const; using ClassType = DelegateMember; + /// @brief Constructor to create a class instance. + /// @param[in] object The target object pointer to store. + /// @param[in] func The target member function to store. + DelegateMember(SharedPtr object, MemberFunc func) { Bind(object, func); } + + /// @brief Constructor to create a class instance. + /// @param[in] object The target object pointer to store. + /// @param[in] func The target const member function to store. + DelegateMember(SharedPtr object, ConstMemberFunc func) { Bind(object, func); } + /// @brief Constructor to create a class instance. /// @param[in] object The target object pointer to store. /// @param[in] func The target member function to store. @@ -222,7 +233,7 @@ class DelegateMember : public Delegate : public Delegate(func); } - /// @brief Creates a copy of the current object. - /// @details Clones the current instance of the class by creating a new object - /// and copying the state of the current object to it. - /// @return A pointer to a new `ClassType` instance. - /// @post The caller is responsible for deleting the clone object. - virtual ClassType* Clone() const override { - return new ClassType(*this); - } - - /// @brief Assigns the state of one object to another. - /// @details Copy the state from the `rhs` (right-hand side) object to the - /// current object. - /// @param[in] rhs The object whose state is to be copied. - void Assign(const ClassType& rhs) { - m_object = rhs.m_object; - m_func = rhs.m_func; - } - - /// @brief Invoke the bound delegate function synchronously. - /// @param[in] args - the function arguments, if any. - /// @return The bound function return value, if any. - virtual RetType operator()(Args... args) override { - return std::invoke(m_func, m_object, std::forward(args)...); - } - - /// @brief Assignment operator that assigns the state of one object to another. - /// @param[in] rhs The object whose state is to be assigned to the current object. - /// @return A reference to the current object. - ClassType& operator=(const ClassType& rhs) { - if (&rhs != this) { - Assign(rhs); - } - return *this; - } - - /// @brief Move assignment operator that transfers ownership of resources. - /// @param[in] rhs The object to move from. - /// @return A reference to the current object. - ClassType& operator=(ClassType&& rhs) noexcept { - if (&rhs != this) { - m_object = rhs.m_object; - m_func = rhs.m_func; - rhs.Clear(); - } - return *this; - } - - /// @brief Compares two delegate objects for equality. - /// @param[in] rhs The `DelegateBase` object to compare with the current object. - /// @return `true` if the two delegate objects are equal, `false` otherwise. - virtual bool operator==(const DelegateBase& rhs) const override { - auto derivedRhs = dynamic_cast(&rhs); - return derivedRhs && - m_func == derivedRhs->m_func && - m_object == derivedRhs->m_object; - } - - /// @brief Check if the delegate is bound to a target function. - /// @return `true` if the delegate has a target function, `false` otherwise. - bool Empty() const noexcept { return !(m_object && m_func); } - - /// @brief Clear the target function. - /// @post The delegate is empty. - void Clear() noexcept { m_object = nullptr; m_func = nullptr; } - - /// @brief Implicit conversion operator to `bool`. - /// @return `true` if the object is not empty, `false` if the object is empty. - explicit operator bool() const noexcept { return !Empty(); } - -private: - /// Pointer to a class object, representing the bound target instance. - ObjectPtr m_object = nullptr; - - /// Pointer to a member function, representing the bound target function. - MemberFunc m_func = nullptr; -}; - -template -struct DelegateMemberSp; // Not defined - -/// @brief `DelegateMemberSp<>` class synchronously invokes a class member target -/// function using a `std::shared_ptr` object. -/// @tparam TClass The class type that contains the member function. -/// @tparam RetType The return type of the bound delegate function. -/// @tparam Args The argument types of the bound delegate function. -template -class DelegateMemberSp : public Delegate { -public: - typedef std::shared_ptr ObjectPtr; - typedef RetType(TClass::* MemberFunc)(Args...); - typedef RetType(TClass::* ConstMemberFunc)(Args...) const; - using ClassType = DelegateMemberSp; - - /// @brief Constructor to create a class instance. - /// @param[in] object The target object shared pointer to store. - /// @param[in] func The target member function to store. - DelegateMemberSp(ObjectPtr object, MemberFunc func) { Bind(object, func); } - - /// @brief Constructor to create a class instance. - /// @param[in] object The target shared object pointer to store. - /// @param[in] func The target const member function to store. - DelegateMemberSp(ObjectPtr object, ConstMemberFunc func) { Bind(object, func); } - - /// @brief Copy constructor that creates a copy of the given instance. - /// @details This constructor initializes a new object as a copy of the - /// provided `rhs` (right-hand side) object. The `rhs` object is used to - /// set the state of the new instance. - /// @param[in] rhs The object to copy from. - DelegateMemberSp(const ClassType& rhs) { Assign(rhs); } - - /// @brief Move constructor that transfers ownership of resources. - /// @param[in] rhs The object to move from. - DelegateMemberSp(ClassType&& rhs) noexcept : m_object(rhs.m_object), m_func(rhs.m_func) { rhs.Clear(); } - - /// @brief Default constructor creates an empty delegate. - DelegateMemberSp() = default; - /// @brief Bind a member function to the delegate. /// @details This method associates a member function (`func`) with the delegate. /// Once the function is bound, the delegate can be used to invoke the function. - /// @param[in] object The target shared object instance. - /// @param[in] func The function to bind to the delegate. The member function to - /// bind to the delegate. This function must match the signature of the delegate. + /// @param[in] object The target object instance. + /// @param[in] func The member function to bind to the delegate. This function must + /// match the signature of the delegate. void Bind(ObjectPtr object, MemberFunc func) { - m_object = object; + auto deleter = [](TClass*) {}; // No-op deleter + m_object = std::shared_ptr(object, deleter); // Not deleted when out of scope m_func = func; } /// @brief Bind a const member function to the delegate. /// @details This method associates a member function (`func`) with the delegate. /// Once the function is bound, the delegate can be used to invoke the function. - /// @param[in] object The target shared object instance. - /// @param[in] func The function to bind to the delegate. The function must match - /// the signature of the delegate. + /// @param[in] object The target object instance. + /// @param[in] func The function to bind to the delegate. The member function to + /// bind to the delegate. This function must match the signature of the delegate. void Bind(ObjectPtr object, ConstMemberFunc func) { - m_object = object; + auto deleter = [](TClass*) {}; // No-op deleter + m_object = std::shared_ptr(object, deleter); // Not deleted when out of scope m_func = reinterpret_cast(func); } @@ -382,8 +278,8 @@ class DelegateMemberSp : public Delegate : public Delegate MakeDelegate(TClass* object, RetType(TC /// @tparam Args The types of the function arguments. /// @param[in] object A shared pointer to the instance of `TClass` that will be used for the delegate. /// @param[in] func A pointer to the non-const member function of `TClass` to bind to the delegate. -/// @return A `DelegateMemberSp` object bound to the specified non-const member function. +/// @return A `DelegateMember` shared pointer bound to the specified non-const member function. template -DelegateMemberSp MakeDelegate(std::shared_ptr object, RetType(TClass::* func)(Args... args)) { - return DelegateMemberSp(object, func); +DelegateMember MakeDelegate(std::shared_ptr object, RetType(TClass::* func)(Args... args)) { + return DelegateMember(object, func); } /// @brief Creates a delegate that binds to a const member function with a shared pointer to the object. @@ -644,10 +540,10 @@ DelegateMemberSp MakeDelegate(std::shared_ptr /// @tparam Args The types of the function arguments. /// @param[in] object A shared pointer to the instance of `TClass` that will be used for the delegate. /// @param[in] func A pointer to the const member function of `TClass` to bind to the delegate. -/// @return A `DelegateMemberSp` object bound to the specified const member function. +/// @return A `DelegateMember` shared pointer bound to the specified const member function. template -DelegateMemberSp MakeDelegate(std::shared_ptr object, RetType(TClass::* func)(Args... args) const) { - return DelegateMemberSp(object, func); +DelegateMember MakeDelegate(std::shared_ptr object, RetType(TClass::* func)(Args... args) const) { + return DelegateMember(object, func); } /// @brief Creates a delegate that binds to a `std::function`. diff --git a/src/Delegate/DelegateAsync.h b/src/Delegate/DelegateAsync.h index 77090a1..0100e57 100644 --- a/src/Delegate/DelegateAsync.h +++ b/src/Delegate/DelegateAsync.h @@ -264,8 +264,9 @@ template class DelegateMemberAsync : public DelegateMember, public IDelegateInvoker { public: typedef TClass* ObjectPtr; - typedef RetType (TClass::*MemberFunc)(Args...); - typedef RetType (TClass::*ConstMemberFunc)(Args...) const; + typedef std::shared_ptr SharedPtr; + typedef RetType(TClass::* MemberFunc)(Args...); + typedef RetType(TClass::* ConstMemberFunc)(Args...) const; using ClassType = DelegateMemberAsync; using BaseType = DelegateMember; @@ -273,15 +274,33 @@ class DelegateMemberAsync : public DelegateMember : public DelegateMember : public DelegateMember - - /// @brief Assigns the state of one object to another. - /// @details Copy the state from the `rhs` (right-hand side) object to the - /// current object. - /// @param[in] rhs The object whose state is to be copied. - void Assign(const ClassType& rhs) { - m_thread = rhs.m_thread; - BaseType::Assign(rhs); - } - /// @brief Creates a copy of the current object. - /// @details Clones the current instance of the class by creating a new object - /// and copying the state of the current object to it. - /// @return A pointer to a new `ClassType` instance. - /// @post The caller is responsible for deleting the clone object. - virtual ClassType* Clone() const override { - return new ClassType(*this); - } - - /// @brief Assignment operator that assigns the state of one object to another. - /// @param[in] rhs The object whose state is to be assigned to the current object. - /// @return A reference to the current object. - ClassType& operator=(const ClassType& rhs) { - if (&rhs != this) { - BaseType::operator=(rhs); - Assign(rhs); - } - return *this; - } - - /// @brief Move assignment operator that transfers ownership of resources. - /// @param[in] rhs The object to move from. - /// @return A reference to the current object. - ClassType& operator=(ClassType&& rhs) noexcept { - if (&rhs != this) { - BaseType::operator=(std::move(rhs)); - m_thread = rhs.m_thread; // Use the resource - } - return *this; - } - - /// @brief Compares two delegate objects for equality. - /// @param[in] rhs The `DelegateBase` object to compare with the current object. - /// @return `true` if the two delegate objects are equal, `false` otherwise. - virtual bool operator==(const DelegateBase& rhs) const override { - auto derivedRhs = dynamic_cast(&rhs); - return derivedRhs && - &m_thread == &derivedRhs->m_thread && - BaseType::operator==(rhs); - } - - /// @brief Invoke the bound delegate function asynchronously. Called by the source thread. - /// @details Invoke delegate function asynchronously and do not wait for return value. - /// This function is called by the source thread. Dispatches the delegate data into the - /// destination thread message queue. `DelegateInvoke()` must be called by the destination - /// thread to invoke the target function. - /// - /// The `DelegateAsyncMsg` duplicates and copies the function arguments into heap memory. - /// The source thread is not required to place function arguments into the heap. The delegate - /// library performs all necessary heap and argument coping for the caller. Ensure complex - /// argument data types can be safely copied by creating a copy constructor if necessary. - /// @param[in] args The function arguments, if any. - /// @return A default return value. The return value is *not* returned from the - /// target function. Do not use the return value. - /// @post Do not use the return value as its not valid. - virtual RetType operator()(Args... args) override { - // Synchronously invoke the target function? - if (this->GetSync()) { - // Invoke the target function directly - return BaseType::operator()(std::forward(args)...); - } else { - // Create a clone instance of this delegate - auto delegate = std::shared_ptr(Clone()); - - // Create a new message instance for sending to the destination thread - auto msg = std::make_shared>(delegate, std::forward(args)...); - - // Dispatch message onto the callback destination thread. DelegateInvoke() - // will be called by the destintation thread. - GetThread().DispatchDelegate(msg); - - // Do not wait for destination thread return value from async function call - return RetType(); - - // Check if any argument is a shared_ptr with wrong usage - // std::shared_ptr reference arguments are not allowed with asynchronous delegates as the behavior is - // undefined. In other words: - // void MyFunc(std::shared_ptr data) // Ok! - // void MyFunc(std::shared_ptr& data) // Error if DelegateAsync or DelegateSpAsync target! - static_assert(!(std::disjunction_v...> && - (std::disjunction_v, std::is_pointer> || ...)), - "std::shared_ptr reference argument not allowed"); - } - } - - /// @brief Invoke delegate function asynchronously. Do not wait for return value. - /// Called by the source thread. - /// @param[in] args The function arguments, if any. - void AsyncInvoke(Args... args) { - operator()(std::forward(args)...); - } - - /// @brief Invoke the delegate function on the destination thread. Called by the - /// destintation thread. - /// @details Each source thread call to `operator()` generate a call to `DelegateInvoke()` - /// on the destination thread. Unlike `DelegateAsyncWait`, a lock is not required between - /// source and destination `delegateMsg` access because the source thread is not waiting - /// for the function call to complete. - /// @param[in] msg The delegate message created and sent within `operator()(Args... args)`. - virtual void DelegateInvoke(std::shared_ptr msg) override { - // Typecast the base pointer to back correct derived to instance - auto delegateMsg = std::dynamic_pointer_cast>(msg); - if (delegateMsg == nullptr) - throw std::invalid_argument("Invalid DelegateAsyncMsg cast"); - - // Invoke the delegate function asynchronously - SetSync(true); - - // Invoke the target function using the source thread supplied function arguments - std::apply(&BaseType::operator(), - std::tuple_cat(std::make_tuple(this), delegateMsg->GetArgs())); - } - - ///@brief Get the destination thread that the target function is invoked on. - // @return The target thread. - DelegateThread& GetThread() noexcept { return m_thread; } - -protected: - /// @brief Get the synchronous target invoke flag. - /// @return `true` if `operator()(Args... args)` is to invoke synchronously. - /// `false` means asychronously by sending a message. - bool GetSync() { return m_sync; } - - /// @brief Set the synchronous target invoke flag. - /// @param[in] sync The new target invoke flag state. - void SetSync(bool sync) { m_sync = sync; } - -private: - /// The target thread to invoke the delegate function. - DelegateThread& m_thread; - - /// Flag to control synchronous vs asynchronous target invoke behavior. - bool m_sync = false; - - // -}; - -template -struct DelegateMemberSpAsync; // Not defined - -/// @brief `DelegateMemberSpAsync<>` class asynchronously invokes a std::shared_ptr target function. -/// @tparam TClass The class type that contains the member function. -/// @tparam RetType The return type of the bound delegate function. -/// @tparam Args The argument types of the bound delegate function. -template -class DelegateMemberSpAsync : public DelegateMemberSp, public IDelegateInvoker { -public: - typedef std::shared_ptr ObjectPtr; - typedef RetType(TClass::* MemberFunc)(Args...); - typedef RetType(TClass::* ConstMemberFunc)(Args...) const; - using ClassType = DelegateMemberSpAsync; - using BaseType = DelegateMemberSp; - - /// @brief Constructor to create a class instance. - /// @param[in] object The target class shared pointer to store. - /// @param[in] func The target member function to store. - /// @param[in] thread The execution thread to invoke `func`. - DelegateMemberSpAsync(ObjectPtr object, MemberFunc func, DelegateThread& thread) : BaseType(object, func), m_thread(thread) { - Bind(object, func, thread); - } - - /// @brief Constructor to create a class instance. - /// @param[in] object The target object pointer to store. - /// @param[in] func The target const member function to store. - /// @param[in] thread The execution thread to invoke `func`. - DelegateMemberSpAsync(ObjectPtr object, ConstMemberFunc func, DelegateThread& thread) : BaseType(object, func), m_thread(thread) { - Bind(object, func, thread); - } - - /// @brief Copy constructor that creates a copy of the given instance. - /// @details This constructor initializes a new object as a copy of the - /// provided `rhs` (right-hand side) object. The `rhs` object is used to - /// set the state of the new instance. - /// @param[in] rhs The object to copy from. - DelegateMemberSpAsync(const ClassType& rhs) : - BaseType(rhs), m_thread(rhs.m_thread) { - Assign(rhs); - } - - /// @brief Move constructor that transfers ownership of resources. - /// @param[in] rhs The object to move from. - DelegateMemberSpAsync(ClassType&& rhs) noexcept : - BaseType(rhs), m_thread(rhs.m_thread) { - rhs.Clear(); - } - - DelegateMemberSpAsync() = delete; - - /// @brief Bind a member function to the delegate. + /// @brief Bind a const member function to the delegate. /// @details This method associates a member function (`func`) with the delegate. /// Once the function is bound, the delegate can be used to invoke the function. /// @param[in] object The target object instance. - /// @param[in] func The function to bind to the delegate. The member function to - /// bind to the delegate. This function must match the signature of the delegate. + /// @param[in] func The function to bind to the delegate. This function must match + /// the signature of the delegate. + /// @param[in] thread The execution thread to invoke `func`. void Bind(ObjectPtr object, MemberFunc func, DelegateThread& thread) { m_thread = thread; BaseType::Bind(object, func); } - /// @brief Bind a const member function to the delegate. + /// @brief Bind a member function to the delegate. /// @details This method associates a member function (`func`) with the delegate. /// Once the function is bound, the delegate can be used to invoke the function. /// @param[in] object The target object instance. - /// @param[in] func The const function to bind to the delegate. This function must + /// @param[in] func The member function to bind to the delegate. This function must /// match the signature of the delegate. /// @param[in] thread The execution thread to invoke `func`. void Bind(ObjectPtr object, ConstMemberFunc func, DelegateThread& thread) { @@ -617,7 +439,8 @@ class DelegateMemberSpAsync : public DelegateMemberSp< if (this->GetSync()) { // Invoke the target function directly return BaseType::operator()(std::forward(args)...); - } else { + } + else { // Create a clone instance of this delegate auto delegate = std::shared_ptr(Clone()); @@ -666,7 +489,7 @@ class DelegateMemberSpAsync : public DelegateMemberSp< SetSync(true); // Invoke the target function using the source thread supplied function arguments - std::apply(&BaseType::operator(), + std::apply(&BaseType::operator(), std::tuple_cat(std::make_tuple(this), delegateMsg->GetArgs())); } @@ -686,10 +509,10 @@ class DelegateMemberSpAsync : public DelegateMemberSp< private: /// The target thread to invoke the delegate function. - DelegateThread& m_thread; + DelegateThread& m_thread; /// Flag to control synchronous vs asynchronous target invoke behavior. - bool m_sync = false; + bool m_sync = false; // }; @@ -942,10 +765,10 @@ DelegateMemberAsync MakeDelegate(TClass* object, RetTy /// @param[in] object A shared pointer to the instance of `TClass` that will be used for the delegate. /// @param[in] func A pointer to the non-const member function of `TClass` to bind to the delegate. /// @param[in] thread The `DelegateThread` on which the function will be invoked asynchronously. -/// @return A `DelegateMemberSpAsync` object bound to the specified non-const member function and thread. +/// @return A `DelegateMemberAsync` shared pointer bound to the specified non-const member function and thread. template -DelegateMemberSpAsync MakeDelegate(std::shared_ptr object, RetVal(TClass::* func)(Args... args), DelegateThread& thread) { - return DelegateMemberSpAsync(object, func, thread); +DelegateMemberAsync MakeDelegate(std::shared_ptr object, RetVal(TClass::* func)(Args... args), DelegateThread& thread) { + return DelegateMemberAsync(object, func, thread); } @@ -956,10 +779,10 @@ DelegateMemberSpAsync MakeDelegate(std::shared_ptr -DelegateMemberSpAsync MakeDelegate(std::shared_ptr object, RetVal(TClass::* func)(Args... args) const, DelegateThread& thread) { - return DelegateMemberSpAsync(object, func, thread); +DelegateMemberAsync MakeDelegate(std::shared_ptr object, RetVal(TClass::* func)(Args... args) const, DelegateThread& thread) { + return DelegateMemberAsync(object, func, thread); } /// @brief Creates an asynchronous delegate that binds to a `std::function`. diff --git a/src/Delegate/DelegateAsyncWait.h b/src/Delegate/DelegateAsyncWait.h index d30a581..bfc6889 100644 --- a/src/Delegate/DelegateAsyncWait.h +++ b/src/Delegate/DelegateAsyncWait.h @@ -367,11 +367,34 @@ template class DelegateMemberAsyncWait : public DelegateMemberAsync { public: typedef TClass* ObjectPtr; - typedef RetType(TClass::*MemberFunc)(Args...); - typedef RetType(TClass::*ConstMemberFunc)(Args...) const; + typedef std::shared_ptr SharedPtr; + typedef RetType(TClass::* MemberFunc)(Args...); + typedef RetType(TClass::* ConstMemberFunc)(Args...) const; using ClassType = DelegateMemberAsyncWait; using BaseType = DelegateMemberAsync; + /// @brief Constructor to create a class instance. + /// @param[in] object The target object pointer to store. + /// @param[in] func The target member function to store. + /// @param[in] thread The execution thread to invoke `func`. + /// @param[in] timeout The calling thread timeout for destination thread to + /// invoke the target function. + DelegateMemberAsyncWait(SharedPtr object, MemberFunc func, DelegateThread& thread, std::chrono::milliseconds timeout = WAIT_INFINITE) : + BaseType(object, func, thread), m_timeout(timeout) { + Bind(object, func, thread); + } + + /// @brief Constructor to create a class instance. + /// @param[in] object The target object pointer to store. + /// @param[in] func The target const member function to store. + /// @param[in] thread The execution thread to invoke `func`. + /// @param[in] timeout The calling thread timeout for destination thread to + /// invoke the target function. + DelegateMemberAsyncWait(SharedPtr object, ConstMemberFunc func, DelegateThread& thread, std::chrono::milliseconds timeout) : + BaseType(object, func, thread), m_timeout(timeout) { + Bind(object, func, thread); + } + /// @brief Constructor to create a class instance. /// @param[in] object The target object pointer to store. /// @param[in] func The target member function to store. @@ -420,7 +443,7 @@ class DelegateMemberAsyncWait : public DelegateMemberA /// @param[in] func The function to bind to the delegate. This function must match /// the signature of the delegate. /// @param[in] thread The execution thread to invoke `func`. - void Bind(ObjectPtr object, MemberFunc func, DelegateThread& thread) { + void Bind(SharedPtr object, MemberFunc func, DelegateThread& thread) { BaseType::Bind(object, func, thread); } @@ -431,266 +454,11 @@ class DelegateMemberAsyncWait : public DelegateMemberA /// @param[in] func The member function to bind to the delegate. This function must /// match the signature of the delegate. /// @param[in] thread The execution thread to invoke `func`. - void Bind(ObjectPtr object, ConstMemberFunc func, DelegateThread& thread) { + void Bind(SharedPtr object, ConstMemberFunc func, DelegateThread& thread) { BaseType::Bind(object, func, thread); } - // - - /// @brief Assigns the state of one object to another. - /// @details Copy the state from the `rhs` (right-hand side) object to the - /// current object. - /// @param[in] rhs The object whose state is to be copied. - void Assign(const ClassType& rhs) { - m_timeout = rhs.m_timeout; - BaseType::Assign(rhs); - } - - /// @brief Creates a copy of the current object. - /// @details Clones the current instance of the class by creating a new object - /// and copying the state of the current object to it. - /// @return A pointer to a new `ClassType` instance. - /// @post The caller is responsible for deleting the clone object. - virtual ClassType* Clone() const override { - return new ClassType(*this); - } - - /// @brief Assignment operator that assigns the state of one object to another. - /// @param[in] rhs The object whose state is to be assigned to the current object. - /// @return A reference to the current object. - ClassType& operator=(const ClassType& rhs) { - if (&rhs != this) { - BaseType::operator=(rhs); - Assign(rhs); - } - return *this; - } - - /// @brief Move assignment operator that transfers ownership of resources. - /// @param[in] rhs The object to move from. - /// @return A reference to the current object. - ClassType& operator=(ClassType&& rhs) noexcept { - if (&rhs != this) { - BaseType::operator=(std::move(rhs)); - m_timeout = rhs.m_timeout; // Use the resource - } - return *this; - } - - /// @brief Compares two delegate objects for equality. - /// @param[in] rhs The `DelegateBase` object to compare with the current object. - /// @return `true` if the two delegate objects are equal, `false` otherwise. - virtual bool operator==(const DelegateBase& rhs) const override { - auto derivedRhs = dynamic_cast(&rhs); - return derivedRhs && - m_timeout == derivedRhs->m_timeout && - BaseType::operator==(rhs); - } - - /// @brief Invoke delegate function asynchronously and block for function return value. - /// Called by the source thread. - /// @details Invoke delegate function asynchronously and wait for the return value. - /// This function is called by the source thread. Dispatches the delegate data into the - /// destination thread message queue. `DelegateInvoke()` must be called by the destination - /// thread to invoke the target function. - /// - /// If the destination thread invokes the function within `m_timeout`, the return - /// value is obtained from the destination thread function call. If `m_timeout` expires - /// before the destination thread processes the request, the target function is not - /// invoked and a default return value is returned to the caller with an undefined value. - /// Use `IsSuccess()` to check for success before using the return value. Alternatively, - /// use `AsyncInvoke()` and check the `std::optional` return value. - /// - /// The `DelegateAsyncWaitMsg` does not duplicated and copy the function arguments into heap - /// memory. The source thread waits on the destintation thread to complete, therefore argument - /// data is shared between the source and destination threads and simultaneous access is prevented - /// using a mutex. - /// @param[in] args The function arguments, if any. - /// @return The bound function return value, if any. Use `IsSuccess()` to determine if - /// the return value is valid before use. - virtual RetType operator()(Args... args) override { - // Synchronously invoke the target function? - if (this->GetSync()) { - // Invoke the target function directly - return BaseType::operator()(std::forward(args)...); - } else { - // Create a clone instance of this delegate - auto delegate = std::shared_ptr(Clone()); - - // Create a new message instance for sending to the destination thread. - auto msg = std::make_shared>(delegate, std::forward(args)...); - msg->SetInvokerWaiting(true); - - // Dispatch message onto the callback destination thread. DelegateInvoke() - // will be called by the destination thread. - this->GetThread().DispatchDelegate(msg); - - // Wait for destination thread to execute the delegate function and get return value - if ((m_success = msg->GetSema().Wait(m_timeout))) - m_retVal = delegate->m_retVal; - - // Protect data shared between source and destination threads - const std::lock_guard lock(msg->GetLock()); - - // Set flag that source is not waiting anymore - msg->SetInvokerWaiting(false); - - // Does the target function have a return value? - if constexpr (std::is_void::value == false) { - // Is the return value valid? - if (m_retVal.has_value()) { - // Return the destination thread target function return value - return GetRetVal(); - } else { - // Return a default return value - return RetType{}; - } - } - } - } - - /// @brief Invoke delegate function asynchronously and block for function return value. - /// Called by the source thread. - /// @param[in] args The function arguments, if any. - /// @return The bound function return value stored withing `std::optional`. Use - /// `has_value()` to check if the the return value is valid. `value()` contains - /// the target function return value. - auto AsyncInvoke(Args... args) { - if constexpr (std::is_void::value == true) { - operator()(args...); - return IsSuccess() ? std::optional(true) : std::optional(); - } else { - auto retVal = operator()(args...); - return IsSuccess() ? std::optional(retVal) : std::optional(); - } - } - - /// @brief Invoke the delegate function on the destination thread. Called by the - /// destination thread. - /// @details Each source thread call to `operator()` generate a call to `DelegateInvoke()` - /// on the destination thread. A lock is used to protect source and destination thread shared - /// data. A semaphore is used to signal the source thread when the destination thread - /// completes the target function call. - /// - /// If source thread timeout expires and before the destination thread invokes the - /// target function, the target function is not called. - /// @param[in] msg The delegate message created and sent within `operator()(Args... args)`. - virtual void DelegateInvoke(std::shared_ptr msg) override { - // Typecast the base pointer to back correct derived to instance - auto delegateMsg = std::dynamic_pointer_cast>(msg); - if (delegateMsg == nullptr) - throw std::invalid_argument("Invalid DelegateAsyncWaitMsg cast"); - - // Protect data shared between source and destination threads - const std::lock_guard lock(delegateMsg->GetLock()); - - // Is the source thread waiting for the target function invoke to complete? - if (delegateMsg->GetInvokerWaiting()) { - // Invoke the delegate function synchronously - this->SetSync(true); - - // Does target function have a void return value? - if constexpr (std::is_void::value == true) { - // Invoke the target function using the source thread supplied function arguments - std::apply(&BaseType::operator(), std::tuple_cat(std::make_tuple(this), delegateMsg->GetArgs())); - } else { - // Invoke the target function using the source thread supplied function arguments - // and get the return value - m_retVal = std::apply(&BaseType::operator(), std::tuple_cat(std::make_tuple(this), delegateMsg->GetArgs())); - } - - // Signal the source thread that the destination thread function call is complete - delegateMsg->GetSema().Signal(); - } - } - - /// Returns `true` if asynchronous function successfully invoked on the target thread - /// @return `true` if the target asynchronous function call succeeded. `false` if - /// the timeout expired before the target function could be invoked. - bool IsSuccess() noexcept { return m_success; } - - /// Get the asynchronous function return value - /// @return The destination thraed target function return value - RetType GetRetVal() noexcept { - try { - return std::any_cast(m_retVal); - } - catch (const std::bad_any_cast&) { - return RetType{}; // Return a default value if error - } - } - -private: - /// Set to `true` if async function call succeeds - bool m_success = false; - - /// Time in mS to wait for async function to invoke - std::chrono::milliseconds m_timeout; - - /// Return value of the target invoked function - std::any m_retVal; - - // -}; - -template -struct DelegateMemberSpAsyncWait; // Not defined - -/// @brief `DelegateMemberSpAsyncWait<>` class asynchronously block invokes a std::shared_ptr target function. -/// @tparam TClass The class type that contains the member function. -/// @tparam RetType The return type of the bound delegate function. -/// @tparam Args The argument types of the bound delegate function. -template -class DelegateMemberSpAsyncWait : public DelegateMemberSpAsync { -public: - typedef std::shared_ptr ObjectPtr; - typedef RetType(TClass::* MemberFunc)(Args...); - typedef RetType(TClass::* ConstMemberFunc)(Args...) const; - using ClassType = DelegateMemberSpAsyncWait; - using BaseType = DelegateMemberSpAsync; - - /// @brief Constructor to create a class instance. - /// @param[in] object The target class shared pointer to store. - /// @param[in] func The target member function to store. - /// @param[in] thread The execution thread to invoke `func`. - /// @param[in] timeout The calling thread timeout for destination thread to - /// invoke the target function. - DelegateMemberSpAsyncWait(ObjectPtr object, MemberFunc func, DelegateThread& thread, std::chrono::milliseconds timeout = WAIT_INFINITE) : - BaseType(object, func, thread), m_timeout(timeout) { - Bind(object, func, thread); - } - - /// @brief Constructor to create a class instance. - /// @param[in] object The target class shared pointer to store. - /// @param[in] func The target member function to store. - /// @param[in] thread The execution thread to invoke `func`. - /// @param[in] timeout The calling thread timeout for destination thread to - /// invoke the target function. - DelegateMemberSpAsyncWait(ObjectPtr object, ConstMemberFunc func, DelegateThread& thread, std::chrono::milliseconds timeout) : - BaseType(object, func, thread), m_timeout(timeout) { - Bind(object, func, thread); - } - - /// @brief Copy constructor that creates a copy of the given instance. - /// @details This constructor initializes a new object as a copy of the - /// provided `rhs` (right-hand side) object. The `rhs` object is used to - /// set the state of the new instance. - /// @param[in] rhs The object to copy from. - DelegateMemberSpAsyncWait(const ClassType& rhs) : - BaseType(rhs) { - Assign(rhs); - } - - /// @brief Move constructor that transfers ownership of resources. - /// @param[in] rhs The object to move from. - DelegateMemberSpAsyncWait(ClassType&& rhs) noexcept : - BaseType(rhs), m_timeout(rhs.m_timeout) { - rhs.Clear(); - } - - DelegateMemberSpAsyncWait() = delete; - - /// @brief Bind a member function to the delegate. + /// @brief Bind a const member function to the delegate. /// @details This method associates a member function (`func`) with the delegate. /// Once the function is bound, the delegate can be used to invoke the function. /// @param[in] object The target object instance. @@ -701,12 +469,12 @@ class DelegateMemberSpAsyncWait : public DelegateMembe BaseType::Bind(object, func, thread); } - /// @brief Bind a const member function to the delegate. + /// @brief Bind a member function to the delegate. /// @details This method associates a member function (`func`) with the delegate. /// Once the function is bound, the delegate can be used to invoke the function. /// @param[in] object The target object instance. - /// @param[in] func The function to bind to the delegate. This function must match - /// the signature of the delegate. + /// @param[in] func The member function to bind to the delegate. This function must + /// match the signature of the delegate. /// @param[in] thread The execution thread to invoke `func`. void Bind(ObjectPtr object, ConstMemberFunc func, DelegateThread& thread) { BaseType::Bind(object, func, thread); @@ -790,7 +558,8 @@ class DelegateMemberSpAsyncWait : public DelegateMembe if (this->GetSync()) { // Invoke the target function directly return BaseType::operator()(std::forward(args)...); - } else { + } + else { // Create a clone instance of this delegate auto delegate = std::shared_ptr(Clone()); @@ -818,7 +587,8 @@ class DelegateMemberSpAsyncWait : public DelegateMembe if (m_retVal.has_value()) { // Return the destination thread target function return value return GetRetVal(); - } else { + } + else { // Return a default return value return RetType{}; } @@ -836,7 +606,8 @@ class DelegateMemberSpAsyncWait : public DelegateMembe if constexpr (std::is_void::value == true) { operator()(args...); return IsSuccess() ? std::optional(true) : std::optional(); - } else { + } + else { auto retVal = operator()(args...); return IsSuccess() ? std::optional(retVal) : std::optional(); } @@ -870,7 +641,8 @@ class DelegateMemberSpAsyncWait : public DelegateMembe if constexpr (std::is_void::value == true) { // Invoke the target function using the source thread supplied function arguments std::apply(&BaseType::operator(), std::tuple_cat(std::make_tuple(this), delegateMsg->GetArgs())); - } else { + } + else { // Invoke the target function using the source thread supplied function arguments // and get the return value m_retVal = std::apply(&BaseType::operator(), std::tuple_cat(std::make_tuple(this), delegateMsg->GetArgs())); @@ -899,13 +671,13 @@ class DelegateMemberSpAsyncWait : public DelegateMembe private: /// Set to `true` if async function call succeeds - bool m_success = false; + bool m_success = false; /// Time in mS to wait for async function to invoke - std::chrono::milliseconds m_timeout; + std::chrono::milliseconds m_timeout; /// Return value of the target invoked function - std::any m_retVal; + std::any m_retVal; // }; @@ -1212,10 +984,10 @@ DelegateMemberAsyncWait MakeDelegate(TClass* object, R /// @param[in] func A pointer to the non-const member function of `TClass` to bind to the delegate. /// @param[in] thread The `DelegateThread` on which the function will be invoked asynchronously. /// @param[in] timeout The duration to wait for the function to complete before returning. -/// @return A `DelegateMemberSpAsyncWait` object bound to the specified non-const member function, thread, and timeout. +/// @return A `DelegateMemberAsyncWait` shared pointer bound to the specified non-const member function, thread, and timeout. template -DelegateMemberSpAsyncWait MakeDelegate(std::shared_ptr object, RetVal(TClass::* func)(Args... args), DelegateThread& thread, std::chrono::milliseconds timeout) { - return DelegateMemberSpAsyncWait(object, func, thread, timeout); +DelegateMemberAsyncWait MakeDelegate(std::shared_ptr object, RetVal(TClass::* func)(Args... args), DelegateThread& thread, std::chrono::milliseconds timeout) { + return DelegateMemberAsyncWait(object, func, thread, timeout); } /// @brief Creates an asynchronous delegate that binds to a const member function using a shared pointer, with a wait and timeout. @@ -1226,10 +998,10 @@ DelegateMemberSpAsyncWait MakeDelegate(std::shared_ptr< /// @param[in] func A pointer to the const member function of `TClass` to bind to the delegate. /// @param[in] thread The `DelegateThread` on which the function will be invoked asynchronously. /// @param[in] timeout The duration to wait for the function to complete before returning. -/// @return A `DelegateMemberSpAsyncWait` object bound to the specified const member function, thread, and timeout. +/// @return A `DelegateMemberAsyncWait` shared pointer bound to the specified const member function, thread, and timeout. template -DelegateMemberSpAsyncWait MakeDelegate(std::shared_ptr object, RetVal(TClass::* func)(Args... args) const, DelegateThread& thread, std::chrono::milliseconds timeout) { - return DelegateMemberSpAsyncWait(object, func, thread, timeout); +DelegateMemberAsyncWait MakeDelegate(std::shared_ptr object, RetVal(TClass::* func)(Args... args) const, DelegateThread& thread, std::chrono::milliseconds timeout) { + return DelegateMemberAsyncWait(object, func, thread, timeout); } /// @brief Creates an asynchronous delegate that binds to a `std::function` with a wait and timeout. diff --git a/src/Examples/SysDataNoLock.cpp b/src/Examples/SysDataNoLock.cpp index 280a14e..53c58f3 100644 --- a/src/Examples/SysDataNoLock.cpp +++ b/src/Examples/SysDataNoLock.cpp @@ -28,6 +28,7 @@ SysDataNoLock::SysDataNoLock() : SysDataNoLock::~SysDataNoLock() { SetSystemModeDelegate -= MakeDelegate(this, &SysDataNoLock::SetSystemModePrivate, workerThread2); + workerThread2.ExitThread(); } //---------------------------------------------------------------------------- diff --git a/src/Examples/SysDataNoLock.h b/src/Examples/SysDataNoLock.h index 0cec5c5..6b88060 100644 --- a/src/Examples/SysDataNoLock.h +++ b/src/Examples/SysDataNoLock.h @@ -36,6 +36,7 @@ class SysDataNoLock private: SysDataNoLock(); ~SysDataNoLock(); + SysDataNoLock(const SysDataNoLock&) = delete; /// Private callback to get the SetSystemMode call onto a common thread MulticastDelegateSafe SetSystemModeDelegate; diff --git a/src/main.cpp b/src/main.cpp index 1a241be..8d1e5d6 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -406,21 +406,12 @@ int main(void) // Run all target types example TestAllTargetTypes(); - Test t1, t2; - std::function f1 = std::bind(&Test::Func, &t1, std::placeholders::_1); - std::function f2 = std::bind(&Test::Func, &t2, std::placeholders::_1); - MulticastDelegateSafe safe; - safe += MakeDelegate(f1); - safe += MakeDelegate(f2); - safe -= MakeDelegate(f2); // Should remove f2, not f1! - - // Create a delegate bound to a free function then invoke - DelegateFree delegateFree = MakeDelegate(&FreeFuncInt); + auto delegateFree = MakeDelegate(&FreeFuncInt); delegateFree(123); // Create a delegate bound to a member function then invoke - DelegateMember delegateMember = MakeDelegate(&testClass, &TestClass::MemberFunc); + auto delegateMember = MakeDelegate(&testClass, &TestClass::MemberFunc); delegateMember(&testStruct); // Create a delegate bound to a member function. Assign and invoke from @@ -446,7 +437,7 @@ int main(void) // Any function with the signature "void Func(TestStruct*)". MulticastDelegate delegateB; - // Add a DelegateMember1 delegate to the container + // Add a DelegateMember delegate to the container delegateB += MakeDelegate(&testClass, &TestClass::MemberFunc); // Invoke the delegate target member function TestClass::MemberFunc() @@ -460,7 +451,7 @@ int main(void) // Any function with the signature "void Func(TestStruct*)". MulticastDelegateSafe delegateC; - // Add a DelegateMember1 delegate to the container that will invoke on workerThread1 + // Add a DelegateMember delegate to the container that will invoke on workerThread1 delegateC += MakeDelegate(&testClass, &TestClass::MemberFunc, workerThread1); // Asynchronously invoke the delegate target member function TestClass::MemberFunc() @@ -585,7 +576,6 @@ int main(void) delegateJ(testStructNoCopy); } - // Example of using std::shared_ptr function arguments with asynchrononous delegate. Using a // shared_ptr argument ensures that the argument T is not copied for each registered client. // Could be helpful if T is very large and two or more clients register to receive asynchronous @@ -608,7 +598,7 @@ int main(void) #endif // Begin lambda examples. Lambda captures not allowed if delegates used to invoke. - auto LambdaFunc1 = +[](int i) -> int + std::function LambdaFunc1 = [](int i) -> int { cout << "Called LambdaFunc1 " << i << std::endl; return ++i; @@ -663,6 +653,15 @@ int main(void) cout << "Asynchronous lambda result: " << valAsyncResult << endl; // End lambda examples + // Example shows std::function target limitations + Test t1, t2; + std::function f1 = std::bind(&Test::Func, &t1, std::placeholders::_1); + std::function f2 = std::bind(&Test::Func, &t2, std::placeholders::_1); + MulticastDelegateSafe safe; + safe += MakeDelegate(f1); + safe += MakeDelegate(f2); + safe -= MakeDelegate(f2); // Should remove f2, not f1! + // Create a SysDataClient instance on the stack SysDataClient sysDataClient; diff --git a/tests/UnitTests/DelegateAsyncWait_UT.cpp b/tests/UnitTests/DelegateAsyncWait_UT.cpp index 69d5a66..7613a52 100644 --- a/tests/UnitTests/DelegateAsyncWait_UT.cpp +++ b/tests/UnitTests/DelegateAsyncWait_UT.cpp @@ -95,7 +95,7 @@ static void DelegateMemberSpAsyncWaitTests() { auto testClass1 = std::make_shared(); - DelegateMemberSpAsyncWait delegate1(testClass1, &TestClass1::MemberFuncInt1, workerThread); + DelegateMemberAsyncWait delegate1(testClass1, &TestClass1::MemberFuncInt1, workerThread); delegate1(TEST_INT); ASSERT_TRUE(delegate1.IsSuccess()); @@ -104,7 +104,7 @@ static void DelegateMemberSpAsyncWaitTests() ASSERT_TRUE(!delegate1.Empty()); ASSERT_TRUE(!delegate2.Empty()); - DelegateMemberSpAsyncWait delegate3(testClass1, &TestClass1::MemberFuncInt1, workerThread); + DelegateMemberAsyncWait delegate3(testClass1, &TestClass1::MemberFuncInt1, workerThread); delegate3 = delegate1; ASSERT_TRUE(delegate3 == delegate1); ASSERT_TRUE(delegate3); @@ -120,7 +120,7 @@ static void DelegateMemberSpAsyncWaitTests() ASSERT_TRUE(!delegate5.Empty()); ASSERT_TRUE(delegate1.Empty()); - DelegateMemberSpAsyncWait delegate6(testClass1, &TestClass1::MemberFuncInt1, workerThread); + DelegateMemberAsyncWait delegate6(testClass1, &TestClass1::MemberFuncInt1, workerThread); delegate6 = std::move(delegate2); ASSERT_TRUE(!delegate6.Empty()); ASSERT_TRUE(delegate2.Empty()); @@ -128,7 +128,7 @@ static void DelegateMemberSpAsyncWaitTests() DelegateFunction other; ASSERT_TRUE(!(delegate6 == other)); - DelegateMemberSpAsyncWait delegate7(testClass1, &TestClass1::MemberFuncInt1, workerThread, std::chrono::milliseconds(0)); + DelegateMemberAsyncWait delegate7(testClass1, &TestClass1::MemberFuncInt1, workerThread, std::chrono::milliseconds(0)); auto success = delegate7.AsyncInvoke(TEST_INT); //ASSERT_TRUE(!success.has_value()); } diff --git a/tests/UnitTests/DelegateAsync_UT.cpp b/tests/UnitTests/DelegateAsync_UT.cpp index 1e2d4e7..8336acb 100644 --- a/tests/UnitTests/DelegateAsync_UT.cpp +++ b/tests/UnitTests/DelegateAsync_UT.cpp @@ -85,7 +85,7 @@ static void DelegateMemberSpAsyncTests() { auto testClass1 = std::make_shared(); - DelegateMemberSpAsync delegate1(testClass1, &TestClass1::MemberFuncInt1, workerThread); + DelegateMemberAsync delegate1(testClass1, &TestClass1::MemberFuncInt1, workerThread); delegate1(TEST_INT); auto delegate2 = delegate1; @@ -93,7 +93,7 @@ static void DelegateMemberSpAsyncTests() ASSERT_TRUE(!delegate1.Empty()); ASSERT_TRUE(!delegate2.Empty()); - DelegateMemberSpAsync delegate3(testClass1, &TestClass1::MemberFuncInt1, workerThread); + DelegateMemberAsync delegate3(testClass1, &TestClass1::MemberFuncInt1, workerThread); delegate3 = delegate1; ASSERT_TRUE(delegate3 == delegate1); ASSERT_TRUE(delegate3); @@ -109,7 +109,7 @@ static void DelegateMemberSpAsyncTests() ASSERT_TRUE(!delegate5.Empty()); ASSERT_TRUE(delegate1.Empty()); - DelegateMemberSpAsync delegate6(testClass1, &TestClass1::MemberFuncInt1, workerThread); + DelegateMemberAsync delegate6(testClass1, &TestClass1::MemberFuncInt1, workerThread); delegate6 = std::move(delegate2); ASSERT_TRUE(!delegate6.Empty()); ASSERT_TRUE(delegate2.Empty()); diff --git a/tests/UnitTests/Delegate_UT.cpp b/tests/UnitTests/Delegate_UT.cpp index 9bd94c0..a95ad17 100644 --- a/tests/UnitTests/Delegate_UT.cpp +++ b/tests/UnitTests/Delegate_UT.cpp @@ -83,7 +83,7 @@ static void DelegateMemberSpTests() { auto testClass1 = std::make_shared(); - DelegateMemberSp delegate1(testClass1, &TestClass1::MemberFuncInt1); + DelegateMember delegate1(testClass1, &TestClass1::MemberFuncInt1); delegate1(TEST_INT); auto delegate2 = delegate1; @@ -91,7 +91,7 @@ static void DelegateMemberSpTests() ASSERT_TRUE(!delegate1.Empty()); ASSERT_TRUE(!delegate2.Empty()); - DelegateMemberSp delegate3; + DelegateMember delegate3; delegate3 = delegate1; ASSERT_TRUE(delegate3 == delegate1); ASSERT_TRUE(delegate3); @@ -107,7 +107,7 @@ static void DelegateMemberSpTests() ASSERT_TRUE(!delegate5.Empty()); ASSERT_TRUE(delegate1.Empty()); - DelegateMemberSp delegate6; + DelegateMember delegate6; delegate6 = std::move(delegate2); ASSERT_TRUE(!delegate6.Empty()); ASSERT_TRUE(delegate2.Empty()); From 3c352f62cd2289de7bdc9541fa6dc8ad1b217657 Mon Sep 17 00:00:00 2001 From: "BOOK-0CD3P8P8FE\\endur" Date: Mon, 16 Dec 2024 08:47:23 -0800 Subject: [PATCH 4/4] Update doxygen --- doxygen/html/_delegate_8h.html | 13 +- doxygen/html/_delegate_8h.js | 3 +- doxygen/html/_delegate_8h_source.html | 703 ++++---- doxygen/html/_delegate_async_8h.html | 11 +- doxygen/html/_delegate_async_8h.js | 3 +- doxygen/html/_delegate_async_8h_source.html | 1252 ++++++-------- doxygen/html/_delegate_async_wait_8h.html | 11 +- doxygen/html/_delegate_async_wait_8h.js | 3 +- .../html/_delegate_async_wait_8h_source.html | 1524 ++++++++--------- doxygen/html/annotated.html | 48 +- doxygen/html/annotated_dup.js | 6 - ...gate_3_01_ret_type_07_args_8_8_8_08_4.html | 27 +- ...egate_3_01_ret_type_07_args_8_8_8_08_4.png | Bin 6930 -> 5828 bytes .../class_delegate_lib_1_1_delegate_base.html | 27 +- .../class_delegate_lib_1_1_delegate_base.png | Bin 6940 -> 5837 bytes ...1_ret_type_07_args_8_8_8_08_4-members.html | 2 +- ...sync_3_01_ret_type_07_args_8_8_8_08_4.html | 16 +- ..._async_3_01_ret_type_07_args_8_8_8_08_4.js | 2 +- ...wait_3_01_ret_type_07_args_8_8_8_08_4.html | 2 +- ...1_ret_type_07_args_8_8_8_08_4-members.html | 33 +- ...sync_3_01_ret_type_07_args_8_8_8_08_4.html | 60 +- ..._async_3_01_ret_type_07_args_8_8_8_08_4.js | 3 +- ...1_ret_type_07_args_8_8_8_08_4-members.html | 8 +- ...wait_3_01_ret_type_07_args_8_8_8_08_4.html | 81 +- ...c_wait_3_01_ret_type_07_args_8_8_8_08_4.js | 1 + ...1_ret_type_07_args_8_8_8_08_4-members.html | 7 +- ...ass_00_01_ret_type_07_args_8_8_8_08_4.html | 208 ++- ...class_00_01_ret_type_07_args_8_8_8_08_4.js | 5 + ...1_ret_type_07_args_8_8_8_08_4-members.html | 41 +- ...ass_00_01_ret_type_07_args_8_8_8_08_4.html | 294 +++- ...class_00_01_ret_type_07_args_8_8_8_08_4.js | 8 +- ...1_ret_type_07_args_8_8_8_08_4-members.html | 80 +- ...ass_00_01_ret_type_07_args_8_8_8_08_4.html | 370 +++- ...class_00_01_ret_type_07_args_8_8_8_08_4.js | 6 + ...s_delegate_lib_1_1_i_delegate_invoker.html | 16 +- ...ss_delegate_lib_1_1_i_delegate_invoker.png | Bin 4243 -> 3555 bytes doxygen/html/classes.html | 2 +- doxygen/html/doxygen_crawl.html | 116 +- doxygen/html/functions.html | 4 +- doxygen/html/functions_b.html | 4 +- doxygen/html/functions_c.html | 8 +- doxygen/html/functions_d.html | 11 +- doxygen/html/functions_e.html | 2 +- doxygen/html/functions_func.html | 4 +- doxygen/html/functions_func_b.html | 2 +- doxygen/html/functions_func_c.html | 4 +- doxygen/html/functions_func_d.html | 11 +- doxygen/html/functions_func_e.html | 2 +- doxygen/html/functions_func_g.html | 6 +- doxygen/html/functions_func_i.html | 2 +- doxygen/html/functions_func_o.html | 8 +- doxygen/html/functions_func_s.html | 2 +- doxygen/html/functions_g.html | 6 +- doxygen/html/functions_i.html | 2 +- doxygen/html/functions_m.html | 2 +- doxygen/html/functions_o.html | 10 +- doxygen/html/functions_s.html | 3 +- doxygen/html/functions_type.html | 15 +- doxygen/html/hierarchy.html | 81 +- doxygen/html/hierarchy.js | 11 +- doxygen/html/menudata.js | 3 +- doxygen/html/namespace_delegate_lib.html | 71 +- doxygen/html/namespace_delegate_lib.js | 12 +- doxygen/html/navtreedata.js | 5 +- doxygen/html/navtreeindex0.js | 52 +- doxygen/html/navtreeindex1.js | 408 ++--- doxygen/html/navtreeindex2.js | 331 ++-- doxygen/html/search/all_0.js | 4 +- doxygen/html/search/all_1.js | 4 +- doxygen/html/search/all_2.js | 8 +- doxygen/html/search/all_3.js | 32 +- doxygen/html/search/all_4.js | 2 +- doxygen/html/search/all_6.js | 6 +- doxygen/html/search/all_8.js | 2 +- doxygen/html/search/all_a.js | 4 +- doxygen/html/search/all_b.js | 10 +- doxygen/html/search/all_d.js | 17 +- doxygen/html/search/classes_0.js | 10 +- doxygen/html/search/functions_0.js | 4 +- doxygen/html/search/functions_1.js | 2 +- doxygen/html/search/functions_2.js | 4 +- doxygen/html/search/functions_3.js | 19 +- doxygen/html/search/functions_4.js | 2 +- doxygen/html/search/functions_5.js | 6 +- doxygen/html/search/functions_7.js | 2 +- doxygen/html/search/functions_8.js | 2 +- doxygen/html/search/functions_9.js | 8 +- doxygen/html/search/functions_b.js | 2 +- doxygen/html/search/searchdata.js | 2 +- doxygen/html/search/typedefs_0.js | 2 +- doxygen/html/search/typedefs_1.js | 4 +- doxygen/html/search/typedefs_3.js | 2 +- doxygen/html/search/typedefs_4.js | 2 +- doxygen/html/search/typedefs_5.js | 2 +- doxygen/html/search/typedefs_6.js | 4 + src/Delegate/DelegateAsync.h | 9 +- src/Delegate/DelegateAsyncWait.h | 18 +- 97 files changed, 3325 insertions(+), 2944 deletions(-) create mode 100644 doxygen/html/search/typedefs_6.js diff --git a/doxygen/html/_delegate_8h.html b/doxygen/html/_delegate_8h.html index c945e17..ad8aa5e 100644 --- a/doxygen/html/_delegate_8h.html +++ b/doxygen/html/_delegate_8h.html @@ -124,10 +124,7 @@  DelegateFree<> class synchronously invokes a free target function. More...
  class  DelegateLib::DelegateMember< TClass, RetType(Args...)>DelegateMember<> class synchronously invokes a class member target function using a class object pointer. More...
-  -class  DelegateLib::DelegateMemberSp< TClass, RetType(Args...)>DelegateMemberSp<> class synchronously invokes a class member target function using a std::shared_ptr object. More...
DelegateMember<> class synchronously invokes a class member target function using a class object pointer or shared pointer. More...
  class  DelegateLib::DelegateFunction< RetType(Args...)>  DelegateFunction<> class synchronously invokes a std::function target function. More...
@@ -148,10 +145,10 @@ DelegateMember< TClass, RetType(Args...)> DelegateLib::MakeDelegate (TClass *object, RetType(TClass::*func)(Args... args))  Creates a delegate that binds to a non-const member function.
  -template<class TClass , class RetType , class... Args> -DelegateMemberSp< TClass, RetType(Args...)> DelegateLib::MakeDelegate (std::shared_ptr< TClass > object, RetType(TClass::*func)(Args... args)) - Creates a delegate that binds to a non-const member function with a shared pointer to the object.
-  +template<class TClass , class RetType , class... Args> +DelegateMember< TClass, RetType(Args...)> DelegateLib::MakeDelegate (std::shared_ptr< TClass > object, RetType(TClass::*func)(Args... args)) + Creates a delegate that binds to a non-const member function with a shared pointer to the object.
+  template<class RetType , class... Args> DelegateFunction< RetType(Args...)> DelegateLib::MakeDelegate (std::function< RetType(Args...)> func)  Creates a delegate that binds to a std::function.
diff --git a/doxygen/html/_delegate_8h.js b/doxygen/html/_delegate_8h.js index 3e6fd87..c6e4aa9 100644 --- a/doxygen/html/_delegate_8h.js +++ b/doxygen/html/_delegate_8h.js @@ -4,10 +4,9 @@ var _delegate_8h = [ "DelegateLib::Delegate< RetType(Args...)>", "class_delegate_lib_1_1_delegate_3_01_ret_type_07_args_8_8_8_08_4.html", "class_delegate_lib_1_1_delegate_3_01_ret_type_07_args_8_8_8_08_4" ], [ "DelegateLib::DelegateFree< RetType(Args...)>", "class_delegate_lib_1_1_delegate_free_3_01_ret_type_07_args_8_8_8_08_4.html", "class_delegate_lib_1_1_delegate_free_3_01_ret_type_07_args_8_8_8_08_4" ], [ "DelegateLib::DelegateMember< TClass, RetType(Args...)>", "class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html", "class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4" ], - [ "DelegateLib::DelegateMemberSp< TClass, RetType(Args...)>", "class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html", "class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4" ], [ "DelegateLib::DelegateFunction< RetType(Args...)>", "class_delegate_lib_1_1_delegate_function_3_01_ret_type_07_args_8_8_8_08_4.html", "class_delegate_lib_1_1_delegate_function_3_01_ret_type_07_args_8_8_8_08_4" ], [ "MakeDelegate", "_delegate_8h.html#a75ff1e13f1cb691402002bfccaf9d1b2", null ], [ "MakeDelegate", "_delegate_8h.html#a7616e4b38fca0742748de407497d12c6", null ], - [ "MakeDelegate", "_delegate_8h.html#a23f0516caa72547787911fd0f0fc9c1b", null ], + [ "MakeDelegate", "_delegate_8h.html#a739d90362b129b98ba2c5a626d655c6a", null ], [ "MakeDelegate", "_delegate_8h.html#a388d9eb1fda04113138b8be61dc94650", null ] ]; \ No newline at end of file diff --git a/doxygen/html/_delegate_8h_source.html b/doxygen/html/_delegate_8h_source.html index 0729614..d12e7b2 100644 --- a/doxygen/html/_delegate_8h_source.html +++ b/doxygen/html/_delegate_8h_source.html @@ -160,7 +160,7 @@
86
92 DelegateFree(const ClassType& rhs) { Assign(rhs); }
93
-
96 DelegateFree(ClassType&& rhs) noexcept : m_func(rhs.m_func) { }
+
96 DelegateFree(ClassType&& rhs) noexcept : m_func(rhs.m_func) { rhs.Clear(); }
97
99 DelegateFree() = default;
100
@@ -194,356 +194,284 @@
141
-
145 ClassType& operator=(ClassType&& rhs) noexcept {
-
146 if (&rhs != this) {
-
147 m_func = rhs.m_func;
-
148 }
-
149 return *this;
-
150 }
-
-
151
-
-
155 virtual bool operator==(const DelegateBase& rhs) const override {
-
156 auto derivedRhs = dynamic_cast<const ClassType*>(&rhs);
-
157 return derivedRhs &&
-
158 m_func == derivedRhs->m_func;
-
159 }
-
-
160
-
163 bool Empty() const noexcept { return !m_func; }
-
164
-
167 void Clear() noexcept { m_func = nullptr; }
-
168
-
171 explicit operator bool() const noexcept { return !Empty(); }
-
172
-
173private:
-
175 FreeFunc m_func = nullptr;
-
176};
- -
177
-
178template <class C, class R>
-
179struct DelegateMember; // Not defined
-
180
-
186template <class TClass, class RetType, class... Args>
-
-
187class DelegateMember<TClass, RetType(Args...)> : public Delegate<RetType(Args...)> {
-
188public:
-
189 typedef TClass* ObjectPtr;
-
190 typedef RetType(TClass::*MemberFunc)(Args...);
-
191 typedef RetType(TClass::*ConstMemberFunc)(Args...) const;
-
192 using ClassType = DelegateMember<TClass, RetType(Args...)>;
-
193
-
197 DelegateMember(ObjectPtr object, MemberFunc func) { Bind(object, func); }
-
198
-
202 DelegateMember(ObjectPtr object, ConstMemberFunc func) { Bind(object, func); }
-
203
-
209 DelegateMember(const ClassType& rhs) { Assign(rhs); }
+
145 ClassType& operator=(ClassType&& rhs) noexcept {
+
146 if (&rhs != this) {
+
147 m_func = rhs.m_func;
+
148 rhs.Clear();
+
149 }
+
150 return *this;
+
151 }
+
+
152
+
+
156 virtual bool operator==(const DelegateBase& rhs) const override {
+
157 auto derivedRhs = dynamic_cast<const ClassType*>(&rhs);
+
158 return derivedRhs &&
+
159 m_func == derivedRhs->m_func;
+
160 }
+
+
161
+
164 bool Empty() const noexcept { return !m_func; }
+
165
+
168 void Clear() noexcept { m_func = nullptr; }
+
169
+
172 explicit operator bool() const noexcept { return !Empty(); }
+
173
+
174private:
+
176 FreeFunc m_func = nullptr;
+
177};
+ +
178
+
179template <class C, class R>
+
180struct DelegateMember; // Not defined
+
181
+
187template <class TClass, class RetType, class... Args>
+
+
188class DelegateMember<TClass, RetType(Args...)> : public Delegate<RetType(Args...)> {
+
189public:
+
190 typedef TClass* ObjectPtr;
+
191 typedef std::shared_ptr<TClass> SharedPtr;
+
192 typedef RetType(TClass::* MemberFunc)(Args...);
+
193 typedef RetType(TClass::* ConstMemberFunc)(Args...) const;
+
194 using ClassType = DelegateMember<TClass, RetType(Args...)>;
+
195
+
199 DelegateMember(SharedPtr object, MemberFunc func) { Bind(object, func); }
+
200
+
204 DelegateMember(SharedPtr object, ConstMemberFunc func) { Bind(object, func); }
+
205
+
209 DelegateMember(ObjectPtr object, MemberFunc func) { Bind(object, func); }
210
-
213 DelegateMember(ClassType&& rhs) noexcept : m_object(rhs.m_object), m_func(rhs.m_func) { }
-
214
-
216 DelegateMember() = default;
-
217
-
-
224 void Bind(ObjectPtr object, MemberFunc func) {
-
225 m_object = object;
-
226 m_func = func;
-
227 }
-
-
228
-
-
235 void Bind(ObjectPtr object, ConstMemberFunc func) {
-
236 m_object = object;
-
237 m_func = reinterpret_cast<MemberFunc>(func);
-
238 }
-
-
239
-
-
245 virtual ClassType* Clone() const override {
-
246 return new ClassType(*this);
-
247 }
-
-
248
-
-
253 void Assign(const ClassType& rhs) {
-
254 m_object = rhs.m_object;
-
255 m_func = rhs.m_func;
-
256 }
-
-
257
-
-
261 virtual RetType operator()(Args... args) override {
-
262 return std::invoke(m_func, m_object, std::forward<Args>(args)...);
-
263 }
-
-
264
-
- -
269 if (&rhs != this) {
-
270 Assign(rhs);
-
271 }
-
272 return *this;
-
273 }
-
-
274
-
-
278 ClassType& operator=(ClassType&& rhs) noexcept {
-
279 if (&rhs != this) {
-
280 m_object = rhs.m_object;
-
281 m_func = rhs.m_func;
-
282 }
-
283 return *this;
-
284 }
-
-
285
+
214 DelegateMember(ObjectPtr object, ConstMemberFunc func) { Bind(object, func); }
+
215
+
221 DelegateMember(const ClassType& rhs) { Assign(rhs); }
+
222
+
225 DelegateMember(ClassType&& rhs) noexcept : m_object(rhs.m_object), m_func(rhs.m_func) { rhs.Clear(); }
+
226
+
228 DelegateMember() = default;
+
229
+
+
236 void Bind(SharedPtr object, MemberFunc func) {
+
237 m_object = object;
+
238 m_func = func;
+
239 }
+
+
240
+
+
247 void Bind(SharedPtr object, ConstMemberFunc func) {
+
248 m_object = object;
+
249 m_func = reinterpret_cast<MemberFunc>(func);
+
250 }
+
+
251
+
+
258 void Bind(ObjectPtr object, MemberFunc func) {
+
259 auto deleter = [](TClass*) {}; // No-op deleter
+
260 m_object = std::shared_ptr<TClass>(object, deleter); // Not deleted when out of scope
+
261 m_func = func;
+
262 }
+
+
263
+
+
270 void Bind(ObjectPtr object, ConstMemberFunc func) {
+
271 auto deleter = [](TClass*) {}; // No-op deleter
+
272 m_object = std::shared_ptr<TClass>(object, deleter); // Not deleted when out of scope
+
273 m_func = reinterpret_cast<MemberFunc>(func);
+
274 }
+
+
275
+
+
281 virtual ClassType* Clone() const override {
+
282 return new ClassType(*this);
+
283 }
+
+
284
-
289 virtual bool operator==(const DelegateBase& rhs) const override {
-
290 auto derivedRhs = dynamic_cast<const ClassType*>(&rhs);
-
291 return derivedRhs &&
-
292 m_func == derivedRhs->m_func &&
-
293 m_object == derivedRhs->m_object;
-
294 }
-
-
295
-
298 bool Empty() const noexcept { return !(m_object && m_func); }
-
299
-
302 void Clear() noexcept { m_object = nullptr; m_func = nullptr; }
-
303
-
306 explicit operator bool() const noexcept { return !Empty(); }
-
307
-
308private:
-
310 ObjectPtr m_object = nullptr;
-
311
-
313 MemberFunc m_func = nullptr;
-
314};
-
-
315
-
316template <class C, class R>
-
317struct DelegateMemberSp; // Not defined
-
318
-
324template <class TClass, class RetType, class... Args>
-
-
325class DelegateMemberSp<TClass, RetType(Args...)> : public Delegate<RetType(Args...)> {
-
326public:
-
327 typedef std::shared_ptr<TClass> ObjectPtr;
-
328 typedef RetType(TClass::* MemberFunc)(Args...);
-
329 typedef RetType(TClass::* ConstMemberFunc)(Args...) const;
-
330 using ClassType = DelegateMemberSp<TClass, RetType(Args...)>;
-
331
-
335 DelegateMemberSp(ObjectPtr object, MemberFunc func) { Bind(object, func); }
+
289 void Assign(const ClassType& rhs) {
+
290 m_object = rhs.m_object;
+
291 m_func = rhs.m_func;
+
292 }
+
+
293
+
+
297 virtual RetType operator()(Args... args) override {
+
298 return std::invoke(m_func, m_object, std::forward<Args>(args)...);
+
299 }
+
+
300
+
+ +
305 if (&rhs != this) {
+
306 Assign(rhs);
+
307 }
+
308 return *this;
+
309 }
+
+
310
+
+
314 ClassType& operator=(ClassType&& rhs) noexcept {
+
315 if (&rhs != this) {
+
316 m_object = rhs.m_object;
+
317 m_func = rhs.m_func;
+
318 rhs.Clear();
+
319 }
+
320 return *this;
+
321 }
+
+
322
+
+
326 virtual bool operator==(const DelegateBase& rhs) const override {
+
327 auto derivedRhs = dynamic_cast<const ClassType*>(&rhs);
+
328 return derivedRhs &&
+
329 m_func == derivedRhs->m_func &&
+
330 m_object == derivedRhs->m_object;
+
331 }
+
+
332
+
335 bool Empty() const noexcept { return !(m_object && m_func); }
336
-
340 DelegateMemberSp(ObjectPtr object, ConstMemberFunc func) { Bind(object, func); }
-
341
-
347 DelegateMemberSp(const ClassType& rhs) { Assign(rhs); }
+
339 void Clear() noexcept { m_object = nullptr; m_func = nullptr; }
+
340
+
343 explicit operator bool() const noexcept { return !Empty(); }
+
344
+
345private:
+
347 SharedPtr m_object = nullptr;
348
-
351 DelegateMemberSp(ClassType&& rhs) noexcept : m_object(rhs.m_object), m_func(rhs.m_func) { }
+
350 MemberFunc m_func = nullptr;
+
351};
+
352
-
354 DelegateMemberSp() = default;
+
353template <class R>
+
354class DelegateFunction; // Not defined
355
-
-
362 void Bind(ObjectPtr object, MemberFunc func) {
-
363 m_object = object;
-
364 m_func = func;
-
365 }
-
-
366
-
-
373 void Bind(ObjectPtr object, ConstMemberFunc func) {
-
374 m_object = object;
-
375 m_func = reinterpret_cast<MemberFunc>(func);
-
376 }
-
-
377
-
-
383 virtual ClassType* Clone() const override {
-
384 return new ClassType(*this);
-
385 }
-
+
377template <class RetType, class... Args>
+
+
378class DelegateFunction<RetType(Args...)> : public Delegate<RetType(Args...)> {
+
379public:
+
380 using FunctionType = std::function<RetType(Args...)>;
+
381 using ClassType = DelegateFunction<RetType(Args...)>;
+
382
+
385 DelegateFunction(FunctionType func) { Bind(func); }
386
-
-
391 void Assign(const ClassType& rhs) {
-
392 m_object = rhs.m_object;
-
393 m_func = rhs.m_func;
-
394 }
-
-
395
-
-
399 virtual RetType operator()(Args... args) override {
-
400 return std::invoke(m_func, m_object, std::forward<Args>(args)...);
-
401 }
-
-
402
+
392 DelegateFunction(const ClassType& rhs) { Assign(rhs); }
+
393
+
396 DelegateFunction(ClassType&& rhs) noexcept : m_func(rhs.m_func) { rhs.Clear(); }
+
397
+
399 DelegateFunction() = default;
+
400
- -
407 if (&rhs != this) {
-
408 Assign(rhs);
-
409 }
-
410 return *this;
-
411 }
-
-
412
-
-
416 ClassType& operator=(ClassType&& rhs) noexcept {
-
417 if (&rhs != this) {
-
418 m_object = rhs.m_object;
-
419 m_func = rhs.m_func;
-
420 }
-
421 return *this;
-
422 }
-
-
423
-
-
427 virtual bool operator==(const DelegateBase& rhs) const override {
-
428 auto derivedRhs = dynamic_cast<const ClassType*>(&rhs);
-
429 return derivedRhs &&
-
430 m_func == derivedRhs->m_func &&
-
431 m_object == derivedRhs->m_object;
+
406 void Bind(FunctionType func) {
+
407 m_func = func;
+
408 }
+
+
409
+
+
415 virtual ClassType* Clone() const override {
+
416 return new ClassType(*this);
+
417 }
+
+
418
+
+
423 void Assign(const ClassType& rhs) {
+
424 m_func = rhs.m_func;
+
425 }
+
+
426
+
+
430 virtual RetType operator()(Args... args) override {
+
431 return m_func(std::forward<Args>(args)...);
432 }
433
-
436 bool Empty() const noexcept { return !(m_object && m_func); }
-
437
-
440 void Clear() noexcept { m_object = nullptr; m_func = nullptr; }
-
441
-
444 explicit operator bool() const noexcept { return !Empty(); }
-
445
-
446private:
-
448 ObjectPtr m_object = nullptr;
-
449
-
451 MemberFunc m_func = nullptr;
-
452};
-
-
453
-
454template <class R>
-
455class DelegateFunction; // Not defined
-
456
-
478template <class RetType, class... Args>
-
-
479class DelegateFunction<RetType(Args...)> : public Delegate<RetType(Args...)> {
-
480public:
-
481 using FunctionType = std::function<RetType(Args...)>;
-
482 using ClassType = DelegateFunction<RetType(Args...)>;
-
483
-
486 DelegateFunction(FunctionType func) { Bind(func); }
-
487
-
493 DelegateFunction(const ClassType& rhs) { Assign(rhs); }
-
494
-
497 DelegateFunction(ClassType&& rhs) noexcept : m_func(rhs.m_func) { }
-
498
-
500 DelegateFunction() = default;
-
501
-
-
507 void Bind(FunctionType func) {
-
508 m_func = func;
-
509 }
-
-
510
-
-
516 virtual ClassType* Clone() const override {
-
517 return new ClassType(*this);
-
518 }
-
-
519
-
-
524 void Assign(const ClassType& rhs) {
-
525 m_func = rhs.m_func;
-
526 }
-
-
527
-
-
531 virtual RetType operator()(Args... args) override {
-
532 return m_func(std::forward<Args>(args)...);
-
533 }
-
-
534
-
- -
539 if (&rhs != this) {
-
540 Assign(rhs);
-
541 }
-
542 return *this;
-
543 }
-
-
544
-
-
548 ClassType& operator=(ClassType&& rhs) noexcept {
-
549 if (&rhs != this) {
-
550 m_func = rhs.m_func;
-
551 }
-
552 return *this;
-
553 }
-
-
554
-
-
558 virtual bool operator==(const DelegateBase& rhs) const override {
-
559 auto derivedRhs = dynamic_cast<const ClassType*>(&rhs);
-
560 if (derivedRhs) {
-
561 // If both delegates are empty, they are equal
-
562 if (Empty() && derivedRhs->Empty())
-
563 return true;
-
564
-
565 if (m_func && derivedRhs->m_func)
-
566 return m_func.target_type() == derivedRhs->m_func.target_type();
-
567
-
568 return false;
-
569 }
-
570
-
571 return false; // Return false if dynamic cast failed
-
572 }
-
-
573
-
576 bool Empty() const noexcept { return !m_func; }
-
577
-
580 void Clear() noexcept { m_func = nullptr; }
-
581
-
584 explicit operator bool() const noexcept { return !Empty(); }
-
585
-
586private:
-
588 FunctionType m_func;
-
589};
-
-
590
-
596template <class RetType, class... Args>
-
-
597DelegateFree<RetType(Args...)> MakeDelegate(RetType(*func)(Args... args)) {
-
598 return DelegateFree<RetType(Args...)>(func);
-
599}
-
-
600
-
608template <class TClass, class RetType, class... Args>
-
-
609DelegateMember<TClass, RetType(Args...)> MakeDelegate(TClass* object, RetType(TClass::*func)(Args... args)) {
-
610 return DelegateMember<TClass, RetType(Args...)>(object, func);
-
611}
-
-
612
-
620template <class TClass, class RetType, class... Args>
-
621DelegateMember<TClass, RetType(Args...)> MakeDelegate(TClass* object, RetType(TClass::*func)(Args... args) const) {
-
622 return DelegateMember<TClass, RetType(Args...)>(object, func);
-
623}
-
624
-
632template <class TClass, class RetType, class... Args>
-
-
633DelegateMemberSp<TClass, RetType(Args...)> MakeDelegate(std::shared_ptr<TClass> object, RetType(TClass::* func)(Args... args)) {
-
634 return DelegateMemberSp<TClass, RetType(Args...)>(object, func);
-
635}
-
-
636
-
644template <class TClass, class RetType, class... Args>
-
645DelegateMemberSp<TClass, RetType(Args...)> MakeDelegate(std::shared_ptr<TClass> object, RetType(TClass::* func)(Args... args) const) {
-
646 return DelegateMemberSp<TClass, RetType(Args...)>(object, func);
-
647}
-
648
-
654template <class RetType, class... Args>
-
-
655DelegateFunction<RetType(Args...)> MakeDelegate(std::function<RetType(Args...)> func) {
-
656 return DelegateFunction<RetType(Args...)>(func);
-
657}
-
-
658
-
659}
- -
660
-
661#endif
+
+ +
438 if (&rhs != this) {
+
439 Assign(rhs);
+
440 }
+
441 return *this;
+
442 }
+
+
443
+
+
447 ClassType& operator=(ClassType&& rhs) noexcept {
+
448 if (&rhs != this) {
+
449 m_func = rhs.m_func;
+
450 rhs.Clear();
+
451 }
+
452 return *this;
+
453 }
+
+
454
+
+
458 virtual bool operator==(const DelegateBase& rhs) const override {
+
459 auto derivedRhs = dynamic_cast<const ClassType*>(&rhs);
+
460 if (derivedRhs) {
+
461 // If both delegates are empty, they are equal
+
462 if (Empty() && derivedRhs->Empty())
+
463 return true;
+
464
+
465 if (m_func && derivedRhs->m_func)
+
466 return m_func.target_type() == derivedRhs->m_func.target_type();
+
467
+
468 return false;
+
469 }
+
470
+
471 return false; // Return false if dynamic cast failed
+
472 }
+
+
473
+
476 bool Empty() const noexcept { return !m_func; }
+
477
+
480 void Clear() noexcept { m_func = nullptr; }
+
481
+
484 explicit operator bool() const noexcept { return !Empty(); }
+
485
+
486private:
+
488 FunctionType m_func;
+
489};
+ +
490
+
496template <class RetType, class... Args>
+
+
497DelegateFree<RetType(Args...)> MakeDelegate(RetType(*func)(Args... args)) {
+
498 return DelegateFree<RetType(Args...)>(func);
+
499}
+
+
500
+
508template <class TClass, class RetType, class... Args>
+
+
509DelegateMember<TClass, RetType(Args...)> MakeDelegate(TClass* object, RetType(TClass::*func)(Args... args)) {
+
510 return DelegateMember<TClass, RetType(Args...)>(object, func);
+
511}
+
+
512
+
520template <class TClass, class RetType, class... Args>
+
521DelegateMember<TClass, RetType(Args...)> MakeDelegate(TClass* object, RetType(TClass::*func)(Args... args) const) {
+
522 return DelegateMember<TClass, RetType(Args...)>(object, func);
+
523}
+
524
+
532template <class TClass, class RetType, class... Args>
+
+
533DelegateMember<TClass, RetType(Args...)> MakeDelegate(std::shared_ptr<TClass> object, RetType(TClass::* func)(Args... args)) {
+
534 return DelegateMember<TClass, RetType(Args...)>(object, func);
+
535}
+
+
536
+
544template <class TClass, class RetType, class... Args>
+
545DelegateMember<TClass, RetType(Args...)> MakeDelegate(std::shared_ptr<TClass> object, RetType(TClass::* func)(Args... args) const) {
+
546 return DelegateMember<TClass, RetType(Args...)>(object, func);
+
547}
+
548
+
554template <class RetType, class... Args>
+
+
555DelegateFunction<RetType(Args...)> MakeDelegate(std::function<RetType(Args...)> func) {
+
556 return DelegateFunction<RetType(Args...)>(func);
+
557}
+
+
558
+
559}
+ +
560
+
561#endif
Delegate library options header file.
#define XALLOCATOR
Definition DelegateOpt.h:21
virtual RetType operator()(Args... args)=0
Invoke the bound callable function stored within the delegate instance.
@@ -555,9 +483,9 @@
DelegateFree<> class synchronously invokes a free target function.
Definition Delegate.h:78
DelegateFree(FreeFunc func)
Constructor to create a class instance.
Definition Delegate.h:85
DelegateFree(ClassType &&rhs) noexcept
Move constructor that transfers ownership of resources.
Definition Delegate.h:96
-
void Clear() noexcept
Clear the target function.
Definition Delegate.h:167
+
void Clear() noexcept
Clear the target function.
Definition Delegate.h:168
virtual RetType operator()(Args... args) override
Invoke the bound delegate function synchronously.
Definition Delegate.h:128
-
virtual bool operator==(const DelegateBase &rhs) const override
Compares two delegate objects for equality.
Definition Delegate.h:155
+
virtual bool operator==(const DelegateBase &rhs) const override
Compares two delegate objects for equality.
Definition Delegate.h:156
virtual ClassType * Clone() const override
Creates a copy of the current object.
Definition Delegate.h:113
void Bind(FreeFunc func)
Bind a free function to the delegate.
Definition Delegate.h:106
DelegateFree()=default
Default constructor creates an empty delegate.
@@ -565,63 +493,50 @@
DelegateFree(const ClassType &rhs)
Copy constructor that creates a copy of the given instance.
Definition Delegate.h:92
void Assign(const ClassType &rhs)
Assigns the state of one object to another.
Definition Delegate.h:121
ClassType & operator=(ClassType &&rhs) noexcept
Move assignment operator that transfers ownership of resources.
Definition Delegate.h:145
-
bool Empty() const noexcept
Check if the delegate is bound to a target function.
Definition Delegate.h:163
-
DelegateFunction<> class synchronously invokes a std::function target function.
Definition Delegate.h:479
-
DelegateFunction(const ClassType &rhs)
Copy constructor that creates a copy of the given instance.
Definition Delegate.h:493
-
virtual bool operator==(const DelegateBase &rhs) const override
Compares two delegate objects for equality.
Definition Delegate.h:558
-
DelegateFunction(FunctionType func)
Constructor to create a class instance.
Definition Delegate.h:486
-
ClassType & operator=(ClassType &&rhs) noexcept
Move assignment operator that transfers ownership of resources.
Definition Delegate.h:548
-
void Clear() noexcept
Clear the target function.
Definition Delegate.h:580
+
bool Empty() const noexcept
Check if the delegate is bound to a target function.
Definition Delegate.h:164
+
DelegateFunction<> class synchronously invokes a std::function target function.
Definition Delegate.h:378
+
DelegateFunction(const ClassType &rhs)
Copy constructor that creates a copy of the given instance.
Definition Delegate.h:392
+
virtual bool operator==(const DelegateBase &rhs) const override
Compares two delegate objects for equality.
Definition Delegate.h:458
+
DelegateFunction(FunctionType func)
Constructor to create a class instance.
Definition Delegate.h:385
+
ClassType & operator=(ClassType &&rhs) noexcept
Move assignment operator that transfers ownership of resources.
Definition Delegate.h:447
+
void Clear() noexcept
Clear the target function.
Definition Delegate.h:480
DelegateFunction()=default
Default constructor creates an empty delegate.
-
virtual RetType operator()(Args... args) override
Invoke the bound delegate function synchronously.
Definition Delegate.h:531
-
void Assign(const ClassType &rhs)
Assigns the state of one object to another.
Definition Delegate.h:524
-
bool Empty() const noexcept
Check if the delegate is bound to a target function.
Definition Delegate.h:576
-
std::function< RetType(Args...)> FunctionType
Definition Delegate.h:481
-
ClassType & operator=(const ClassType &rhs)
Assignment operator that assigns the state of one object to another.
Definition Delegate.h:538
-
void Bind(FunctionType func)
Bind a member function to the delegate.
Definition Delegate.h:507
-
DelegateFunction(ClassType &&rhs) noexcept
Move constructor that transfers ownership of resources.
Definition Delegate.h:497
-
virtual ClassType * Clone() const override
Creates a copy of the current object.
Definition Delegate.h:516
-
Definition Delegate.h:455
-
DelegateMember<> class synchronously invokes a class member target function using a class object poin...
Definition Delegate.h:187
-
void Bind(ObjectPtr object, MemberFunc func)
Bind a member function to the delegate.
Definition Delegate.h:224
-
void Bind(ObjectPtr object, ConstMemberFunc func)
Bind a const member function to the delegate.
Definition Delegate.h:235
-
DelegateMember(const ClassType &rhs)
Copy constructor that creates a copy of the given instance.
Definition Delegate.h:209
+
virtual RetType operator()(Args... args) override
Invoke the bound delegate function synchronously.
Definition Delegate.h:430
+
void Assign(const ClassType &rhs)
Assigns the state of one object to another.
Definition Delegate.h:423
+
bool Empty() const noexcept
Check if the delegate is bound to a target function.
Definition Delegate.h:476
+
std::function< RetType(Args...)> FunctionType
Definition Delegate.h:380
+
ClassType & operator=(const ClassType &rhs)
Assignment operator that assigns the state of one object to another.
Definition Delegate.h:437
+
void Bind(FunctionType func)
Bind a member function to the delegate.
Definition Delegate.h:406
+
DelegateFunction(ClassType &&rhs) noexcept
Move constructor that transfers ownership of resources.
Definition Delegate.h:396
+
virtual ClassType * Clone() const override
Creates a copy of the current object.
Definition Delegate.h:415
+
Definition Delegate.h:354
+
DelegateMember<> class synchronously invokes a class member target function using a class object poin...
Definition Delegate.h:188
+
void Bind(ObjectPtr object, MemberFunc func)
Bind a member function to the delegate.
Definition Delegate.h:258
+
void Bind(ObjectPtr object, ConstMemberFunc func)
Bind a const member function to the delegate.
Definition Delegate.h:270
+
DelegateMember(const ClassType &rhs)
Copy constructor that creates a copy of the given instance.
Definition Delegate.h:221
+
DelegateMember(SharedPtr object, MemberFunc func)
Constructor to create a class instance.
Definition Delegate.h:199
DelegateMember()=default
Default constructor creates an empty delegate.
-
DelegateMember(ClassType &&rhs) noexcept
Move constructor that transfers ownership of resources.
Definition Delegate.h:213
-
virtual bool operator==(const DelegateBase &rhs) const override
Compares two delegate objects for equality.
Definition Delegate.h:289
-
void Clear() noexcept
Clear the target function.
Definition Delegate.h:302
-
bool Empty() const noexcept
Check if the delegate is bound to a target function.
Definition Delegate.h:298
-
void Assign(const ClassType &rhs)
Assigns the state of one object to another.
Definition Delegate.h:253
-
DelegateMember(ObjectPtr object, ConstMemberFunc func)
Constructor to create a class instance.
Definition Delegate.h:202
-
DelegateMember(ObjectPtr object, MemberFunc func)
Constructor to create a class instance.
Definition Delegate.h:197
-
virtual RetType operator()(Args... args) override
Invoke the bound delegate function synchronously.
Definition Delegate.h:261
-
ClassType & operator=(const ClassType &rhs)
Assignment operator that assigns the state of one object to another.
Definition Delegate.h:268
-
ClassType & operator=(ClassType &&rhs) noexcept
Move assignment operator that transfers ownership of resources.
Definition Delegate.h:278
- -
virtual ClassType * Clone() const override
Creates a copy of the current object.
Definition Delegate.h:245
-
DelegateMemberSp<> class synchronously invokes a class member target function using a std::shared_ptr...
Definition Delegate.h:325
-
DelegateMemberSp()=default
Default constructor creates an empty delegate.
-
ClassType & operator=(const ClassType &rhs)
Assignment operator that assigns the state of one object to another.
Definition Delegate.h:406
-
DelegateMemberSp(ObjectPtr object, ConstMemberFunc func)
Constructor to create a class instance.
Definition Delegate.h:340
-
void Assign(const ClassType &rhs)
Assigns the state of one object to another.
Definition Delegate.h:391
-
virtual ClassType * Clone() const override
Creates a copy of the current object.
Definition Delegate.h:383
-
bool Empty() const noexcept
Check if the delegate is bound to a target function.
Definition Delegate.h:436
-
DelegateMemberSp(ObjectPtr object, MemberFunc func)
Constructor to create a class instance.
Definition Delegate.h:335
-
void Bind(ObjectPtr object, ConstMemberFunc func)
Bind a const member function to the delegate.
Definition Delegate.h:373
-
ClassType & operator=(ClassType &&rhs) noexcept
Move assignment operator that transfers ownership of resources.
Definition Delegate.h:416
-
std::shared_ptr< TClass > ObjectPtr
Definition Delegate.h:327
-
DelegateMemberSp(ClassType &&rhs) noexcept
Move constructor that transfers ownership of resources.
Definition Delegate.h:351
-
virtual bool operator==(const DelegateBase &rhs) const override
Compares two delegate objects for equality.
Definition Delegate.h:427
-
virtual RetType operator()(Args... args) override
Invoke the bound delegate function synchronously.
Definition Delegate.h:399
-
void Bind(ObjectPtr object, MemberFunc func)
Bind a member function to the delegate.
Definition Delegate.h:362
-
void Clear() noexcept
Clear the target function.
Definition Delegate.h:440
-
DelegateMemberSp(const ClassType &rhs)
Copy constructor that creates a copy of the given instance.
Definition Delegate.h:347
+
DelegateMember(ClassType &&rhs) noexcept
Move constructor that transfers ownership of resources.
Definition Delegate.h:225
+
void Bind(SharedPtr object, ConstMemberFunc func)
Bind a const member function to the delegate.
Definition Delegate.h:247
+
DelegateMember(SharedPtr object, ConstMemberFunc func)
Constructor to create a class instance.
Definition Delegate.h:204
+
std::shared_ptr< TClass > SharedPtr
Definition Delegate.h:191
+
virtual bool operator==(const DelegateBase &rhs) const override
Compares two delegate objects for equality.
Definition Delegate.h:326
+
void Clear() noexcept
Clear the target function.
Definition Delegate.h:339
+
void Bind(SharedPtr object, MemberFunc func)
Bind a member function to the delegate.
Definition Delegate.h:236
+
bool Empty() const noexcept
Check if the delegate is bound to a target function.
Definition Delegate.h:335
+
void Assign(const ClassType &rhs)
Assigns the state of one object to another.
Definition Delegate.h:289
+
DelegateMember(ObjectPtr object, ConstMemberFunc func)
Constructor to create a class instance.
Definition Delegate.h:214
+
DelegateMember(ObjectPtr object, MemberFunc func)
Constructor to create a class instance.
Definition Delegate.h:209
+
virtual RetType operator()(Args... args) override
Invoke the bound delegate function synchronously.
Definition Delegate.h:297
+
ClassType & operator=(const ClassType &rhs)
Assignment operator that assigns the state of one object to another.
Definition Delegate.h:304
+
ClassType & operator=(ClassType &&rhs) noexcept
Move assignment operator that transfers ownership of resources.
Definition Delegate.h:314
+ +
virtual ClassType * Clone() const override
Creates a copy of the current object.
Definition Delegate.h:281
Definition Delegate.h:18
-
DelegateFree< RetType(Args...)> MakeDelegate(RetType(*func)(Args... args))
Creates a delegate that binds to a free function.
Definition Delegate.h:597
+
DelegateFree< RetType(Args...)> MakeDelegate(RetType(*func)(Args... args))
Creates a delegate that binds to a free function.
Definition Delegate.h:497
Definition Delegate.h:72
Definition Delegate.h:51
-
Definition Delegate.h:179
-
Definition Delegate.h:317
+
Definition Delegate.h:180
diff --git a/doxygen/html/_delegate_async_8h.html b/doxygen/html/_delegate_async_8h.html index e2abebc..77c2ae8 100644 --- a/doxygen/html/_delegate_async_8h.html +++ b/doxygen/html/_delegate_async_8h.html @@ -124,9 +124,6 @@ class  DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>  DelegateMemberAsync<> class asynchronously invokes a class member target function. More...
  -class  DelegateLib::DelegateMemberSpAsync< TClass, RetType(Args...)>DelegateMemberSpAsync<> class asynchronously invokes a std::shared_ptr target function. More...
-  class  DelegateLib::DelegateFunctionAsync< RetType(Args...)>  DelegateFunctionAsync<> class asynchronously invokes a std::function target function. More...
  @@ -146,10 +143,10 @@ DelegateMemberAsync< TClass, RetType(Args...)> DelegateLib::MakeDelegate (TClass *object, RetType(TClass::*func)(Args... args), DelegateThread &thread)  Creates an asynchronous delegate that binds to a non-const member function.
  -template<class TClass , class RetVal , class... Args> -DelegateMemberSpAsync< TClass, RetVal(Args...)> DelegateLib::MakeDelegate (std::shared_ptr< TClass > object, RetVal(TClass::*func)(Args... args), DelegateThread &thread) - Creates an asynchronous delegate that binds to a non-const member function using a shared pointer.
-  +template<class TClass , class RetVal , class... Args> +DelegateMemberAsync< TClass, RetVal(Args...)> DelegateLib::MakeDelegate (std::shared_ptr< TClass > object, RetVal(TClass::*func)(Args... args), DelegateThread &thread) + Creates an asynchronous delegate that binds to a non-const member function using a shared pointer.
+  template<class RetType , class... Args> DelegateFunctionAsync< RetType(Args...)> DelegateLib::MakeDelegate (std::function< RetType(Args...)> func, DelegateThread &thread)  Creates an asynchronous delegate that binds to a std::function.
diff --git a/doxygen/html/_delegate_async_8h.js b/doxygen/html/_delegate_async_8h.js index 71fdaf7..134e780 100644 --- a/doxygen/html/_delegate_async_8h.js +++ b/doxygen/html/_delegate_async_8h.js @@ -3,10 +3,9 @@ var _delegate_async_8h = [ "DelegateLib::DelegateAsyncMsg< Args >", "class_delegate_lib_1_1_delegate_async_msg.html", "class_delegate_lib_1_1_delegate_async_msg" ], [ "DelegateLib::DelegateFreeAsync< RetType(Args...)>", "class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html", "class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4" ], [ "DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>", "class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html", "class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4" ], - [ "DelegateLib::DelegateMemberSpAsync< TClass, RetType(Args...)>", "class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html", "class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4" ], [ "DelegateLib::DelegateFunctionAsync< RetType(Args...)>", "class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html", "class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4" ], [ "MakeDelegate", "_delegate_async_8h.html#a577444f047f613a4869e76fad9064f05", null ], [ "MakeDelegate", "_delegate_async_8h.html#a8f614eab3c1d9527a3b3c1b006b4d6ee", null ], - [ "MakeDelegate", "_delegate_async_8h.html#a12cd186bad0206967705aa560e8e21a6", null ], + [ "MakeDelegate", "_delegate_async_8h.html#a5cc5695faac26dd65571b4ee1121b06c", null ], [ "MakeDelegate", "_delegate_async_8h.html#ad93c07a649cc918a05b19e8b351add0d", null ] ]; \ No newline at end of file diff --git a/doxygen/html/_delegate_async_8h_source.html b/doxygen/html/_delegate_async_8h_source.html index a0a7f0a..a052406 100644 --- a/doxygen/html/_delegate_async_8h_source.html +++ b/doxygen/html/_delegate_async_8h_source.html @@ -165,644 +165,526 @@
91 DelegateFreeAsync(ClassType&& rhs) noexcept :
92 BaseType(rhs), m_thread(rhs.m_thread) {
-
93 }
-
-
94
- -
96
-
-
103 void Bind(FreeFunc func, DelegateThread& thread) {
-
104 m_thread = thread;
-
105 BaseType::Bind(func);
-
106 }
-
-
107
-
108 // <common_code>
-
109
-
-
114 void Assign(const ClassType& rhs) {
-
115 m_thread = rhs.m_thread;
-
116 BaseType::Assign(rhs);
-
117 }
-
-
-
123 virtual ClassType* Clone() const override {
-
124 return new ClassType(*this);
-
125 }
-
-
126
-
- -
131 if (&rhs != this) {
-
132 BaseType::operator=(rhs);
-
133 Assign(rhs);
-
134 }
-
135 return *this;
-
136 }
-
-
137
-
-
141 ClassType& operator=(ClassType&& rhs) noexcept {
-
142 if (&rhs != this) {
-
143 BaseType::operator=(std::move(rhs));
-
144 m_thread = rhs.m_thread; // Use the resource
-
145 }
-
146 return *this;
-
147 }
-
-
148
-
-
152 virtual bool operator==(const DelegateBase& rhs) const override {
-
153 auto derivedRhs = dynamic_cast<const ClassType*>(&rhs);
-
154 return derivedRhs &&
-
155 &m_thread == &derivedRhs->m_thread &&
-
156 BaseType::operator==(rhs);
-
157 }
-
-
158
-
-
173 virtual RetType operator()(Args... args) override {
-
174 // Synchronously invoke the target function?
-
175 if (this->GetSync()) {
-
176 // Invoke the target function directly
-
177 return BaseType::operator()(std::forward<Args>(args)...);
-
178 } else {
-
179 // Create a clone instance of this delegate
-
180 auto delegate = std::shared_ptr<ClassType>(Clone());
-
181
-
182 // Create a new message instance for sending to the destination thread
-
183 auto msg = std::make_shared<DelegateAsyncMsg<Args...>>(delegate, std::forward<Args>(args)...);
-
184
-
185 // Dispatch message onto the callback destination thread. DelegateInvoke()
-
186 // will be called by the destintation thread.
-
187 GetThread().DispatchDelegate(msg);
-
188
-
189 // Do not wait for destination thread return value from async function call
-
190 return RetType();
-
191
-
192 // Check if any argument is a shared_ptr with wrong usage
-
193 // std::shared_ptr reference arguments are not allowed with asynchronous delegates as the behavior is
-
194 // undefined. In other words:
-
195 // void MyFunc(std::shared_ptr<T> data) // Ok!
-
196 // void MyFunc(std::shared_ptr<T>& data) // Error if DelegateAsync or DelegateSpAsync target!
-
197 static_assert(!(std::disjunction_v<is_shared_ptr<Args>...> &&
-
198 (std::disjunction_v<std::is_lvalue_reference<Args>, std::is_pointer<Args>> || ...)),
-
199 "std::shared_ptr reference argument not allowed");
-
200 }
-
201 }
-
-
202
-
-
206 void AsyncInvoke(Args... args) {
-
207 operator()(std::forward<Args>(args)...);
-
208 }
-
-
209
-
-
217 virtual void DelegateInvoke(std::shared_ptr<DelegateMsg> msg) {
-
218 // Typecast the base pointer to back correct derived to instance
-
219 auto delegateMsg = std::dynamic_pointer_cast<DelegateAsyncMsg<Args...>>(msg);
-
220 if (delegateMsg == nullptr)
-
221 throw std::invalid_argument("Invalid DelegateAsyncMsg cast");
-
222
-
223 // Invoke the delegate function asynchronously
-
224 SetSync(true);
-
225
-
226 // Invoke the target function using the source thread supplied function arguments
-
227 std::apply(&BaseType::operator(),
-
228 std::tuple_cat(std::make_tuple(this), delegateMsg->GetArgs()));
-
229 }
-
-
230
-
232 // @return The target thread.
-
233 DelegateThread& GetThread() noexcept { return m_thread; }
-
234
-
235protected:
-
239 bool GetSync() { return m_sync; }
-
240
-
243 void SetSync(bool sync) { m_sync = sync; }
-
244
-
245private:
-
247 DelegateThread& m_thread;
-
248
-
250 bool m_sync = false;
-
251
-
252 // </common_code>
-
253};
- -
254
-
255template <class C, class R>
-
256struct DelegateMemberAsync; // Not defined
-
257
-
262template <class TClass, class RetType, class... Args>
-
-
263class DelegateMemberAsync<TClass, RetType(Args...)> : public DelegateMember<TClass, RetType(Args...)>, public IDelegateInvoker {
-
264public:
-
265 typedef TClass* ObjectPtr;
-
266 typedef RetType (TClass::*MemberFunc)(Args...);
-
267 typedef RetType (TClass::*ConstMemberFunc)(Args...) const;
-
268 using ClassType = DelegateMemberAsync<TClass, RetType(Args...)>;
-
269 using BaseType = DelegateMember<TClass, RetType(Args...)>;
-
270
-
-
275 DelegateMemberAsync(ObjectPtr object, MemberFunc func, DelegateThread& thread) : BaseType(object, func), m_thread(thread)
-
276 { Bind(object, func, thread); }
-
-
277
-
-
282 DelegateMemberAsync(ObjectPtr object, ConstMemberFunc func, DelegateThread& thread) : BaseType(object, func), m_thread(thread)
-
283 { Bind(object, func, thread); }
-
-
284
-
- -
291 BaseType(rhs), m_thread(rhs.m_thread) {
-
292 Assign(rhs);
-
293 }
-
-
294
- +
93 rhs.Clear();
+
94 }
+
+
95
+ +
97
+
+
104 void Bind(FreeFunc func, DelegateThread& thread) {
+
105 m_thread = thread;
+
106 BaseType::Bind(func);
+
107 }
+
+
108
+
109 // <common_code>
+
110
+
+
115 void Assign(const ClassType& rhs) {
+
116 m_thread = rhs.m_thread;
+
117 BaseType::Assign(rhs);
+
118 }
+
+
+
124 virtual ClassType* Clone() const override {
+
125 return new ClassType(*this);
+
126 }
+
+
127
+
+ +
132 if (&rhs != this) {
+
133 BaseType::operator=(rhs);
+
134 Assign(rhs);
+
135 }
+
136 return *this;
+
137 }
+
+
138
+
+
142 ClassType& operator=(ClassType&& rhs) noexcept {
+
143 if (&rhs != this) {
+
144 BaseType::operator=(std::move(rhs));
+
145 m_thread = rhs.m_thread; // Use the resource
+
146 }
+
147 return *this;
+
148 }
+
+
149
+
+
153 virtual bool operator==(const DelegateBase& rhs) const override {
+
154 auto derivedRhs = dynamic_cast<const ClassType*>(&rhs);
+
155 return derivedRhs &&
+
156 &m_thread == &derivedRhs->m_thread &&
+
157 BaseType::operator==(rhs);
+
158 }
+
+
159
+
+
174 virtual RetType operator()(Args... args) override {
+
175 // Synchronously invoke the target function?
+
176 if (this->GetSync()) {
+
177 // Invoke the target function directly
+
178 return BaseType::operator()(std::forward<Args>(args)...);
+
179 } else {
+
180 // Create a clone instance of this delegate
+
181 auto delegate = std::shared_ptr<ClassType>(Clone());
+
182
+
183 // Create a new message instance for sending to the destination thread
+
184 auto msg = std::make_shared<DelegateAsyncMsg<Args...>>(delegate, std::forward<Args>(args)...);
+
185
+
186 // Dispatch message onto the callback destination thread. DelegateInvoke()
+
187 // will be called by the destintation thread.
+
188 GetThread().DispatchDelegate(msg);
+
189
+
190 // Do not wait for destination thread return value from async function call
+
191 return RetType();
+
192
+
193 // Check if any argument is a shared_ptr with wrong usage
+
194 // std::shared_ptr reference arguments are not allowed with asynchronous delegates as the behavior is
+
195 // undefined. In other words:
+
196 // void MyFunc(std::shared_ptr<T> data) // Ok!
+
197 // void MyFunc(std::shared_ptr<T>& data) // Error if DelegateAsync or DelegateSpAsync target!
+
198 static_assert(!(std::disjunction_v<is_shared_ptr<Args>...> &&
+
199 (std::disjunction_v<std::is_lvalue_reference<Args>, std::is_pointer<Args>> || ...)),
+
200 "std::shared_ptr reference argument not allowed");
+
201 }
+
202 }
+
+
203
+
+
207 void AsyncInvoke(Args... args) {
+
208 operator()(std::forward<Args>(args)...);
+
209 }
+
+
210
+
+
218 virtual void DelegateInvoke(std::shared_ptr<DelegateMsg> msg) override {
+
219 // Typecast the base pointer to back correct derived to instance
+
220 auto delegateMsg = std::dynamic_pointer_cast<DelegateAsyncMsg<Args...>>(msg);
+
221 if (delegateMsg == nullptr)
+
222 throw std::invalid_argument("Invalid DelegateAsyncMsg cast");
+
223
+
224 // Invoke the delegate function asynchronously
+
225 SetSync(true);
+
226
+
227 // Invoke the target function using the source thread supplied function arguments
+
228 std::apply(&BaseType::operator(),
+
229 std::tuple_cat(std::make_tuple(this), delegateMsg->GetArgs()));
+
230 }
+
+
231
+
233 // @return The target thread.
+
234 DelegateThread& GetThread() noexcept { return m_thread; }
+
235
+
236protected:
+
240 bool GetSync() { return m_sync; }
+
241
+
244 void SetSync(bool sync) { m_sync = sync; }
+
245
+
246private:
+
248 DelegateThread& m_thread;
+
249
+
251 bool m_sync = false;
+
252
+
253 // </common_code>
+
254};
+ +
255
+
256template <class C, class R>
+
257struct DelegateMemberAsync; // Not defined
+
258
+
263template <class TClass, class RetType, class... Args>
+
+
264class DelegateMemberAsync<TClass, RetType(Args...)> : public DelegateMember<TClass, RetType(Args...)>, public IDelegateInvoker {
+
265public:
+
266 typedef TClass* ObjectPtr;
+
267 typedef std::shared_ptr<TClass> SharedPtr;
+
268 typedef RetType(TClass::* MemberFunc)(Args...);
+
269 typedef RetType(TClass::* ConstMemberFunc)(Args...) const;
+
270 using ClassType = DelegateMemberAsync<TClass, RetType(Args...)>;
+
271 using BaseType = DelegateMember<TClass, RetType(Args...)>;
+
272
+
+
277 DelegateMemberAsync(SharedPtr object, MemberFunc func, DelegateThread& thread) : BaseType(object, func), m_thread(thread) {
+
278 Bind(object, func, thread);
+
279 }
+
+
280
+
+
285 DelegateMemberAsync(SharedPtr object, ConstMemberFunc func, DelegateThread& thread) : BaseType(object, func), m_thread(thread) {
+
286 Bind(object, func, thread);
+
287 }
+
+
288
+
+
293 DelegateMemberAsync(ObjectPtr object, MemberFunc func, DelegateThread& thread) : BaseType(object, func), m_thread(thread) {
+
294 Bind(object, func, thread);
+
295 }
+
296
-
-
304 void Bind(ObjectPtr object, MemberFunc func, DelegateThread& thread) {
-
305 m_thread = thread;
-
306 BaseType::Bind(object, func);
-
307 }
-
-
308
-
-
316 void Bind(ObjectPtr object, ConstMemberFunc func, DelegateThread& thread) {
-
317 m_thread = thread;
-
318 BaseType::Bind(object, func);
-
319 }
-
-
320
-
321 // <common_code>
-
322
-
-
327 void Assign(const ClassType& rhs) {
-
328 m_thread = rhs.m_thread;
-
329 BaseType::Assign(rhs);
-
330 }
-
-
-
336 virtual ClassType* Clone() const override {
-
337 return new ClassType(*this);
-
338 }
-
-
339
+
+
301 DelegateMemberAsync(ObjectPtr object, ConstMemberFunc func, DelegateThread& thread) : BaseType(object, func), m_thread(thread) {
+
302 Bind(object, func, thread);
+
303 }
+
+
304
+
+ +
311 BaseType(rhs), m_thread(rhs.m_thread) {
+
312 Assign(rhs);
+
313 }
+
+
314
+
+ +
318 BaseType(rhs), m_thread(rhs.m_thread) {
+
319 rhs.Clear();
+
320 }
+
+
321
+ +
323
+
+
331 void Bind(SharedPtr object, MemberFunc func, DelegateThread& thread) {
+
332 m_thread = thread;
+
333 BaseType::Bind(object, func);
+
334 }
+
+
335
- -
344 if (&rhs != this) {
-
345 BaseType::operator=(rhs);
-
346 Assign(rhs);
-
347 }
-
348 return *this;
-
349 }
-
-
350
-
-
354 ClassType& operator=(ClassType&& rhs) noexcept {
-
355 if (&rhs != this) {
-
356 BaseType::operator=(std::move(rhs));
-
357 m_thread = rhs.m_thread; // Use the resource
-
358 }
-
359 return *this;
-
360 }
-
-
361
-
-
365 virtual bool operator==(const DelegateBase& rhs) const override {
-
366 auto derivedRhs = dynamic_cast<const ClassType*>(&rhs);
-
367 return derivedRhs &&
-
368 &m_thread == &derivedRhs->m_thread &&
-
369 BaseType::operator==(rhs);
+
343 void Bind(SharedPtr object, ConstMemberFunc func, DelegateThread& thread) {
+
344 m_thread = thread;
+
345 BaseType::Bind(object, func);
+
346 }
+
+
347
+
+
355 void Bind(ObjectPtr object, MemberFunc func, DelegateThread& thread) {
+
356 m_thread = thread;
+
357 BaseType::Bind(object, func);
+
358 }
+
+
359
+
+
367 void Bind(ObjectPtr object, ConstMemberFunc func, DelegateThread& thread) {
+
368 m_thread = thread;
+
369 BaseType::Bind(object, func);
370 }
371
-
-
386 virtual RetType operator()(Args... args) override {
-
387 // Synchronously invoke the target function?
-
388 if (this->GetSync()) {
-
389 // Invoke the target function directly
-
390 return BaseType::operator()(std::forward<Args>(args)...);
-
391 } else {
-
392 // Create a clone instance of this delegate
-
393 auto delegate = std::shared_ptr<ClassType>(Clone());
-
394
-
395 // Create a new message instance for sending to the destination thread
-
396 auto msg = std::make_shared<DelegateAsyncMsg<Args...>>(delegate, std::forward<Args>(args)...);
-
397
-
398 // Dispatch message onto the callback destination thread. DelegateInvoke()
-
399 // will be called by the destintation thread.
-
400 GetThread().DispatchDelegate(msg);
+
372 // <common_code>
+
373
+
+
378 void Assign(const ClassType& rhs) {
+
379 m_thread = rhs.m_thread;
+
380 BaseType::Assign(rhs);
+
381 }
+
+
+
387 virtual ClassType* Clone() const override {
+
388 return new ClassType(*this);
+
389 }
+
+
390
+
+ +
395 if (&rhs != this) {
+
396 BaseType::operator=(rhs);
+
397 Assign(rhs);
+
398 }
+
399 return *this;
+
400 }
+
401
-
402 // Do not wait for destination thread return value from async function call
-
403 return RetType();
-
404
-
405 // Check if any argument is a shared_ptr with wrong usage
-
406 // std::shared_ptr reference arguments are not allowed with asynchronous delegates as the behavior is
-
407 // undefined. In other words:
-
408 // void MyFunc(std::shared_ptr<T> data) // Ok!
-
409 // void MyFunc(std::shared_ptr<T>& data) // Error if DelegateAsync or DelegateSpAsync target!
-
410 static_assert(!(std::disjunction_v<is_shared_ptr<Args>...> &&
-
411 (std::disjunction_v<std::is_lvalue_reference<Args>, std::is_pointer<Args>> || ...)),
-
412 "std::shared_ptr reference argument not allowed");
-
413 }
-
414 }
-
-
415
-
-
419 void AsyncInvoke(Args... args) {
-
420 operator()(std::forward<Args>(args)...);
+
+
405 ClassType& operator=(ClassType&& rhs) noexcept {
+
406 if (&rhs != this) {
+
407 BaseType::operator=(std::move(rhs));
+
408 m_thread = rhs.m_thread; // Use the resource
+
409 }
+
410 return *this;
+
411 }
+
+
412
+
+
416 virtual bool operator==(const DelegateBase& rhs) const override {
+
417 auto derivedRhs = dynamic_cast<const ClassType*>(&rhs);
+
418 return derivedRhs &&
+
419 &m_thread == &derivedRhs->m_thread &&
+
420 BaseType::operator==(rhs);
421 }
422
-
-
430 virtual void DelegateInvoke(std::shared_ptr<DelegateMsg> msg) {
-
431 // Typecast the base pointer to back correct derived to instance
-
432 auto delegateMsg = std::dynamic_pointer_cast<DelegateAsyncMsg<Args...>>(msg);
-
433 if (delegateMsg == nullptr)
-
434 throw std::invalid_argument("Invalid DelegateAsyncMsg cast");
-
435
-
436 // Invoke the delegate function asynchronously
-
437 SetSync(true);
-
438
-
439 // Invoke the target function using the source thread supplied function arguments
-
440 std::apply(&BaseType::operator(),
-
441 std::tuple_cat(std::make_tuple(this), delegateMsg->GetArgs()));
-
442 }
-
-
443
-
445 // @return The target thread.
-
446 DelegateThread& GetThread() noexcept { return m_thread; }
-
447
-
448protected:
-
452 bool GetSync() { return m_sync; }
-
453
-
456 void SetSync(bool sync) { m_sync = sync; }
-
457
-
458private:
-
460 DelegateThread& m_thread;
-
461
-
463 bool m_sync = false;
-
464
-
465 // </common_code>
-
466};
-
-
467
-
468template <class C, class R>
-
469struct DelegateMemberSpAsync; // Not defined
-
470
-
475template <class TClass, class RetType, class... Args>
-
-
476class DelegateMemberSpAsync<TClass, RetType(Args...)> : public DelegateMemberSp<TClass, RetType(Args...)>, public IDelegateInvoker {
-
477public:
-
478 typedef std::shared_ptr<TClass> ObjectPtr;
-
479 typedef RetType(TClass::* MemberFunc)(Args...);
-
480 typedef RetType(TClass::* ConstMemberFunc)(Args...) const;
-
481 using ClassType = DelegateMemberSpAsync<TClass, RetType(Args...)>;
-
482 using BaseType = DelegateMemberSp<TClass, RetType(Args...)>;
-
483
-
-
488 DelegateMemberSpAsync(ObjectPtr object, MemberFunc func, DelegateThread& thread) : BaseType(object, func), m_thread(thread) {
-
489 Bind(object, func, thread);
-
490 }
-
-
491
-
-
496 DelegateMemberSpAsync(ObjectPtr object, ConstMemberFunc func, DelegateThread& thread) : BaseType(object, func), m_thread(thread) {
-
497 Bind(object, func, thread);
-
498 }
-
-
499
-
- -
506 BaseType(rhs), m_thread(rhs.m_thread) {
-
507 Assign(rhs);
-
508 }
-
-
509
- -
511
-
-
518 void Bind(ObjectPtr object, MemberFunc func, DelegateThread& thread) {
-
519 m_thread = thread;
-
520 BaseType::Bind(object, func);
-
521 }
-
-
522
-
-
530 void Bind(ObjectPtr object, ConstMemberFunc func, DelegateThread& thread) {
-
531 m_thread = thread;
-
532 BaseType::Bind(object, func);
-
533 }
-
-
534
-
535 // <common_code>
-
536
+
+
437 virtual RetType operator()(Args... args) override {
+
438 // Synchronously invoke the target function?
+
439 if (this->GetSync()) {
+
440 // Invoke the target function directly
+
441 return BaseType::operator()(std::forward<Args>(args)...);
+
442 } else {
+
443 // Create a clone instance of this delegate
+
444 auto delegate = std::shared_ptr<ClassType>(Clone());
+
445
+
446 // Create a new message instance for sending to the destination thread
+
447 auto msg = std::make_shared<DelegateAsyncMsg<Args...>>(delegate, std::forward<Args>(args)...);
+
448
+
449 // Dispatch message onto the callback destination thread. DelegateInvoke()
+
450 // will be called by the destintation thread.
+
451 GetThread().DispatchDelegate(msg);
+
452
+
453 // Do not wait for destination thread return value from async function call
+
454 return RetType();
+
455
+
456 // Check if any argument is a shared_ptr with wrong usage
+
457 // std::shared_ptr reference arguments are not allowed with asynchronous delegates as the behavior is
+
458 // undefined. In other words:
+
459 // void MyFunc(std::shared_ptr<T> data) // Ok!
+
460 // void MyFunc(std::shared_ptr<T>& data) // Error if DelegateAsync or DelegateSpAsync target!
+
461 static_assert(!(std::disjunction_v<is_shared_ptr<Args>...> &&
+
462 (std::disjunction_v<std::is_lvalue_reference<Args>, std::is_pointer<Args>> || ...)),
+
463 "std::shared_ptr reference argument not allowed");
+
464 }
+
465 }
+
+
466
+
+
470 void AsyncInvoke(Args... args) {
+
471 operator()(std::forward<Args>(args)...);
+
472 }
+
+
473
+
+
481 virtual void DelegateInvoke(std::shared_ptr<DelegateMsg> msg) override {
+
482 // Typecast the base pointer to back correct derived to instance
+
483 auto delegateMsg = std::dynamic_pointer_cast<DelegateAsyncMsg<Args...>>(msg);
+
484 if (delegateMsg == nullptr)
+
485 throw std::invalid_argument("Invalid DelegateAsyncMsg cast");
+
486
+
487 // Invoke the delegate function asynchronously
+
488 SetSync(true);
+
489
+
490 // Invoke the target function using the source thread supplied function arguments
+
491 std::apply(&BaseType::operator(),
+
492 std::tuple_cat(std::make_tuple(this), delegateMsg->GetArgs()));
+
493 }
+
+
494
+
496 // @return The target thread.
+
497 DelegateThread& GetThread() noexcept { return m_thread; }
+
498
+
499protected:
+
503 bool GetSync() { return m_sync; }
+
504
+
507 void SetSync(bool sync) { m_sync = sync; }
+
508
+
509private:
+
511 DelegateThread& m_thread;
+
512
+
514 bool m_sync = false;
+
515
+
516 // </common_code>
+
517};
+
+
518
+
519template <class R>
+
520struct DelegateFunctionAsync; // Not defined
+
521
+
531template <class RetType, class... Args>
+
+
532class DelegateFunctionAsync<RetType(Args...)> : public DelegateFunction<RetType(Args...)>, public IDelegateInvoker {
+
533public:
+
534 using FunctionType = std::function<RetType(Args...)>;
+
535 using ClassType = DelegateFunctionAsync<RetType(Args...)>;
+
536 using BaseType = DelegateFunction<RetType(Args...)>;
+
537
-
541 void Assign(const ClassType& rhs) {
-
542 m_thread = rhs.m_thread;
-
543 BaseType::Assign(rhs);
+ +
542 BaseType(func), m_thread(thread) {
+
543 Bind(func, thread);
544 }
-
-
550 virtual ClassType* Clone() const override {
-
551 return new ClassType(*this);
-
552 }
-
-
553
-
- -
558 if (&rhs != this) {
-
559 BaseType::operator=(rhs);
-
560 Assign(rhs);
-
561 }
-
562 return *this;
-
563 }
-
+
545
+
+ +
552 BaseType(rhs), m_thread(rhs.m_thread) {
+
553 Assign(rhs);
+
554 }
+
+
555
+
+ +
559 BaseType(rhs), m_thread(rhs.m_thread) {
+
560 rhs.Clear();
+
561 }
+
+
562
+
564
-
-
568 ClassType& operator=(ClassType&& rhs) noexcept {
-
569 if (&rhs != this) {
-
570 BaseType::operator=(std::move(rhs));
-
571 m_thread = rhs.m_thread; // Use the resource
-
572 }
-
573 return *this;
+
+
571 void Bind(FunctionType func, DelegateThread& thread) {
+
572 m_thread = thread;
+
573 BaseType::Bind(func);
574 }
575
-
-
579 virtual bool operator==(const DelegateBase& rhs) const override {
-
580 auto derivedRhs = dynamic_cast<const ClassType*>(&rhs);
-
581 return derivedRhs &&
-
582 &m_thread == &derivedRhs->m_thread &&
-
583 BaseType::operator==(rhs);
-
584 }
-
-
585
-
-
600 virtual RetType operator()(Args... args) override {
-
601 // Synchronously invoke the target function?
-
602 if (this->GetSync()) {
-
603 // Invoke the target function directly
-
604 return BaseType::operator()(std::forward<Args>(args)...);
-
605 } else {
-
606 // Create a clone instance of this delegate
-
607 auto delegate = std::shared_ptr<ClassType>(Clone());
-
608
-
609 // Create a new message instance for sending to the destination thread
-
610 auto msg = std::make_shared<DelegateAsyncMsg<Args...>>(delegate, std::forward<Args>(args)...);
-
611
-
612 // Dispatch message onto the callback destination thread. DelegateInvoke()
-
613 // will be called by the destintation thread.
-
614 GetThread().DispatchDelegate(msg);
-
615
-
616 // Do not wait for destination thread return value from async function call
-
617 return RetType();
-
618
-
619 // Check if any argument is a shared_ptr with wrong usage
-
620 // std::shared_ptr reference arguments are not allowed with asynchronous delegates as the behavior is
-
621 // undefined. In other words:
-
622 // void MyFunc(std::shared_ptr<T> data) // Ok!
-
623 // void MyFunc(std::shared_ptr<T>& data) // Error if DelegateAsync or DelegateSpAsync target!
-
624 static_assert(!(std::disjunction_v<is_shared_ptr<Args>...> &&
-
625 (std::disjunction_v<std::is_lvalue_reference<Args>, std::is_pointer<Args>> || ...)),
-
626 "std::shared_ptr reference argument not allowed");
-
627 }
-
628 }
-
-
629
-
-
633 void AsyncInvoke(Args... args) {
-
634 operator()(std::forward<Args>(args)...);
-
635 }
-
-
636
-
-
644 virtual void DelegateInvoke(std::shared_ptr<DelegateMsg> msg) {
-
645 // Typecast the base pointer to back correct derived to instance
-
646 auto delegateMsg = std::dynamic_pointer_cast<DelegateAsyncMsg<Args...>>(msg);
-
647 if (delegateMsg == nullptr)
-
648 throw std::invalid_argument("Invalid DelegateAsyncMsg cast");
+
576 // <common_code>
+
577
+
+
582 void Assign(const ClassType& rhs) {
+
583 m_thread = rhs.m_thread;
+
584 BaseType::Assign(rhs);
+
585 }
+
+
+
591 virtual ClassType* Clone() const override {
+
592 return new ClassType(*this);
+
593 }
+
+
594
+
+ +
599 if (&rhs != this) {
+
600 BaseType::operator=(rhs);
+
601 Assign(rhs);
+
602 }
+
603 return *this;
+
604 }
+
+
605
+
+
609 ClassType& operator=(ClassType&& rhs) noexcept {
+
610 if (&rhs != this) {
+
611 BaseType::operator=(std::move(rhs));
+
612 m_thread = rhs.m_thread; // Use the resource
+
613 }
+
614 return *this;
+
615 }
+
+
616
+
+
620 virtual bool operator==(const DelegateBase& rhs) const override {
+
621 auto derivedRhs = dynamic_cast<const ClassType*>(&rhs);
+
622 return derivedRhs &&
+
623 &m_thread == &derivedRhs->m_thread &&
+
624 BaseType::operator==(rhs);
+
625 }
+
+
626
+
+
641 virtual RetType operator()(Args... args) override {
+
642 // Synchronously invoke the target function?
+
643 if (this->GetSync()) {
+
644 // Invoke the target function directly
+
645 return BaseType::operator()(std::forward<Args>(args)...);
+
646 } else {
+
647 // Create a clone instance of this delegate
+
648 auto delegate = std::shared_ptr<ClassType>(Clone());
649
-
650 // Invoke the delegate function asynchronously
-
651 SetSync(true);
+
650 // Create a new message instance for sending to the destination thread
+
651 auto msg = std::make_shared<DelegateAsyncMsg<Args...>>(delegate, std::forward<Args>(args)...);
652
-
653 // Invoke the target function using the source thread supplied function arguments
-
654 std::apply(&BaseType::operator(),
-
655 std::tuple_cat(std::make_tuple(this), delegateMsg->GetArgs()));
-
656 }
-
-
657
-
659 // @return The target thread.
-
660 DelegateThread& GetThread() noexcept { return m_thread; }
-
661
-
662protected:
-
666 bool GetSync() { return m_sync; }
-
667
-
670 void SetSync(bool sync) { m_sync = sync; }
-
671
-
672private:
-
674 DelegateThread& m_thread;
-
675
-
677 bool m_sync = false;
-
678
-
679 // </common_code>
-
680};
-
-
681
-
682template <class R>
-
683struct DelegateFunctionAsync; // Not defined
-
684
-
694template <class RetType, class... Args>
-
-
695class DelegateFunctionAsync<RetType(Args...)> : public DelegateFunction<RetType(Args...)>, public IDelegateInvoker {
-
696public:
-
697 using FunctionType = std::function<RetType(Args...)>;
-
698 using ClassType = DelegateFunctionAsync<RetType(Args...)>;
-
699 using BaseType = DelegateFunction<RetType(Args...)>;
-
700
-
- -
705 BaseType(func), m_thread(thread) {
-
706 Bind(func, thread);
-
707 }
-
+
653 // Dispatch message onto the callback destination thread. DelegateInvoke()
+
654 // will be called by the destintation thread.
+
655 GetThread().DispatchDelegate(msg);
+
656
+
657 // Do not wait for destination thread return value from async function call
+
658 return RetType();
+
659
+
660 // Check if any argument is a shared_ptr with wrong usage
+
661 // std::shared_ptr reference arguments are not allowed with asynchronous delegates as the behavior is
+
662 // undefined. In other words:
+
663 // void MyFunc(std::shared_ptr<T> data) // Ok!
+
664 // void MyFunc(std::shared_ptr<T>& data) // Error if DelegateAsync or DelegateSpAsync target!
+
665 static_assert(!(std::disjunction_v<is_shared_ptr<Args>...> &&
+
666 (std::disjunction_v<std::is_lvalue_reference<Args>, std::is_pointer<Args>> || ...)),
+
667 "std::shared_ptr reference argument not allowed");
+
668 }
+
669 }
+
+
670
+
+
674 void AsyncInvoke(Args... args) {
+
675 operator()(std::forward<Args>(args)...);
+
676 }
+
+
677
+
+
685 virtual void DelegateInvoke(std::shared_ptr<DelegateMsg> msg) override {
+
686 // Typecast the base pointer to back correct derived to instance
+
687 auto delegateMsg = std::dynamic_pointer_cast<DelegateAsyncMsg<Args...>>(msg);
+
688 if (delegateMsg == nullptr)
+
689 throw std::invalid_argument("Invalid DelegateAsyncMsg cast");
+
690
+
691 // Invoke the delegate function asynchronously
+
692 SetSync(true);
+
693
+
694 // Invoke the target function using the source thread supplied function arguments
+
695 std::apply(&BaseType::operator(),
+
696 std::tuple_cat(std::make_tuple(this), delegateMsg->GetArgs()));
+
697 }
+
+
698
+
700 // @return The target thread.
+
701 DelegateThread& GetThread() noexcept { return m_thread; }
+
702
+
703protected:
+
707 bool GetSync() { return m_sync; }
708
-
- -
715 BaseType(rhs), m_thread(rhs.m_thread) {
-
716 Assign(rhs);
-
717 }
-
-
718
- -
720
-
-
727 void Bind(FunctionType func, DelegateThread& thread) {
-
728 m_thread = thread;
-
729 BaseType::Bind(func);
-
730 }
-
-
731
-
732 // <common_code>
+
711 void SetSync(bool sync) { m_sync = sync; }
+
712
+
713private:
+
715 DelegateThread& m_thread;
+
716
+
718 bool m_sync = false;
+
719
+
720 // </common_code>
+
721};
+
+
722
+
729template <class RetType, class... Args>
+
+
730DelegateFreeAsync<RetType(Args...)> MakeDelegate(RetType(*func)(Args... args), DelegateThread& thread) {
+
731 return DelegateFreeAsync<RetType(Args...)>(func, thread);
+
732}
+
733
-
-
738 void Assign(const ClassType& rhs) {
-
739 m_thread = rhs.m_thread;
-
740 BaseType::Assign(rhs);
-
741 }
-
-
-
747 virtual ClassType* Clone() const override {
-
748 return new ClassType(*this);
-
749 }
-
-
750
-
- -
755 if (&rhs != this) {
-
756 BaseType::operator=(rhs);
-
757 Assign(rhs);
-
758 }
-
759 return *this;
-
760 }
-
-
761
-
-
765 ClassType& operator=(ClassType&& rhs) noexcept {
-
766 if (&rhs != this) {
-
767 BaseType::operator=(std::move(rhs));
-
768 m_thread = rhs.m_thread; // Use the resource
-
769 }
-
770 return *this;
-
771 }
+
742template <class TClass, class RetType, class... Args>
+
+
743DelegateMemberAsync<TClass, RetType(Args...)> MakeDelegate(TClass* object, RetType(TClass::* func)(Args... args), DelegateThread& thread) {
+
744 return DelegateMemberAsync<TClass, RetType(Args...)>(object, func, thread);
+
745}
+
+
746
+
755template <class TClass, class RetType, class... Args>
+
756DelegateMemberAsync<TClass, RetType(Args...)> MakeDelegate(TClass* object, RetType(TClass::* func)(Args... args) const, DelegateThread& thread) {
+
757 return DelegateMemberAsync<TClass, RetType(Args...)>(object, func, thread);
+
758}
+
759
+
768template <class TClass, class RetVal, class... Args>
+
+
769DelegateMemberAsync<TClass, RetVal(Args...)> MakeDelegate(std::shared_ptr<TClass> object, RetVal(TClass::* func)(Args... args), DelegateThread& thread) {
+
770 return DelegateMemberAsync<TClass, RetVal(Args...)>(object, func, thread);
+
771}
772
-
-
776 virtual bool operator==(const DelegateBase& rhs) const override {
-
777 auto derivedRhs = dynamic_cast<const ClassType*>(&rhs);
-
778 return derivedRhs &&
-
779 &m_thread == &derivedRhs->m_thread &&
-
780 BaseType::operator==(rhs);
-
781 }
-
-
782
-
-
797 virtual RetType operator()(Args... args) override {
-
798 // Synchronously invoke the target function?
-
799 if (this->GetSync()) {
-
800 // Invoke the target function directly
-
801 return BaseType::operator()(std::forward<Args>(args)...);
-
802 } else {
-
803 // Create a clone instance of this delegate
-
804 auto delegate = std::shared_ptr<ClassType>(Clone());
-
805
-
806 // Create a new message instance for sending to the destination thread
-
807 auto msg = std::make_shared<DelegateAsyncMsg<Args...>>(delegate, std::forward<Args>(args)...);
-
808
-
809 // Dispatch message onto the callback destination thread. DelegateInvoke()
-
810 // will be called by the destintation thread.
-
811 GetThread().DispatchDelegate(msg);
-
812
-
813 // Do not wait for destination thread return value from async function call
-
814 return RetType();
-
815
-
816 // Check if any argument is a shared_ptr with wrong usage
-
817 // std::shared_ptr reference arguments are not allowed with asynchronous delegates as the behavior is
-
818 // undefined. In other words:
-
819 // void MyFunc(std::shared_ptr<T> data) // Ok!
-
820 // void MyFunc(std::shared_ptr<T>& data) // Error if DelegateAsync or DelegateSpAsync target!
-
821 static_assert(!(std::disjunction_v<is_shared_ptr<Args>...> &&
-
822 (std::disjunction_v<std::is_lvalue_reference<Args>, std::is_pointer<Args>> || ...)),
-
823 "std::shared_ptr reference argument not allowed");
-
824 }
-
825 }
-
-
826
-
-
830 void AsyncInvoke(Args... args) {
-
831 operator()(std::forward<Args>(args)...);
-
832 }
-
-
833
-
-
841 virtual void DelegateInvoke(std::shared_ptr<DelegateMsg> msg) {
-
842 // Typecast the base pointer to back correct derived to instance
-
843 auto delegateMsg = std::dynamic_pointer_cast<DelegateAsyncMsg<Args...>>(msg);
-
844 if (delegateMsg == nullptr)
-
845 throw std::invalid_argument("Invalid DelegateAsyncMsg cast");
-
846
-
847 // Invoke the delegate function asynchronously
-
848 SetSync(true);
-
849
-
850 // Invoke the target function using the source thread supplied function arguments
-
851 std::apply(&BaseType::operator(),
-
852 std::tuple_cat(std::make_tuple(this), delegateMsg->GetArgs()));
-
853 }
-
-
854
-
856 // @return The target thread.
-
857 DelegateThread& GetThread() noexcept { return m_thread; }
-
858
-
859protected:
-
863 bool GetSync() { return m_sync; }
-
864
-
867 void SetSync(bool sync) { m_sync = sync; }
-
868
-
869private:
-
871 DelegateThread& m_thread;
-
872
-
874 bool m_sync = false;
-
875
-
876 // </common_code>
-
877};
-
-
878
-
885template <class RetType, class... Args>
-
-
886DelegateFreeAsync<RetType(Args...)> MakeDelegate(RetType(*func)(Args... args), DelegateThread& thread) {
-
887 return DelegateFreeAsync<RetType(Args...)>(func, thread);
-
888}
-
-
889
-
898template <class TClass, class RetType, class... Args>
-
-
899DelegateMemberAsync<TClass, RetType(Args...)> MakeDelegate(TClass* object, RetType(TClass::* func)(Args... args), DelegateThread& thread) {
-
900 return DelegateMemberAsync<TClass, RetType(Args...)>(object, func, thread);
-
901}
-
-
902
-
911template <class TClass, class RetType, class... Args>
-
912DelegateMemberAsync<TClass, RetType(Args...)> MakeDelegate(TClass* object, RetType(TClass::* func)(Args... args) const, DelegateThread& thread) {
-
913 return DelegateMemberAsync<TClass, RetType(Args...)>(object, func, thread);
-
914}
-
915
-
924template <class TClass, class RetVal, class... Args>
-
-
925DelegateMemberSpAsync<TClass, RetVal(Args...)> MakeDelegate(std::shared_ptr<TClass> object, RetVal(TClass::* func)(Args... args), DelegateThread& thread) {
-
926 return DelegateMemberSpAsync<TClass, RetVal(Args...)>(object, func, thread);
-
927}
-
-
928
-
929
-
938template <class TClass, class RetVal, class... Args>
-
939DelegateMemberSpAsync<TClass, RetVal(Args...)> MakeDelegate(std::shared_ptr<TClass> object, RetVal(TClass::* func)(Args... args) const, DelegateThread& thread) {
-
940 return DelegateMemberSpAsync<TClass, RetVal(Args...)>(object, func, thread);
-
941}
-
942
-
949template <class RetType, class... Args>
-
-
950DelegateFunctionAsync<RetType(Args...)> MakeDelegate(std::function<RetType(Args...)> func, DelegateThread& thread) {
-
951 return DelegateFunctionAsync<RetType(Args...)>(func, thread);
-
952}
-
-
953
-
954}
-
955
-
956#endif
+
773
+
782template <class TClass, class RetVal, class... Args>
+
783DelegateMemberAsync<TClass, RetVal(Args...)> MakeDelegate(std::shared_ptr<TClass> object, RetVal(TClass::* func)(Args... args) const, DelegateThread& thread) {
+
784 return DelegateMemberAsync<TClass, RetVal(Args...)>(object, func, thread);
+
785}
+
786
+
793template <class RetType, class... Args>
+
+
794DelegateFunctionAsync<RetType(Args...)> MakeDelegate(std::function<RetType(Args...)> func, DelegateThread& thread) {
+
795 return DelegateFunctionAsync<RetType(Args...)>(func, thread);
+
796}
+
+
797
+
798}
+
799
+
800#endif
Delegate series of classes are used to invoke a function synchronously.
Delegate inter-thread invoker base class.
std::list< T, Alloc > xlist
Definition DelegateOpt.h:19
@@ -813,95 +695,83 @@
virtual ~DelegateAsyncMsg()=default
Non-template base class for all delegates.
Definition Delegate.h:21
DelegateFree<> class synchronously invokes a free target function.
Definition Delegate.h:78
+
void Clear() noexcept
Clear the target function.
Definition Delegate.h:168
DelegateFreeAsync<> class asynchronously invokes a free target function.
Definition DelegateAsync.h:65
-
virtual void DelegateInvoke(std::shared_ptr< DelegateMsg > msg)
Invoke the delegate function on the destination thread. Called by the destintation thread.
Definition DelegateAsync.h:217
-
void AsyncInvoke(Args... args)
Invoke delegate function asynchronously. Do not wait for return value. Called by the source thread.
Definition DelegateAsync.h:206
-
ClassType & operator=(const ClassType &rhs)
Assignment operator that assigns the state of one object to another.
Definition DelegateAsync.h:130
-
bool GetSync()
Get the synchronous target invoke flag.
Definition DelegateAsync.h:239
+
virtual void DelegateInvoke(std::shared_ptr< DelegateMsg > msg) override
Invoke the delegate function on the destination thread. Called by the destintation thread.
Definition DelegateAsync.h:218
+
void AsyncInvoke(Args... args)
Invoke delegate function asynchronously. Do not wait for return value. Called by the source thread.
Definition DelegateAsync.h:207
+
ClassType & operator=(const ClassType &rhs)
Assignment operator that assigns the state of one object to another.
Definition DelegateAsync.h:131
+
bool GetSync()
Get the synchronous target invoke flag.
Definition DelegateAsync.h:240
DelegateFreeAsync(ClassType &&rhs) noexcept
Move constructor that transfers ownership of resources.
Definition DelegateAsync.h:91
-
virtual RetType operator()(Args... args) override
Invoke the bound delegate function asynchronously. Called by the source thread.
Definition DelegateAsync.h:173
-
void Assign(const ClassType &rhs)
Assigns the state of one object to another.
Definition DelegateAsync.h:114
-
virtual bool operator==(const DelegateBase &rhs) const override
Compares two delegate objects for equality.
Definition DelegateAsync.h:152
+
virtual RetType operator()(Args... args) override
Invoke the bound delegate function asynchronously. Called by the source thread.
Definition DelegateAsync.h:174
+
void Assign(const ClassType &rhs)
Assigns the state of one object to another.
Definition DelegateAsync.h:115
+
virtual bool operator==(const DelegateBase &rhs) const override
Compares two delegate objects for equality.
Definition DelegateAsync.h:153
DelegateFreeAsync(FreeFunc func, DelegateThread &thread)
Constructor to create a class instance.
Definition DelegateAsync.h:74
-
void Bind(FreeFunc func, DelegateThread &thread)
Bind a free function to the delegate.
Definition DelegateAsync.h:103
-
DelegateThread & GetThread() noexcept
Get the destination thread that the target function is invoked on.
Definition DelegateAsync.h:233
-
void SetSync(bool sync)
Set the synchronous target invoke flag.
Definition DelegateAsync.h:243
-
ClassType & operator=(ClassType &&rhs) noexcept
Move assignment operator that transfers ownership of resources.
Definition DelegateAsync.h:141
+
void Bind(FreeFunc func, DelegateThread &thread)
Bind a free function to the delegate.
Definition DelegateAsync.h:104
+
DelegateThread & GetThread() noexcept
Get the destination thread that the target function is invoked on.
Definition DelegateAsync.h:234
+
void SetSync(bool sync)
Set the synchronous target invoke flag.
Definition DelegateAsync.h:244
+
ClassType & operator=(ClassType &&rhs) noexcept
Move assignment operator that transfers ownership of resources.
Definition DelegateAsync.h:142
DelegateFreeAsync(const ClassType &rhs)
Copy constructor that creates a copy of the given instance.
Definition DelegateAsync.h:84
-
virtual ClassType * Clone() const override
Creates a copy of the current object.
Definition DelegateAsync.h:123
-
DelegateFunction<> class synchronously invokes a std::function target function.
Definition Delegate.h:479
-
DelegateFunctionAsync<> class asynchronously invokes a std::function target function.
Definition DelegateAsync.h:695
-
virtual ClassType * Clone() const override
Creates a copy of the current object.
Definition DelegateAsync.h:747
-
virtual RetType operator()(Args... args) override
Invoke the bound delegate function asynchronously. Called by the source thread.
Definition DelegateAsync.h:797
-
ClassType & operator=(const ClassType &rhs)
Assignment operator that assigns the state of one object to another.
Definition DelegateAsync.h:754
-
bool GetSync()
Get the synchronous target invoke flag.
Definition DelegateAsync.h:863
-
DelegateFunctionAsync(const ClassType &rhs)
Copy constructor that creates a copy of the given instance.
Definition DelegateAsync.h:714
-
std::function< RetType(Args...)> FunctionType
Definition DelegateAsync.h:697
-
DelegateFunctionAsync(FunctionType func, DelegateThread &thread)
Constructor to create a class instance.
Definition DelegateAsync.h:704
-
void Bind(FunctionType func, DelegateThread &thread)
Bind a std::function to the delegate.
Definition DelegateAsync.h:727
-
virtual void DelegateInvoke(std::shared_ptr< DelegateMsg > msg)
Invoke the delegate function on the destination thread. Called by the destintation thread.
Definition DelegateAsync.h:841
-
void AsyncInvoke(Args... args)
Invoke delegate function asynchronously. Do not wait for return value. Called by the source thread.
Definition DelegateAsync.h:830
-
virtual bool operator==(const DelegateBase &rhs) const override
Compares two delegate objects for equality.
Definition DelegateAsync.h:776
-
ClassType & operator=(ClassType &&rhs) noexcept
Move assignment operator that transfers ownership of resources.
Definition DelegateAsync.h:765
-
void SetSync(bool sync)
Set the synchronous target invoke flag.
Definition DelegateAsync.h:867
+
virtual ClassType * Clone() const override
Creates a copy of the current object.
Definition DelegateAsync.h:124
+
DelegateFunction<> class synchronously invokes a std::function target function.
Definition Delegate.h:378
+
void Clear() noexcept
Clear the target function.
Definition Delegate.h:480
+
DelegateFunctionAsync<> class asynchronously invokes a std::function target function.
Definition DelegateAsync.h:532
+
virtual ClassType * Clone() const override
Creates a copy of the current object.
Definition DelegateAsync.h:591
+
virtual RetType operator()(Args... args) override
Invoke the bound delegate function asynchronously. Called by the source thread.
Definition DelegateAsync.h:641
+
ClassType & operator=(const ClassType &rhs)
Assignment operator that assigns the state of one object to another.
Definition DelegateAsync.h:598
+
virtual void DelegateInvoke(std::shared_ptr< DelegateMsg > msg) override
Invoke the delegate function on the destination thread. Called by the destintation thread.
Definition DelegateAsync.h:685
+
bool GetSync()
Get the synchronous target invoke flag.
Definition DelegateAsync.h:707
+
DelegateFunctionAsync(const ClassType &rhs)
Copy constructor that creates a copy of the given instance.
Definition DelegateAsync.h:551
+
std::function< RetType(Args...)> FunctionType
Definition DelegateAsync.h:534
+
DelegateFunctionAsync(FunctionType func, DelegateThread &thread)
Constructor to create a class instance.
Definition DelegateAsync.h:541
+
void Bind(FunctionType func, DelegateThread &thread)
Bind a std::function to the delegate.
Definition DelegateAsync.h:571
+
void AsyncInvoke(Args... args)
Invoke delegate function asynchronously. Do not wait for return value. Called by the source thread.
Definition DelegateAsync.h:674
+
virtual bool operator==(const DelegateBase &rhs) const override
Compares two delegate objects for equality.
Definition DelegateAsync.h:620
+
ClassType & operator=(ClassType &&rhs) noexcept
Move assignment operator that transfers ownership of resources.
Definition DelegateAsync.h:609
+
void SetSync(bool sync)
Set the synchronous target invoke flag.
Definition DelegateAsync.h:711
+
DelegateFunctionAsync(ClassType &&rhs) noexcept
Move constructor that transfers ownership of resources.
Definition DelegateAsync.h:558
-
void Assign(const ClassType &rhs)
Assigns the state of one object to another.
Definition DelegateAsync.h:738
-
DelegateThread & GetThread() noexcept
Get the destination thread that the target function is invoked on.
Definition DelegateAsync.h:857
-
Definition Delegate.h:455
-
DelegateMember<> class synchronously invokes a class member target function using a class object poin...
Definition Delegate.h:187
-
DelegateMemberAsync<> class asynchronously invokes a class member target function.
Definition DelegateAsync.h:263
-
void Bind(ObjectPtr object, ConstMemberFunc func, DelegateThread &thread)
Bind a member function to the delegate.
Definition DelegateAsync.h:316
-
DelegateMemberAsync(const ClassType &rhs)
Copy constructor that creates a copy of the given instance.
Definition DelegateAsync.h:290
-
virtual bool operator==(const DelegateBase &rhs) const override
Compares two delegate objects for equality.
Definition DelegateAsync.h:365
-
ClassType & operator=(const ClassType &rhs)
Assignment operator that assigns the state of one object to another.
Definition DelegateAsync.h:343
+
void Assign(const ClassType &rhs)
Assigns the state of one object to another.
Definition DelegateAsync.h:582
+
DelegateThread & GetThread() noexcept
Get the destination thread that the target function is invoked on.
Definition DelegateAsync.h:701
+
Definition Delegate.h:354
+
DelegateMember<> class synchronously invokes a class member target function using a class object poin...
Definition Delegate.h:188
+
void Clear() noexcept
Clear the target function.
Definition Delegate.h:339
+
DelegateMemberAsync<> class asynchronously invokes a class member target function.
Definition DelegateAsync.h:264
+
void Bind(ObjectPtr object, ConstMemberFunc func, DelegateThread &thread)
Bind a member function to the delegate.
Definition DelegateAsync.h:367
+
DelegateMemberAsync(const ClassType &rhs)
Copy constructor that creates a copy of the given instance.
Definition DelegateAsync.h:310
+
virtual bool operator==(const DelegateBase &rhs) const override
Compares two delegate objects for equality.
Definition DelegateAsync.h:416
+
ClassType & operator=(const ClassType &rhs)
Assignment operator that assigns the state of one object to another.
Definition DelegateAsync.h:394
+
virtual void DelegateInvoke(std::shared_ptr< DelegateMsg > msg) override
Invoke the delegate function on the destination thread. Called by the destintation thread.
Definition DelegateAsync.h:481
-
void AsyncInvoke(Args... args)
Invoke delegate function asynchronously. Do not wait for return value. Called by the source thread.
Definition DelegateAsync.h:419
-
DelegateMemberAsync(ObjectPtr object, ConstMemberFunc func, DelegateThread &thread)
Constructor to create a class instance.
Definition DelegateAsync.h:282
-
DelegateMemberAsync(ObjectPtr object, MemberFunc func, DelegateThread &thread)
Constructor to create a class instance.
Definition DelegateAsync.h:275
-
void SetSync(bool sync)
Set the synchronous target invoke flag.
Definition DelegateAsync.h:456
-
virtual void DelegateInvoke(std::shared_ptr< DelegateMsg > msg)
Invoke the delegate function on the destination thread. Called by the destintation thread.
Definition DelegateAsync.h:430
-
ClassType & operator=(ClassType &&rhs) noexcept
Move assignment operator that transfers ownership of resources.
Definition DelegateAsync.h:354
-
virtual RetType operator()(Args... args) override
Invoke the bound delegate function asynchronously. Called by the source thread.
Definition DelegateAsync.h:386
-
void Bind(ObjectPtr object, MemberFunc func, DelegateThread &thread)
Bind a const member function to the delegate.
Definition DelegateAsync.h:304
-
void Assign(const ClassType &rhs)
Assigns the state of one object to another.
Definition DelegateAsync.h:327
-
DelegateThread & GetThread() noexcept
Get the destination thread that the target function is invoked on.
Definition DelegateAsync.h:446
-
virtual ClassType * Clone() const override
Creates a copy of the current object.
Definition DelegateAsync.h:336
-
TClass * ObjectPtr
Definition DelegateAsync.h:265
-
bool GetSync()
Get the synchronous target invoke flag.
Definition DelegateAsync.h:452
-
DelegateMemberSp<> class synchronously invokes a class member target function using a std::shared_ptr...
Definition Delegate.h:325
-
DelegateMemberSpAsync<> class asynchronously invokes a std::shared_ptr target function.
Definition DelegateAsync.h:476
-
DelegateMemberSpAsync(ObjectPtr object, ConstMemberFunc func, DelegateThread &thread)
Constructor to create a class instance.
Definition DelegateAsync.h:496
-
std::shared_ptr< TClass > ObjectPtr
Definition DelegateAsync.h:478
-
void SetSync(bool sync)
Set the synchronous target invoke flag.
Definition DelegateAsync.h:670
-
virtual void DelegateInvoke(std::shared_ptr< DelegateMsg > msg)
Invoke the delegate function on the destination thread. Called by the destintation thread.
Definition DelegateAsync.h:644
-
virtual RetType operator()(Args... args) override
Invoke the bound delegate function asynchronously. Called by the source thread.
Definition DelegateAsync.h:600
-
void Assign(const ClassType &rhs)
Assigns the state of one object to another.
Definition DelegateAsync.h:541
-
bool GetSync()
Get the synchronous target invoke flag.
Definition DelegateAsync.h:666
-
void Bind(ObjectPtr object, MemberFunc func, DelegateThread &thread)
Bind a const member function to the delegate.
Definition DelegateAsync.h:518
-
DelegateMemberSpAsync(const ClassType &rhs)
Copy constructor that creates a copy of the given instance.
Definition DelegateAsync.h:505
-
ClassType & operator=(ClassType &&rhs) noexcept
Move assignment operator that transfers ownership of resources.
Definition DelegateAsync.h:568
-
virtual bool operator==(const DelegateBase &rhs) const override
Compares two delegate objects for equality.
Definition DelegateAsync.h:579
-
void Bind(ObjectPtr object, ConstMemberFunc func, DelegateThread &thread)
Bind a const member function to the delegate.
Definition DelegateAsync.h:530
- -
void AsyncInvoke(Args... args)
Invoke delegate function asynchronously. Do not wait for return value. Called by the source thread.
Definition DelegateAsync.h:633
-
DelegateMemberSpAsync(ObjectPtr object, MemberFunc func, DelegateThread &thread)
Constructor to create a class instance.
Definition DelegateAsync.h:488
-
ClassType & operator=(const ClassType &rhs)
Assignment operator that assigns the state of one object to another.
Definition DelegateAsync.h:557
-
DelegateThread & GetThread() noexcept
Get the destination thread that the target function is invoked on.
Definition DelegateAsync.h:660
-
virtual ClassType * Clone() const override
Creates a copy of the current object.
Definition DelegateAsync.h:550
+
DelegateMemberAsync(SharedPtr object, ConstMemberFunc func, DelegateThread &thread)
Constructor to create a class instance.
Definition DelegateAsync.h:285
+
void AsyncInvoke(Args... args)
Invoke delegate function asynchronously. Do not wait for return value. Called by the source thread.
Definition DelegateAsync.h:470
+
DelegateMemberAsync(ObjectPtr object, ConstMemberFunc func, DelegateThread &thread)
Constructor to create a class instance.
Definition DelegateAsync.h:301
+
DelegateMemberAsync(ObjectPtr object, MemberFunc func, DelegateThread &thread)
Constructor to create a class instance.
Definition DelegateAsync.h:293
+
void SetSync(bool sync)
Set the synchronous target invoke flag.
Definition DelegateAsync.h:507
+
ClassType & operator=(ClassType &&rhs) noexcept
Move assignment operator that transfers ownership of resources.
Definition DelegateAsync.h:405
+
virtual RetType operator()(Args... args) override
Invoke the bound delegate function asynchronously. Called by the source thread.
Definition DelegateAsync.h:437
+
void Bind(ObjectPtr object, MemberFunc func, DelegateThread &thread)
Bind a const member function to the delegate.
Definition DelegateAsync.h:355
+
std::shared_ptr< TClass > SharedPtr
Definition DelegateAsync.h:267
+
void Assign(const ClassType &rhs)
Assigns the state of one object to another.
Definition DelegateAsync.h:378
+
DelegateThread & GetThread() noexcept
Get the destination thread that the target function is invoked on.
Definition DelegateAsync.h:497
+
virtual ClassType * Clone() const override
Creates a copy of the current object.
Definition DelegateAsync.h:387
+
void Bind(SharedPtr object, ConstMemberFunc func, DelegateThread &thread)
Bind a member function to the delegate.
Definition DelegateAsync.h:343
+
TClass * ObjectPtr
Definition DelegateAsync.h:266
+
DelegateMemberAsync(ClassType &&rhs) noexcept
Move constructor that transfers ownership of resources.
Definition DelegateAsync.h:317
+
bool GetSync()
Get the synchronous target invoke flag.
Definition DelegateAsync.h:503
+
void Bind(SharedPtr object, MemberFunc func, DelegateThread &thread)
Bind a const member function to the delegate.
Definition DelegateAsync.h:331
+
DelegateMemberAsync(SharedPtr object, MemberFunc func, DelegateThread &thread)
Constructor to create a class instance.
Definition DelegateAsync.h:277
Base class for all delegate inter-thread messages.
Definition DelegateMsg.h:22
Definition DelegateThread.h:16
Abstract base class to support asynchronous delegate function invoke on destination thread of control...
Definition DelegateInvoker.h:27
Definition Delegate.h:18
-
DelegateFree< RetType(Args...)> MakeDelegate(RetType(*func)(Args... args))
Creates a delegate that binds to a free function.
Definition Delegate.h:597
+
DelegateFree< RetType(Args...)> MakeDelegate(RetType(*func)(Args... args))
Creates a delegate that binds to a free function.
Definition Delegate.h:497
auto make_tuple_heap(xlist< std::shared_ptr< heap_arg_deleter_base > > &heapArgs, std::tuple< Ts... > tup)
Terminate the template metaprogramming argument loop. This function is called when there are no more ...
Definition make_tuple_heap.h:178
Definition DelegateAsync.h:59
Definition Delegate.h:72
-
Definition DelegateAsync.h:683
-
Definition DelegateAsync.h:256
-
Definition Delegate.h:179
-
Definition DelegateAsync.h:469
-
Definition Delegate.h:317
+
Definition DelegateAsync.h:520
+
Definition DelegateAsync.h:257
+
Definition Delegate.h:180
diff --git a/doxygen/html/_delegate_async_wait_8h.html b/doxygen/html/_delegate_async_wait_8h.html index ea00f98..641c7b3 100644 --- a/doxygen/html/_delegate_async_wait_8h.html +++ b/doxygen/html/_delegate_async_wait_8h.html @@ -127,9 +127,6 @@ class  DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>  DelegateMemberAsyncWait<> class asynchronously block invokes a class member target function. More...
  -class  DelegateLib::DelegateMemberSpAsyncWait< TClass, RetType(Args...)>DelegateMemberSpAsyncWait<> class asynchronously block invokes a std::shared_ptr target function. More...
-  class  DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>  DelegateFunctionAsyncWait<> class asynchronously block invokes a std::function target function. More...
  @@ -149,10 +146,10 @@ DelegateMemberAsyncWait< TClass, RetType(Args...)> DelegateLib::MakeDelegate (TClass *object, RetType(TClass::*func)(Args... args), DelegateThread &thread, std::chrono::milliseconds timeout)  Creates an asynchronous delegate that binds to a non-const member function with a wait and timeout.
  -template<class TClass , class RetVal , class... Args> -DelegateMemberSpAsyncWait< TClass, RetVal(Args...)> DelegateLib::MakeDelegate (std::shared_ptr< TClass > object, RetVal(TClass::*func)(Args... args), DelegateThread &thread, std::chrono::milliseconds timeout) - Creates an asynchronous delegate that binds to a non-const member function using a shared pointer, with a wait and timeout.
-  +template<class TClass , class RetVal , class... Args> +DelegateMemberAsyncWait< TClass, RetVal(Args...)> DelegateLib::MakeDelegate (std::shared_ptr< TClass > object, RetVal(TClass::*func)(Args... args), DelegateThread &thread, std::chrono::milliseconds timeout) + Creates an asynchronous delegate that binds to a non-const member function using a shared pointer, with a wait and timeout.
+  template<class RetType , class... Args> DelegateFunctionAsyncWait< RetType(Args...)> DelegateLib::MakeDelegate (std::function< RetType(Args...)> func, DelegateThread &thread, std::chrono::milliseconds timeout)  Creates an asynchronous delegate that binds to a std::function with a wait and timeout.
diff --git a/doxygen/html/_delegate_async_wait_8h.js b/doxygen/html/_delegate_async_wait_8h.js index ae04003..492ceda 100644 --- a/doxygen/html/_delegate_async_wait_8h.js +++ b/doxygen/html/_delegate_async_wait_8h.js @@ -3,11 +3,10 @@ var _delegate_async_wait_8h = [ "DelegateLib::DelegateAsyncWaitMsg< Args >", "class_delegate_lib_1_1_delegate_async_wait_msg.html", "class_delegate_lib_1_1_delegate_async_wait_msg" ], [ "DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>", "class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html", "class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4" ], [ "DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>", "class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html", "class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4" ], - [ "DelegateLib::DelegateMemberSpAsyncWait< TClass, RetType(Args...)>", "class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html", "class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4" ], [ "DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>", "class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html", "class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4" ], [ "MakeDelegate", "_delegate_async_wait_8h.html#a2fe15d9d206f30899ed86ed0a117217b", null ], [ "MakeDelegate", "_delegate_async_wait_8h.html#a684f519f3b774007ab1d8b81e32fc647", null ], - [ "MakeDelegate", "_delegate_async_wait_8h.html#a18a52212b54b5a8994f32fae6d19ec4f", null ], + [ "MakeDelegate", "_delegate_async_wait_8h.html#a2ec853f3e1fa47faba54b04fb3c5232d", null ], [ "MakeDelegate", "_delegate_async_wait_8h.html#a5db76998112ee428868ac9edfc89b4aa", null ], [ "WAIT_INFINITE", "_delegate_async_wait_8h.html#aa0e7491d38d4053d6218bf874d56e868", null ] ]; \ No newline at end of file diff --git a/doxygen/html/_delegate_async_wait_8h_source.html b/doxygen/html/_delegate_async_wait_8h_source.html index acdf9c9..3f94830 100644 --- a/doxygen/html/_delegate_async_wait_8h_source.html +++ b/doxygen/html/_delegate_async_wait_8h_source.html @@ -184,799 +184,644 @@
145 BaseType(rhs), m_timeout(rhs.m_timeout) {
-
146 }
-
-
147
- -
149
-
-
156 void Bind(FreeFunc func, DelegateThread& thread) {
-
157 BaseType::Bind(func, thread);
-
158 }
-
-
159
-
160 // <common_code>
-
161
-
-
166 void Assign(const ClassType& rhs) {
-
167 m_timeout = rhs.m_timeout;
-
168 BaseType::Assign(rhs);
-
169 }
-
-
170
-
-
176 virtual ClassType* Clone() const override {
-
177 return new ClassType(*this);
-
178 }
-
-
179
-
- -
184 if (&rhs != this) {
-
185 BaseType::operator=(rhs);
-
186 Assign(rhs);
-
187 }
-
188 return *this;
-
189 }
-
-
190
-
-
194 ClassType& operator=(ClassType&& rhs) noexcept {
-
195 if (&rhs != this) {
-
196 BaseType::operator=(std::move(rhs));
-
197 m_timeout = rhs.m_timeout; // Use the resource
-
198 }
-
199 return *this;
-
200 }
-
-
201
-
-
205 virtual bool operator==(const DelegateBase& rhs) const override {
-
206 auto derivedRhs = dynamic_cast<const ClassType*>(&rhs);
-
207 return derivedRhs &&
-
208 m_timeout == derivedRhs->m_timeout &&
-
209 BaseType::operator==(rhs);
-
210 }
-
-
211
-
-
233 virtual RetType operator()(Args... args) override {
-
234 // Synchronously invoke the target function?
-
235 if (this->GetSync()) {
-
236 // Invoke the target function directly
-
237 return BaseType::operator()(std::forward<Args>(args)...);
-
238 } else {
-
239 // Create a clone instance of this delegate
-
240 auto delegate = std::shared_ptr<ClassType>(Clone());
-
241
-
242 // Create a new message instance for sending to the destination thread.
-
243 auto msg = std::make_shared<DelegateAsyncWaitMsg<Args...>>(delegate, std::forward<Args>(args)...);
-
244 msg->SetInvokerWaiting(true);
-
245
-
246 // Dispatch message onto the callback destination thread. DelegateInvoke()
-
247 // will be called by the destination thread.
-
248 this->GetThread().DispatchDelegate(msg);
-
249
-
250 // Wait for destination thread to execute the delegate function and get return value
-
251 if ((m_success = msg->GetSema().Wait(m_timeout)))
-
252 m_retVal = delegate->m_retVal;
-
253
-
254 // Protect data shared between source and destination threads
-
255 const std::lock_guard<std::mutex> lock(msg->GetLock());
-
256
-
257 // Set flag that source is not waiting anymore
-
258 msg->SetInvokerWaiting(false);
-
259
-
260 // Does the target function have a return value?
-
261 if constexpr (std::is_void<RetType>::value == false) {
-
262 // Is the return value valid?
-
263 if (m_retVal.has_value()) {
-
264 // Return the destination thread target function return value
-
265 return GetRetVal();
-
266 } else {
-
267 // Return a default return value
-
268 return RetType{};
-
269 }
-
270 }
-
271 }
-
272 }
-
-
273
-
-
280 auto AsyncInvoke(Args... args) {
-
281 if constexpr (std::is_void<RetType>::value == true) {
-
282 operator()(args...);
-
283 return IsSuccess() ? std::optional<bool>(true) : std::optional<bool>();
-
284 } else {
-
285 auto retVal = operator()(args...);
-
286 return IsSuccess() ? std::optional<RetType>(retVal) : std::optional<RetType>();
-
287 }
-
288 }
-
-
289
-
-
300 virtual void DelegateInvoke(std::shared_ptr<DelegateMsg> msg) override {
-
301 // Typecast the base pointer to back correct derived to instance
-
302 auto delegateMsg = std::dynamic_pointer_cast<DelegateAsyncWaitMsg<Args...>>(msg);
-
303 if (delegateMsg == nullptr)
-
304 throw std::invalid_argument("Invalid DelegateAsyncWaitMsg cast");
-
305
-
306 // Protect data shared between source and destination threads
-
307 const std::lock_guard<std::mutex> lock(delegateMsg->GetLock());
-
308
-
309 // Is the source thread waiting for the target function invoke to complete?
-
310 if (delegateMsg->GetInvokerWaiting()) {
-
311 // Invoke the delegate function synchronously
-
312 this->SetSync(true);
-
313
-
314 // Does target function have a void return value?
-
315 if constexpr (std::is_void<RetType>::value == true) {
-
316 // Invoke the target function using the source thread supplied function arguments
-
317 std::apply(&BaseType::operator(), std::tuple_cat(std::make_tuple(this), delegateMsg->GetArgs()));
-
318 } else {
-
319 // Invoke the target function using the source thread supplied function arguments
-
320 // and get the return value
-
321 m_retVal = std::apply(&BaseType::operator(), std::tuple_cat(std::make_tuple(this), delegateMsg->GetArgs()));
-
322 }
-
323
-
324 // Signal the source thread that the destination thread function call is complete
-
325 delegateMsg->GetSema().Signal();
-
326 }
-
327 }
-
-
328
-
332 bool IsSuccess() noexcept { return m_success; }
-
333
-
-
336 RetType GetRetVal() noexcept {
-
337 try {
-
338 return std::any_cast<RetType>(m_retVal);
-
339 }
-
340 catch (const std::bad_any_cast&) {
-
341 return RetType{}; // Return a default value if error
-
342 }
-
343 }
-
-
344
-
345private:
-
347 bool m_success = false;
-
348
-
350 std::chrono::milliseconds m_timeout;
-
351
-
353 std::any m_retVal;
-
354
-
355 // </common_code>
-
356};
- -
357
-
358template <class C, class R>
-
359struct DelegateMemberAsyncWait; // Not defined
-
360
-
365template <class TClass, class RetType, class... Args>
-
-
366class DelegateMemberAsyncWait<TClass, RetType(Args...)> : public DelegateMemberAsync<TClass, RetType(Args...)> {
-
367public:
-
368 typedef TClass* ObjectPtr;
-
369 typedef RetType(TClass::*MemberFunc)(Args...);
-
370 typedef RetType(TClass::*ConstMemberFunc)(Args...) const;
-
371 using ClassType = DelegateMemberAsyncWait<TClass, RetType(Args...)>;
-
372 using BaseType = DelegateMemberAsync<TClass, RetType(Args...)>;
-
373
-
374 // Contructors take a class instance, member function, and delegate thread
-
-
375 DelegateMemberAsyncWait(ObjectPtr object, MemberFunc func, DelegateThread& thread, std::chrono::milliseconds timeout = WAIT_INFINITE) :
-
376 BaseType(object, func, thread), m_timeout(timeout) {
-
377 Bind(object, func, thread);
-
378 }
-
-
-
379 DelegateMemberAsyncWait(ObjectPtr object, ConstMemberFunc func, DelegateThread& thread, std::chrono::milliseconds timeout) :
-
380 BaseType(object, func, thread), m_timeout(timeout) {
-
381 Bind(object, func, thread);
-
382 }
-
-
- -
384 BaseType(rhs) {
-
385 Assign(rhs);
-
386 }
-
- -
388
-
-
390 void Bind(ObjectPtr object, MemberFunc func, DelegateThread& thread) {
-
391 BaseType::Bind(object, func, thread);
-
392 }
-
-
393
-
-
395 void Bind(ObjectPtr object, ConstMemberFunc func, DelegateThread& thread) {
-
396 BaseType::Bind(object, func, thread);
-
397 }
-
-
398
-
399 // <common_code>
-
400
-
-
405 void Assign(const ClassType& rhs) {
-
406 m_timeout = rhs.m_timeout;
-
407 BaseType::Assign(rhs);
-
408 }
-
-
409
+
146 rhs.Clear();
+
147 }
+
+
148
+ +
150
+
+
157 void Bind(FreeFunc func, DelegateThread& thread) {
+
158 BaseType::Bind(func, thread);
+
159 }
+
+
160
+
161 // <common_code>
+
162
+
+
167 void Assign(const ClassType& rhs) {
+
168 m_timeout = rhs.m_timeout;
+
169 BaseType::Assign(rhs);
+
170 }
+
+
171
+
+
177 virtual ClassType* Clone() const override {
+
178 return new ClassType(*this);
+
179 }
+
+
180
+
+ +
185 if (&rhs != this) {
+
186 BaseType::operator=(rhs);
+
187 Assign(rhs);
+
188 }
+
189 return *this;
+
190 }
+
+
191
+
+
195 ClassType& operator=(ClassType&& rhs) noexcept {
+
196 if (&rhs != this) {
+
197 BaseType::operator=(std::move(rhs));
+
198 m_timeout = rhs.m_timeout; // Use the resource
+
199 }
+
200 return *this;
+
201 }
+
+
202
+
+
206 virtual bool operator==(const DelegateBase& rhs) const override {
+
207 auto derivedRhs = dynamic_cast<const ClassType*>(&rhs);
+
208 return derivedRhs &&
+
209 m_timeout == derivedRhs->m_timeout &&
+
210 BaseType::operator==(rhs);
+
211 }
+
+
212
+
+
234 virtual RetType operator()(Args... args) override {
+
235 // Synchronously invoke the target function?
+
236 if (this->GetSync()) {
+
237 // Invoke the target function directly
+
238 return BaseType::operator()(std::forward<Args>(args)...);
+
239 } else {
+
240 // Create a clone instance of this delegate
+
241 auto delegate = std::shared_ptr<ClassType>(Clone());
+
242
+
243 // Create a new message instance for sending to the destination thread.
+
244 auto msg = std::make_shared<DelegateAsyncWaitMsg<Args...>>(delegate, std::forward<Args>(args)...);
+
245 msg->SetInvokerWaiting(true);
+
246
+
247 // Dispatch message onto the callback destination thread. DelegateInvoke()
+
248 // will be called by the destination thread.
+
249 this->GetThread().DispatchDelegate(msg);
+
250
+
251 // Wait for destination thread to execute the delegate function and get return value
+
252 if ((m_success = msg->GetSema().Wait(m_timeout)))
+
253 m_retVal = delegate->m_retVal;
+
254
+
255 // Protect data shared between source and destination threads
+
256 const std::lock_guard<std::mutex> lock(msg->GetLock());
+
257
+
258 // Set flag that source is not waiting anymore
+
259 msg->SetInvokerWaiting(false);
+
260
+
261 // Does the target function have a return value?
+
262 if constexpr (std::is_void<RetType>::value == false) {
+
263 // Is the return value valid?
+
264 if (m_retVal.has_value()) {
+
265 // Return the destination thread target function return value
+
266 return GetRetVal();
+
267 } else {
+
268 // Return a default return value
+
269 return RetType{};
+
270 }
+
271 }
+
272 }
+
273 }
+
+
274
+
+
281 auto AsyncInvoke(Args... args) {
+
282 if constexpr (std::is_void<RetType>::value == true) {
+
283 operator()(args...);
+
284 return IsSuccess() ? std::optional<bool>(true) : std::optional<bool>();
+
285 } else {
+
286 auto retVal = operator()(args...);
+
287 return IsSuccess() ? std::optional<RetType>(retVal) : std::optional<RetType>();
+
288 }
+
289 }
+
+
290
+
+
301 virtual void DelegateInvoke(std::shared_ptr<DelegateMsg> msg) override {
+
302 // Typecast the base pointer to back correct derived to instance
+
303 auto delegateMsg = std::dynamic_pointer_cast<DelegateAsyncWaitMsg<Args...>>(msg);
+
304 if (delegateMsg == nullptr)
+
305 throw std::invalid_argument("Invalid DelegateAsyncWaitMsg cast");
+
306
+
307 // Protect data shared between source and destination threads
+
308 const std::lock_guard<std::mutex> lock(delegateMsg->GetLock());
+
309
+
310 // Is the source thread waiting for the target function invoke to complete?
+
311 if (delegateMsg->GetInvokerWaiting()) {
+
312 // Invoke the delegate function synchronously
+
313 this->SetSync(true);
+
314
+
315 // Does target function have a void return value?
+
316 if constexpr (std::is_void<RetType>::value == true) {
+
317 // Invoke the target function using the source thread supplied function arguments
+
318 std::apply(&BaseType::operator(), std::tuple_cat(std::make_tuple(this), delegateMsg->GetArgs()));
+
319 } else {
+
320 // Invoke the target function using the source thread supplied function arguments
+
321 // and get the return value
+
322 m_retVal = std::apply(&BaseType::operator(), std::tuple_cat(std::make_tuple(this), delegateMsg->GetArgs()));
+
323 }
+
324
+
325 // Signal the source thread that the destination thread function call is complete
+
326 delegateMsg->GetSema().Signal();
+
327 }
+
328 }
+
+
329
+
333 bool IsSuccess() noexcept { return m_success; }
+
334
+
+
337 RetType GetRetVal() noexcept {
+
338 try {
+
339 return std::any_cast<RetType>(m_retVal);
+
340 }
+
341 catch (const std::bad_any_cast&) {
+
342 return RetType{}; // Return a default value if error
+
343 }
+
344 }
+
+
345
+
346private:
+
348 bool m_success = false;
+
349
+
351 std::chrono::milliseconds m_timeout;
+
352
+
354 std::any m_retVal;
+
355
+
356 // </common_code>
+
357};
+ +
358
+
359template <class C, class R>
+
360struct DelegateMemberAsyncWait; // Not defined
+
361
+
366template <class TClass, class RetType, class... Args>
+
+
367class DelegateMemberAsyncWait<TClass, RetType(Args...)> : public DelegateMemberAsync<TClass, RetType(Args...)> {
+
368public:
+
369 typedef TClass* ObjectPtr;
+
370 typedef std::shared_ptr<TClass> SharedPtr;
+
371 typedef RetType(TClass::* MemberFunc)(Args...);
+
372 typedef RetType(TClass::* ConstMemberFunc)(Args...) const;
+
373 using ClassType = DelegateMemberAsyncWait<TClass, RetType(Args...)>;
+
374 using BaseType = DelegateMemberAsync<TClass, RetType(Args...)>;
+
375
+
+
382 DelegateMemberAsyncWait(SharedPtr object, MemberFunc func, DelegateThread& thread, std::chrono::milliseconds timeout = WAIT_INFINITE) :
+
383 BaseType(object, func, thread), m_timeout(timeout) {
+
384 Bind(object, func, thread);
+
385 }
+
+
386
+
+
393 DelegateMemberAsyncWait(SharedPtr object, ConstMemberFunc func, DelegateThread& thread, std::chrono::milliseconds timeout) :
+
394 BaseType(object, func, thread), m_timeout(timeout) {
+
395 Bind(object, func, thread);
+
396 }
+
+
397
+
+
404 DelegateMemberAsyncWait(ObjectPtr object, MemberFunc func, DelegateThread& thread, std::chrono::milliseconds timeout = WAIT_INFINITE) :
+
405 BaseType(object, func, thread), m_timeout(timeout) {
+
406 Bind(object, func, thread);
+
407 }
+
+
408
-
415 virtual ClassType* Clone() const override {
-
416 return new ClassType(*this);
-
417 }
-
-
418
-
- -
423 if (&rhs != this) {
-
424 BaseType::operator=(rhs);
-
425 Assign(rhs);
-
426 }
-
427 return *this;
+
415 DelegateMemberAsyncWait(ObjectPtr object, ConstMemberFunc func, DelegateThread& thread, std::chrono::milliseconds timeout) :
+
416 BaseType(object, func, thread), m_timeout(timeout) {
+
417 Bind(object, func, thread);
+
418 }
+
+
419
+
+ +
426 BaseType(rhs) {
+
427 Assign(rhs);
428 }
429
-
-
433 ClassType& operator=(ClassType&& rhs) noexcept {
-
434 if (&rhs != this) {
-
435 BaseType::operator=(std::move(rhs));
-
436 m_timeout = rhs.m_timeout; // Use the resource
-
437 }
-
438 return *this;
-
439 }
-
-
440
-
-
444 virtual bool operator==(const DelegateBase& rhs) const override {
-
445 auto derivedRhs = dynamic_cast<const ClassType*>(&rhs);
-
446 return derivedRhs &&
-
447 m_timeout == derivedRhs->m_timeout &&
-
448 BaseType::operator==(rhs);
-
449 }
-
-
450
-
-
472 virtual RetType operator()(Args... args) override {
-
473 // Synchronously invoke the target function?
-
474 if (this->GetSync()) {
-
475 // Invoke the target function directly
-
476 return BaseType::operator()(std::forward<Args>(args)...);
-
477 } else {
-
478 // Create a clone instance of this delegate
-
479 auto delegate = std::shared_ptr<ClassType>(Clone());
-
480
-
481 // Create a new message instance for sending to the destination thread.
-
482 auto msg = std::make_shared<DelegateAsyncWaitMsg<Args...>>(delegate, std::forward<Args>(args)...);
-
483 msg->SetInvokerWaiting(true);
+
+ +
433 BaseType(rhs), m_timeout(rhs.m_timeout) {
+
434 rhs.Clear();
+
435 }
+
+
436
+ +
438
+
+
446 void Bind(SharedPtr object, MemberFunc func, DelegateThread& thread) {
+
447 BaseType::Bind(object, func, thread);
+
448 }
+
+
449
+
+
457 void Bind(SharedPtr object, ConstMemberFunc func, DelegateThread& thread) {
+
458 BaseType::Bind(object, func, thread);
+
459 }
+
+
460
+
+
468 void Bind(ObjectPtr object, MemberFunc func, DelegateThread& thread) {
+
469 BaseType::Bind(object, func, thread);
+
470 }
+
+
471
+
+
479 void Bind(ObjectPtr object, ConstMemberFunc func, DelegateThread& thread) {
+
480 BaseType::Bind(object, func, thread);
+
481 }
+
+
482
+
483 // <common_code>
484
-
485 // Dispatch message onto the callback destination thread. DelegateInvoke()
-
486 // will be called by the destination thread.
-
487 this->GetThread().DispatchDelegate(msg);
-
488
-
489 // Wait for destination thread to execute the delegate function and get return value
-
490 if ((m_success = msg->GetSema().Wait(m_timeout)))
-
491 m_retVal = delegate->m_retVal;
-
492
-
493 // Protect data shared between source and destination threads
-
494 const std::lock_guard<std::mutex> lock(msg->GetLock());
-
495
-
496 // Set flag that source is not waiting anymore
-
497 msg->SetInvokerWaiting(false);
-
498
-
499 // Does the target function have a return value?
-
500 if constexpr (std::is_void<RetType>::value == false) {
-
501 // Is the return value valid?
-
502 if (m_retVal.has_value()) {
-
503 // Return the destination thread target function return value
-
504 return GetRetVal();
-
505 } else {
-
506 // Return a default return value
-
507 return RetType{};
-
508 }
-
509 }
+
+
489 void Assign(const ClassType& rhs) {
+
490 m_timeout = rhs.m_timeout;
+
491 BaseType::Assign(rhs);
+
492 }
+
+
493
+
+
499 virtual ClassType* Clone() const override {
+
500 return new ClassType(*this);
+
501 }
+
+
502
+
+ +
507 if (&rhs != this) {
+
508 BaseType::operator=(rhs);
+
509 Assign(rhs);
510 }
-
511 }
-
-
512
-
-
519 auto AsyncInvoke(Args... args) {
-
520 if constexpr (std::is_void<RetType>::value == true) {
-
521 operator()(args...);
-
522 return IsSuccess() ? std::optional<bool>(true) : std::optional<bool>();
-
523 } else {
-
524 auto retVal = operator()(args...);
-
525 return IsSuccess() ? std::optional<RetType>(retVal) : std::optional<RetType>();
-
526 }
-
527 }
-
-
528
-
-
539 virtual void DelegateInvoke(std::shared_ptr<DelegateMsg> msg) override {
-
540 // Typecast the base pointer to back correct derived to instance
-
541 auto delegateMsg = std::dynamic_pointer_cast<DelegateAsyncWaitMsg<Args...>>(msg);
-
542 if (delegateMsg == nullptr)
-
543 throw std::invalid_argument("Invalid DelegateAsyncWaitMsg cast");
-
544
-
545 // Protect data shared between source and destination threads
-
546 const std::lock_guard<std::mutex> lock(delegateMsg->GetLock());
-
547
-
548 // Is the source thread waiting for the target function invoke to complete?
-
549 if (delegateMsg->GetInvokerWaiting()) {
-
550 // Invoke the delegate function synchronously
-
551 this->SetSync(true);
-
552
-
553 // Does target function have a void return value?
-
554 if constexpr (std::is_void<RetType>::value == true) {
-
555 // Invoke the target function using the source thread supplied function arguments
-
556 std::apply(&BaseType::operator(), std::tuple_cat(std::make_tuple(this), delegateMsg->GetArgs()));
-
557 } else {
-
558 // Invoke the target function using the source thread supplied function arguments
-
559 // and get the return value
-
560 m_retVal = std::apply(&BaseType::operator(), std::tuple_cat(std::make_tuple(this), delegateMsg->GetArgs()));
-
561 }
-
562
-
563 // Signal the source thread that the destination thread function call is complete
-
564 delegateMsg->GetSema().Signal();
-
565 }
-
566 }
-
-
567
-
571 bool IsSuccess() noexcept { return m_success; }
+
511 return *this;
+
512 }
+
+
513
+
+
517 ClassType& operator=(ClassType&& rhs) noexcept {
+
518 if (&rhs != this) {
+
519 BaseType::operator=(std::move(rhs));
+
520 m_timeout = rhs.m_timeout; // Use the resource
+
521 }
+
522 return *this;
+
523 }
+
+
524
+
+
528 virtual bool operator==(const DelegateBase& rhs) const override {
+
529 auto derivedRhs = dynamic_cast<const ClassType*>(&rhs);
+
530 return derivedRhs &&
+
531 m_timeout == derivedRhs->m_timeout &&
+
532 BaseType::operator==(rhs);
+
533 }
+
+
534
+
+
556 virtual RetType operator()(Args... args) override {
+
557 // Synchronously invoke the target function?
+
558 if (this->GetSync()) {
+
559 // Invoke the target function directly
+
560 return BaseType::operator()(std::forward<Args>(args)...);
+
561 } else {
+
562 // Create a clone instance of this delegate
+
563 auto delegate = std::shared_ptr<ClassType>(Clone());
+
564
+
565 // Create a new message instance for sending to the destination thread.
+
566 auto msg = std::make_shared<DelegateAsyncWaitMsg<Args...>>(delegate, std::forward<Args>(args)...);
+
567 msg->SetInvokerWaiting(true);
+
568
+
569 // Dispatch message onto the callback destination thread. DelegateInvoke()
+
570 // will be called by the destination thread.
+
571 this->GetThread().DispatchDelegate(msg);
572
-
-
575 RetType GetRetVal() noexcept {
-
576 try {
-
577 return std::any_cast<RetType>(m_retVal);
-
578 }
-
579 catch (const std::bad_any_cast&) {
-
580 return RetType{}; // Return a default value if error
-
581 }
-
582 }
-
-
583
-
584private:
-
586 bool m_success = false;
-
587
-
589 std::chrono::milliseconds m_timeout;
-
590
-
592 std::any m_retVal;
-
593
-
594 // </common_code>
-
595};
+
573 // Wait for destination thread to execute the delegate function and get return value
+
574 if ((m_success = msg->GetSema().Wait(m_timeout)))
+
575 m_retVal = delegate->m_retVal;
+
576
+
577 // Protect data shared between source and destination threads
+
578 const std::lock_guard<std::mutex> lock(msg->GetLock());
+
579
+
580 // Set flag that source is not waiting anymore
+
581 msg->SetInvokerWaiting(false);
+
582
+
583 // Does the target function have a return value?
+
584 if constexpr (std::is_void<RetType>::value == false) {
+
585 // Is the return value valid?
+
586 if (m_retVal.has_value()) {
+
587 // Return the destination thread target function return value
+
588 return GetRetVal();
+
589 } else {
+
590 // Return a default return value
+
591 return RetType{};
+
592 }
+
593 }
+
594 }
+
595 }
596
-
597template <class C, class R>
-
598struct DelegateMemberSpAsyncWait; // Not defined
-
599
-
604template <class TClass, class RetType, class... Args>
-
-
605class DelegateMemberSpAsyncWait<TClass, RetType(Args...)> : public DelegateMemberSpAsync<TClass, RetType(Args...)> {
-
606public:
-
607 typedef std::shared_ptr<TClass> ObjectPtr;
-
608 typedef RetType(TClass::* MemberFunc)(Args...);
-
609 typedef RetType(TClass::* ConstMemberFunc)(Args...) const;
-
610 using ClassType = DelegateMemberSpAsyncWait<TClass, RetType(Args...)>;
-
611 using BaseType = DelegateMemberSpAsync<TClass, RetType(Args...)>;
-
612
-
613 // Contructors take a class instance, member function, and delegate thread
-
-
614 DelegateMemberSpAsyncWait(ObjectPtr object, MemberFunc func, DelegateThread& thread, std::chrono::milliseconds timeout = WAIT_INFINITE) :
-
615 BaseType(object, func, thread), m_timeout(timeout) {
-
616 Bind(object, func, thread);
-
617 }
-
-
-
618 DelegateMemberSpAsyncWait(ObjectPtr object, ConstMemberFunc func, DelegateThread& thread, std::chrono::milliseconds timeout) :
-
619 BaseType(object, func, thread), m_timeout(timeout) {
-
620 Bind(object, func, thread);
-
621 }
-
-
- -
623 BaseType(rhs) {
-
624 Assign(rhs);
-
625 }
-
- -
627
-
-
629 void Bind(ObjectPtr object, MemberFunc func, DelegateThread& thread) {
-
630 BaseType::Bind(object, func, thread);
-
631 }
+
+
603 auto AsyncInvoke(Args... args) {
+
604 if constexpr (std::is_void<RetType>::value == true) {
+
605 operator()(args...);
+
606 return IsSuccess() ? std::optional<bool>(true) : std::optional<bool>();
+
607 } else {
+
608 auto retVal = operator()(args...);
+
609 return IsSuccess() ? std::optional<RetType>(retVal) : std::optional<RetType>();
+
610 }
+
611 }
-
632
-
-
634 void Bind(ObjectPtr object, ConstMemberFunc func, DelegateThread& thread) {
-
635 BaseType::Bind(object, func, thread);
-
636 }
-
-
637
-
638 // <common_code>
-
639
-
-
644 void Assign(const ClassType& rhs) {
-
645 m_timeout = rhs.m_timeout;
-
646 BaseType::Assign(rhs);
-
647 }
-
-
648
-
-
654 virtual ClassType* Clone() const override {
-
655 return new ClassType(*this);
-
656 }
-
-
657
-
- -
662 if (&rhs != this) {
-
663 BaseType::operator=(rhs);
-
664 Assign(rhs);
+
612
+
+
623 virtual void DelegateInvoke(std::shared_ptr<DelegateMsg> msg) override {
+
624 // Typecast the base pointer to back correct derived to instance
+
625 auto delegateMsg = std::dynamic_pointer_cast<DelegateAsyncWaitMsg<Args...>>(msg);
+
626 if (delegateMsg == nullptr)
+
627 throw std::invalid_argument("Invalid DelegateAsyncWaitMsg cast");
+
628
+
629 // Protect data shared between source and destination threads
+
630 const std::lock_guard<std::mutex> lock(delegateMsg->GetLock());
+
631
+
632 // Is the source thread waiting for the target function invoke to complete?
+
633 if (delegateMsg->GetInvokerWaiting()) {
+
634 // Invoke the delegate function synchronously
+
635 this->SetSync(true);
+
636
+
637 // Does target function have a void return value?
+
638 if constexpr (std::is_void<RetType>::value == true) {
+
639 // Invoke the target function using the source thread supplied function arguments
+
640 std::apply(&BaseType::operator(), std::tuple_cat(std::make_tuple(this), delegateMsg->GetArgs()));
+
641 } else {
+
642 // Invoke the target function using the source thread supplied function arguments
+
643 // and get the return value
+
644 m_retVal = std::apply(&BaseType::operator(), std::tuple_cat(std::make_tuple(this), delegateMsg->GetArgs()));
+
645 }
+
646
+
647 // Signal the source thread that the destination thread function call is complete
+
648 delegateMsg->GetSema().Signal();
+
649 }
+
650 }
+
+
651
+
655 bool IsSuccess() noexcept { return m_success; }
+
656
+
+
659 RetType GetRetVal() noexcept {
+
660 try {
+
661 return std::any_cast<RetType>(m_retVal);
+
662 }
+
663 catch (const std::bad_any_cast&) {
+
664 return RetType{}; // Return a default value if error
665 }
-
666 return *this;
-
667 }
+
666 }
+
+
667
+
668private:
+
670 bool m_success = false;
+
671
+
673 std::chrono::milliseconds m_timeout;
+
674
+
676 std::any m_retVal;
+
677
+
678 // </common_code>
+
679};
+
+
680
+
681template <class R>
+
682struct DelegateFunctionAsyncWait; // Not defined
+
683
+
690template <class RetType, class... Args>
+
+
691class DelegateFunctionAsyncWait<RetType(Args...)> : public DelegateFunctionAsync<RetType(Args...)> {
+
692public:
+
693 using FunctionType = std::function<RetType(Args...)>;
+
694 using ClassType = DelegateFunctionAsyncWait<RetType(Args...)>;
+
695 using BaseType = DelegateFunctionAsync<RetType(Args...)>;
+
696
+
+
702 DelegateFunctionAsyncWait(FunctionType func, DelegateThread& thread, std::chrono::milliseconds timeout = WAIT_INFINITE) :
+
703 BaseType(func, thread), m_timeout(timeout) {
+
704 Bind(func, thread);
+
705 }
+
+
706
+
+ +
713 BaseType(rhs) {
+
714 Assign(rhs);
+
715 }
+
+
716
+
+ +
720 BaseType(rhs), m_timeout(rhs.m_timeout) {
+
721 rhs.Clear();
+
722 }
-
668
-
-
672 ClassType& operator=(ClassType&& rhs) noexcept {
-
673 if (&rhs != this) {
-
674 BaseType::operator=(std::move(rhs));
-
675 m_timeout = rhs.m_timeout; // Use the resource
-
676 }
-
677 return *this;
-
678 }
-
-
679
-
-
683 virtual bool operator==(const DelegateBase& rhs) const override {
-
684 auto derivedRhs = dynamic_cast<const ClassType*>(&rhs);
-
685 return derivedRhs &&
-
686 m_timeout == derivedRhs->m_timeout &&
-
687 BaseType::operator==(rhs);
-
688 }
-
-
689
-
-
711 virtual RetType operator()(Args... args) override {
-
712 // Synchronously invoke the target function?
-
713 if (this->GetSync()) {
-
714 // Invoke the target function directly
-
715 return BaseType::operator()(std::forward<Args>(args)...);
-
716 } else {
-
717 // Create a clone instance of this delegate
-
718 auto delegate = std::shared_ptr<ClassType>(Clone());
-
719
-
720 // Create a new message instance for sending to the destination thread.
-
721 auto msg = std::make_shared<DelegateAsyncWaitMsg<Args...>>(delegate, std::forward<Args>(args)...);
-
722 msg->SetInvokerWaiting(true);
723
-
724 // Dispatch message onto the callback destination thread. DelegateInvoke()
-
725 // will be called by the destination thread.
-
726 this->GetThread().DispatchDelegate(msg);
-
727
-
728 // Wait for destination thread to execute the delegate function and get return value
-
729 if ((m_success = msg->GetSema().Wait(m_timeout)))
-
730 m_retVal = delegate->m_retVal;
-
731
-
732 // Protect data shared between source and destination threads
-
733 const std::lock_guard<std::mutex> lock(msg->GetLock());
-
734
-
735 // Set flag that source is not waiting anymore
-
736 msg->SetInvokerWaiting(false);
+ +
725
+
+
732 void Bind(FunctionType func, DelegateThread& thread) {
+
733 BaseType::Bind(func, thread);
+
734 }
+
+
735
+
736 // <common_code>
737
-
738 // Does the target function have a return value?
-
739 if constexpr (std::is_void<RetType>::value == false) {
-
740 // Is the return value valid?
-
741 if (m_retVal.has_value()) {
-
742 // Return the destination thread target function return value
-
743 return GetRetVal();
-
744 } else {
-
745 // Return a default return value
-
746 return RetType{};
-
747 }
-
748 }
-
749 }
-
750 }
-
-
751
-
-
758 auto AsyncInvoke(Args... args) {
-
759 if constexpr (std::is_void<RetType>::value == true) {
-
760 operator()(args...);
-
761 return IsSuccess() ? std::optional<bool>(true) : std::optional<bool>();
-
762 } else {
-
763 auto retVal = operator()(args...);
-
764 return IsSuccess() ? std::optional<RetType>(retVal) : std::optional<RetType>();
-
765 }
-
766 }
-
-
767
-
-
778 virtual void DelegateInvoke(std::shared_ptr<DelegateMsg> msg) override {
-
779 // Typecast the base pointer to back correct derived to instance
-
780 auto delegateMsg = std::dynamic_pointer_cast<DelegateAsyncWaitMsg<Args...>>(msg);
-
781 if (delegateMsg == nullptr)
-
782 throw std::invalid_argument("Invalid DelegateAsyncWaitMsg cast");
-
783
-
784 // Protect data shared between source and destination threads
-
785 const std::lock_guard<std::mutex> lock(delegateMsg->GetLock());
-
786
-
787 // Is the source thread waiting for the target function invoke to complete?
-
788 if (delegateMsg->GetInvokerWaiting()) {
-
789 // Invoke the delegate function synchronously
-
790 this->SetSync(true);
-
791
-
792 // Does target function have a void return value?
-
793 if constexpr (std::is_void<RetType>::value == true) {
-
794 // Invoke the target function using the source thread supplied function arguments
-
795 std::apply(&BaseType::operator(), std::tuple_cat(std::make_tuple(this), delegateMsg->GetArgs()));
-
796 } else {
-
797 // Invoke the target function using the source thread supplied function arguments
-
798 // and get the return value
-
799 m_retVal = std::apply(&BaseType::operator(), std::tuple_cat(std::make_tuple(this), delegateMsg->GetArgs()));
-
800 }
-
801
-
802 // Signal the source thread that the destination thread function call is complete
-
803 delegateMsg->GetSema().Signal();
-
804 }
-
805 }
-
-
806
-
810 bool IsSuccess() noexcept { return m_success; }
-
811
-
-
814 RetType GetRetVal() noexcept {
-
815 try {
-
816 return std::any_cast<RetType>(m_retVal);
-
817 }
-
818 catch (const std::bad_any_cast&) {
-
819 return RetType{}; // Return a default value if error
-
820 }
-
821 }
-
-
822
-
823private:
-
825 bool m_success = false;
-
826
-
828 std::chrono::milliseconds m_timeout;
+
+
742 void Assign(const ClassType& rhs) {
+
743 m_timeout = rhs.m_timeout;
+
744 BaseType::Assign(rhs);
+
745 }
+
+
746
+
+
752 virtual ClassType* Clone() const override {
+
753 return new ClassType(*this);
+
754 }
+
+
755
+
+ +
760 if (&rhs != this) {
+
761 BaseType::operator=(rhs);
+
762 Assign(rhs);
+
763 }
+
764 return *this;
+
765 }
+
+
766
+
+
770 ClassType& operator=(ClassType&& rhs) noexcept {
+
771 if (&rhs != this) {
+
772 BaseType::operator=(std::move(rhs));
+
773 m_timeout = rhs.m_timeout; // Use the resource
+
774 }
+
775 return *this;
+
776 }
+
+
777
+
+
781 virtual bool operator==(const DelegateBase& rhs) const override {
+
782 auto derivedRhs = dynamic_cast<const ClassType*>(&rhs);
+
783 return derivedRhs &&
+
784 m_timeout == derivedRhs->m_timeout &&
+
785 BaseType::operator==(rhs);
+
786 }
+
+
787
+
+
809 virtual RetType operator()(Args... args) override {
+
810 // Synchronously invoke the target function?
+
811 if (this->GetSync()) {
+
812 // Invoke the target function directly
+
813 return BaseType::operator()(std::forward<Args>(args)...);
+
814 } else {
+
815 // Create a clone instance of this delegate
+
816 auto delegate = std::shared_ptr<ClassType>(Clone());
+
817
+
818 // Create a new message instance for sending to the destination thread.
+
819 auto msg = std::make_shared<DelegateAsyncWaitMsg<Args...>>(delegate, std::forward<Args>(args)...);
+
820 msg->SetInvokerWaiting(true);
+
821
+
822 // Dispatch message onto the callback destination thread. DelegateInvoke()
+
823 // will be called by the destination thread.
+
824 this->GetThread().DispatchDelegate(msg);
+
825
+
826 // Wait for destination thread to execute the delegate function and get return value
+
827 if ((m_success = msg->GetSema().Wait(m_timeout)))
+
828 m_retVal = delegate->m_retVal;
829
-
831 std::any m_retVal;
+
830 // Protect data shared between source and destination threads
+
831 const std::lock_guard<std::mutex> lock(msg->GetLock());
832
-
833 // </common_code>
-
834};
-
+
833 // Set flag that source is not waiting anymore
+
834 msg->SetInvokerWaiting(false);
835
-
836template <class R>
-
837struct DelegateFunctionAsyncWait; // Not defined
-
838
-
845template <class RetType, class... Args>
-
-
846class DelegateFunctionAsyncWait<RetType(Args...)> : public DelegateFunctionAsync<RetType(Args...)> {
-
847public:
-
848 using FunctionType = std::function<RetType(Args...)>;
-
849 using ClassType = DelegateFunctionAsyncWait<RetType(Args...)>;
-
850 using BaseType = DelegateFunctionAsync<RetType(Args...)>;
-
851
-
852 // Contructors take a std::function, delegate thread and timeout
-
-
853 DelegateFunctionAsyncWait(FunctionType func, DelegateThread& thread, std::chrono::milliseconds timeout = WAIT_INFINITE) :
-
854 BaseType(func, thread), m_timeout(timeout) {
-
855 Bind(func, thread);
-
856 }
-
-
- -
858 BaseType(rhs) {
-
859 Assign(rhs);
-
860 }
-
- -
862
-
-
864 void Bind(FunctionType func, DelegateThread& thread) {
-
865 BaseType::Bind(func, thread);
-
866 }
-
-
867
-
868 // <common_code>
-
869
-
-
874 void Assign(const ClassType& rhs) {
-
875 m_timeout = rhs.m_timeout;
-
876 BaseType::Assign(rhs);
-
877 }
-
-
878
-
-
884 virtual ClassType* Clone() const override {
-
885 return new ClassType(*this);
-
886 }
-
-
887
-
- -
892 if (&rhs != this) {
-
893 BaseType::operator=(rhs);
-
894 Assign(rhs);
-
895 }
-
896 return *this;
-
897 }
-
-
898
-
-
902 ClassType& operator=(ClassType&& rhs) noexcept {
-
903 if (&rhs != this) {
-
904 BaseType::operator=(std::move(rhs));
-
905 m_timeout = rhs.m_timeout; // Use the resource
-
906 }
-
907 return *this;
-
908 }
-
+
836 // Does the target function have a return value?
+
837 if constexpr (std::is_void<RetType>::value == false) {
+
838 // Is the return value valid?
+
839 if (m_retVal.has_value()) {
+
840 // Return the destination thread target function return value
+
841 return GetRetVal();
+
842 } else {
+
843 // Return a default return value
+
844 return RetType{};
+
845 }
+
846 }
+
847 }
+
848 }
+
+
849
+
+
856 auto AsyncInvoke(Args... args) {
+
857 if constexpr (std::is_void<RetType>::value == true) {
+
858 operator()(args...);
+
859 return IsSuccess() ? std::optional<bool>(true) : std::optional<bool>();
+
860 } else {
+
861 auto retVal = operator()(args...);
+
862 return IsSuccess() ? std::optional<RetType>(retVal) : std::optional<RetType>();
+
863 }
+
864 }
+
+
865
+
+
876 virtual void DelegateInvoke(std::shared_ptr<DelegateMsg> msg) override {
+
877 // Typecast the base pointer to back correct derived to instance
+
878 auto delegateMsg = std::dynamic_pointer_cast<DelegateAsyncWaitMsg<Args...>>(msg);
+
879 if (delegateMsg == nullptr)
+
880 throw std::invalid_argument("Invalid DelegateAsyncWaitMsg cast");
+
881
+
882 // Protect data shared between source and destination threads
+
883 const std::lock_guard<std::mutex> lock(delegateMsg->GetLock());
+
884
+
885 // Is the source thread waiting for the target function invoke to complete?
+
886 if (delegateMsg->GetInvokerWaiting()) {
+
887 // Invoke the delegate function synchronously
+
888 this->SetSync(true);
+
889
+
890 // Does target function have a void return value?
+
891 if constexpr (std::is_void<RetType>::value == true) {
+
892 // Invoke the target function using the source thread supplied function arguments
+
893 std::apply(&BaseType::operator(), std::tuple_cat(std::make_tuple(this), delegateMsg->GetArgs()));
+
894 } else {
+
895 // Invoke the target function using the source thread supplied function arguments
+
896 // and get the return value
+
897 m_retVal = std::apply(&BaseType::operator(), std::tuple_cat(std::make_tuple(this), delegateMsg->GetArgs()));
+
898 }
+
899
+
900 // Signal the source thread that the destination thread function call is complete
+
901 delegateMsg->GetSema().Signal();
+
902 }
+
903 }
+
+
904
+
908 bool IsSuccess() noexcept { return m_success; }
909
-
-
913 virtual bool operator==(const DelegateBase& rhs) const override {
-
914 auto derivedRhs = dynamic_cast<const ClassType*>(&rhs);
-
915 return derivedRhs &&
-
916 m_timeout == derivedRhs->m_timeout &&
-
917 BaseType::operator==(rhs);
-
918 }
-
-
919
-
-
941 virtual RetType operator()(Args... args) override {
-
942 // Synchronously invoke the target function?
-
943 if (this->GetSync()) {
-
944 // Invoke the target function directly
-
945 return BaseType::operator()(std::forward<Args>(args)...);
-
946 } else {
-
947 // Create a clone instance of this delegate
-
948 auto delegate = std::shared_ptr<ClassType>(Clone());
-
949
-
950 // Create a new message instance for sending to the destination thread.
-
951 auto msg = std::make_shared<DelegateAsyncWaitMsg<Args...>>(delegate, std::forward<Args>(args)...);
-
952 msg->SetInvokerWaiting(true);
-
953
-
954 // Dispatch message onto the callback destination thread. DelegateInvoke()
-
955 // will be called by the destination thread.
-
956 this->GetThread().DispatchDelegate(msg);
-
957
-
958 // Wait for destination thread to execute the delegate function and get return value
-
959 if ((m_success = msg->GetSema().Wait(m_timeout)))
-
960 m_retVal = delegate->m_retVal;
-
961
-
962 // Protect data shared between source and destination threads
-
963 const std::lock_guard<std::mutex> lock(msg->GetLock());
-
964
-
965 // Set flag that source is not waiting anymore
-
966 msg->SetInvokerWaiting(false);
-
967
-
968 // Does the target function have a return value?
-
969 if constexpr (std::is_void<RetType>::value == false) {
-
970 // Is the return value valid?
-
971 if (m_retVal.has_value()) {
-
972 // Return the destination thread target function return value
-
973 return GetRetVal();
-
974 } else {
-
975 // Return a default return value
-
976 return RetType{};
-
977 }
-
978 }
-
979 }
-
980 }
-
-
981
-
-
988 auto AsyncInvoke(Args... args) {
-
989 if constexpr (std::is_void<RetType>::value == true) {
-
990 operator()(args...);
-
991 return IsSuccess() ? std::optional<bool>(true) : std::optional<bool>();
-
992 } else {
-
993 auto retVal = operator()(args...);
-
994 return IsSuccess() ? std::optional<RetType>(retVal) : std::optional<RetType>();
-
995 }
-
996 }
-
-
997
-
-
1008 virtual void DelegateInvoke(std::shared_ptr<DelegateMsg> msg) override {
-
1009 // Typecast the base pointer to back correct derived to instance
-
1010 auto delegateMsg = std::dynamic_pointer_cast<DelegateAsyncWaitMsg<Args...>>(msg);
-
1011 if (delegateMsg == nullptr)
-
1012 throw std::invalid_argument("Invalid DelegateAsyncWaitMsg cast");
-
1013
-
1014 // Protect data shared between source and destination threads
-
1015 const std::lock_guard<std::mutex> lock(delegateMsg->GetLock());
+
+
912 RetType GetRetVal() noexcept {
+
913 try {
+
914 return std::any_cast<RetType>(m_retVal);
+
915 }
+
916 catch (const std::bad_any_cast&) {
+
917 return RetType{}; // Return a default value if error
+
918 }
+
919 }
+
+
920
+
921private:
+
923 bool m_success = false;
+
924
+
926 std::chrono::milliseconds m_timeout;
+
927
+
929 std::any m_retVal;
+
930
+
931 // </common_code>
+
932};
+
+
933
+
941template <class RetType, class... Args>
+
+
942DelegateFreeAsyncWait<RetType(Args...)> MakeDelegate(RetType(*func)(Args... args), DelegateThread& thread, std::chrono::milliseconds timeout) {
+
943 return DelegateFreeAsyncWait<RetType(Args...)>(func, thread, timeout);
+
944}
+
+
945
+
955template <class TClass, class RetType, class... Args>
+
+
956DelegateMemberAsyncWait<TClass, RetType(Args...)> MakeDelegate(TClass* object, RetType(TClass::*func)(Args... args), DelegateThread& thread, std::chrono::milliseconds timeout) {
+
957 return DelegateMemberAsyncWait<TClass, RetType(Args...)>(object, func, thread, timeout);
+
958}
+
+
959
+
969template <class TClass, class RetType, class... Args>
+
970DelegateMemberAsyncWait<TClass, RetType(Args...)> MakeDelegate(TClass* object, RetType(TClass::*func)(Args... args) const, DelegateThread& thread, std::chrono::milliseconds timeout) {
+
971 return DelegateMemberAsyncWait<TClass, RetType(Args...)>(object, func, thread, timeout);
+
972}
+
973
+
974
+
984template <class TClass, class RetVal, class... Args>
+
+
985DelegateMemberAsyncWait<TClass, RetVal(Args...)> MakeDelegate(std::shared_ptr<TClass> object, RetVal(TClass::* func)(Args... args), DelegateThread& thread, std::chrono::milliseconds timeout) {
+
986 return DelegateMemberAsyncWait<TClass, RetVal(Args...)>(object, func, thread, timeout);
+
987}
+
+
988
+
998template <class TClass, class RetVal, class... Args>
+
999DelegateMemberAsyncWait<TClass, RetVal(Args...)> MakeDelegate(std::shared_ptr<TClass> object, RetVal(TClass::* func)(Args... args) const, DelegateThread& thread, std::chrono::milliseconds timeout) {
+
1000 return DelegateMemberAsyncWait<TClass, RetVal(Args...)>(object, func, thread, timeout);
+
1001}
+
1002
+
1010template <class RetType, class... Args>
+
+
1011DelegateFunctionAsyncWait<RetType(Args...)> MakeDelegate(std::function<RetType(Args...)> func, DelegateThread& thread, std::chrono::milliseconds timeout) {
+
1012 return DelegateFunctionAsyncWait<RetType(Args...)>(func, thread, timeout);
+
1013}
+
+
1014
+
1015}
1016
-
1017 // Is the source thread waiting for the target function invoke to complete?
-
1018 if (delegateMsg->GetInvokerWaiting()) {
-
1019 // Invoke the delegate function synchronously
-
1020 this->SetSync(true);
-
1021
-
1022 // Does target function have a void return value?
-
1023 if constexpr (std::is_void<RetType>::value == true) {
-
1024 // Invoke the target function using the source thread supplied function arguments
-
1025 std::apply(&BaseType::operator(), std::tuple_cat(std::make_tuple(this), delegateMsg->GetArgs()));
-
1026 } else {
-
1027 // Invoke the target function using the source thread supplied function arguments
-
1028 // and get the return value
-
1029 m_retVal = std::apply(&BaseType::operator(), std::tuple_cat(std::make_tuple(this), delegateMsg->GetArgs()));
-
1030 }
-
1031
-
1032 // Signal the source thread that the destination thread function call is complete
-
1033 delegateMsg->GetSema().Signal();
-
1034 }
-
1035 }
-
-
1036
-
1040 bool IsSuccess() noexcept { return m_success; }
-
1041
-
-
1044 RetType GetRetVal() noexcept {
-
1045 try {
-
1046 return std::any_cast<RetType>(m_retVal);
-
1047 }
-
1048 catch (const std::bad_any_cast&) {
-
1049 return RetType{}; // Return a default value if error
-
1050 }
-
1051 }
-
-
1052
-
1053private:
-
1055 bool m_success = false;
-
1056
-
1058 std::chrono::milliseconds m_timeout;
-
1059
-
1061 std::any m_retVal;
-
1062
-
1063 // </common_code>
-
1064};
-
-
1065
-
1073template <class RetType, class... Args>
-
-
1074DelegateFreeAsyncWait<RetType(Args...)> MakeDelegate(RetType(*func)(Args... args), DelegateThread& thread, std::chrono::milliseconds timeout) {
-
1075 return DelegateFreeAsyncWait<RetType(Args...)>(func, thread, timeout);
-
1076}
-
-
1077
-
1087template <class TClass, class RetType, class... Args>
-
-
1088DelegateMemberAsyncWait<TClass, RetType(Args...)> MakeDelegate(TClass* object, RetType(TClass::*func)(Args... args), DelegateThread& thread, std::chrono::milliseconds timeout) {
-
1089 return DelegateMemberAsyncWait<TClass, RetType(Args...)>(object, func, thread, timeout);
-
1090}
-
-
1091
-
1101template <class TClass, class RetType, class... Args>
-
1102DelegateMemberAsyncWait<TClass, RetType(Args...)> MakeDelegate(TClass* object, RetType(TClass::*func)(Args... args) const, DelegateThread& thread, std::chrono::milliseconds timeout) {
-
1103 return DelegateMemberAsyncWait<TClass, RetType(Args...)>(object, func, thread, timeout);
-
1104}
-
1105
-
1106
-
1116template <class TClass, class RetVal, class... Args>
-
-
1117DelegateMemberSpAsyncWait<TClass, RetVal(Args...)> MakeDelegate(std::shared_ptr<TClass> object, RetVal(TClass::* func)(Args... args), DelegateThread& thread, std::chrono::milliseconds timeout) {
-
1118 return DelegateMemberSpAsyncWait<TClass, RetVal(Args...)>(object, func, thread, timeout);
-
1119}
-
-
1120
-
1130template <class TClass, class RetVal, class... Args>
-
1131DelegateMemberSpAsyncWait<TClass, RetVal(Args...)> MakeDelegate(std::shared_ptr<TClass> object, RetVal(TClass::* func)(Args... args) const, DelegateThread& thread, std::chrono::milliseconds timeout) {
-
1132 return DelegateMemberSpAsyncWait<TClass, RetVal(Args...)>(object, func, thread, timeout);
-
1133}
-
1134
-
1142template <class RetType, class... Args>
-
-
1143DelegateFunctionAsyncWait<RetType(Args...)> MakeDelegate(std::function<RetType(Args...)> func, DelegateThread& thread, std::chrono::milliseconds timeout) {
-
1144 return DelegateFunctionAsyncWait<RetType(Args...)>(func, thread, timeout);
-
1145}
-
-
1146
-
1147}
-
1148
-
1149#endif
+
1017#endif
Delegate "`Async`" series of classes used to invoke a function asynchronously.
Delegate inter-thread invoker base class.
A base class for a delegate enabled execution thread.
@@ -989,92 +834,81 @@
virtual ~DelegateAsyncWaitMsg()
Definition DelegateAsyncWait.h:66
DelegateAsyncWaitMsg(std::shared_ptr< IDelegateInvoker > invoker, Args... args)
Definition DelegateAsyncWait.h:61
Non-template base class for all delegates.
Definition Delegate.h:21
+
void Clear() noexcept
Clear the target function.
Definition Delegate.h:168
DelegateFreeAsync<> class asynchronously invokes a free target function.
Definition DelegateAsync.h:65
DelegateFreeAsyncWait<> class asynchronously block invokes a free target function.
Definition DelegateAsyncWait.h:116
DelegateFreeAsyncWait(const ClassType &rhs)
Copy constructor that creates a copy of the given instance.
Definition DelegateAsyncWait.h:137
DelegateFreeAsyncWait(ClassType &&rhs) noexcept
Move constructor that transfers ownership of resources.
Definition DelegateAsyncWait.h:144
-
bool IsSuccess() noexcept
Definition DelegateAsyncWait.h:332
+
bool IsSuccess() noexcept
Definition DelegateAsyncWait.h:333
-
RetType GetRetVal() noexcept
Definition DelegateAsyncWait.h:336
-
virtual RetType operator()(Args... args) override
Invoke delegate function asynchronously and block for function return value. Called by the source thr...
Definition DelegateAsyncWait.h:233
-
void Bind(FreeFunc func, DelegateThread &thread)
Bind a free function to the delegate.
Definition DelegateAsyncWait.h:156
+
RetType GetRetVal() noexcept
Definition DelegateAsyncWait.h:337
+
virtual RetType operator()(Args... args) override
Invoke delegate function asynchronously and block for function return value. Called by the source thr...
Definition DelegateAsyncWait.h:234
+
void Bind(FreeFunc func, DelegateThread &thread)
Bind a free function to the delegate.
Definition DelegateAsyncWait.h:157
DelegateFreeAsyncWait(FreeFunc func, DelegateThread &thread, std::chrono::milliseconds timeout=WAIT_INFINITE)
Constructor to create a class instance.
Definition DelegateAsyncWait.h:127
-
ClassType & operator=(ClassType &&rhs) noexcept
Move assignment operator that transfers ownership of resources.
Definition DelegateAsyncWait.h:194
-
virtual ClassType * Clone() const override
Creates a copy of the current object.
Definition DelegateAsyncWait.h:176
-
auto AsyncInvoke(Args... args)
Invoke delegate function asynchronously and block for function return value. Called by the source thr...
Definition DelegateAsyncWait.h:280
-
ClassType & operator=(const ClassType &rhs)
Assignment operator that assigns the state of one object to another.
Definition DelegateAsyncWait.h:183
-
void Assign(const ClassType &rhs)
Assigns the state of one object to another.
Definition DelegateAsyncWait.h:166
-
virtual bool operator==(const DelegateBase &rhs) const override
Compares two delegate objects for equality.
Definition DelegateAsyncWait.h:205
-
virtual void DelegateInvoke(std::shared_ptr< DelegateMsg > msg) override
Invoke the delegate function on the destination thread. Called by the destination thread.
Definition DelegateAsyncWait.h:300
-
DelegateFunctionAsync<> class asynchronously invokes a std::function target function.
Definition DelegateAsync.h:695
-
DelegateFunctionAsyncWait<> class asynchronously block invokes a std::function target function.
Definition DelegateAsyncWait.h:846
-
virtual ClassType * Clone() const override
Creates a copy of the current object.
Definition DelegateAsyncWait.h:884
-
void Assign(const ClassType &rhs)
Assigns the state of one object to another.
Definition DelegateAsyncWait.h:874
-
virtual bool operator==(const DelegateBase &rhs) const override
Compares two delegate objects for equality.
Definition DelegateAsyncWait.h:913
-
DelegateFunctionAsyncWait(FunctionType func, DelegateThread &thread, std::chrono::milliseconds timeout=WAIT_INFINITE)
Definition DelegateAsyncWait.h:853
-
RetType GetRetVal() noexcept
Definition DelegateAsyncWait.h:1044
-
auto AsyncInvoke(Args... args)
Invoke delegate function asynchronously and block for function return value. Called by the source thr...
Definition DelegateAsyncWait.h:988
-
DelegateFunctionAsyncWait(const ClassType &rhs)
Definition DelegateAsyncWait.h:857
-
void Bind(FunctionType func, DelegateThread &thread)
Bind a std::function to a delegate.
Definition DelegateAsyncWait.h:864
-
bool IsSuccess() noexcept
Definition DelegateAsyncWait.h:1040
-
ClassType & operator=(const ClassType &rhs)
Assignment operator that assigns the state of one object to another.
Definition DelegateAsyncWait.h:891
-
std::function< RetType(Args...)> FunctionType
Definition DelegateAsyncWait.h:848
-
virtual void DelegateInvoke(std::shared_ptr< DelegateMsg > msg) override
Invoke the delegate function on the destination thread. Called by the destination thread.
Definition DelegateAsyncWait.h:1008
-
virtual RetType operator()(Args... args) override
Invoke delegate function asynchronously and block for function return value. Called by the source thr...
Definition DelegateAsyncWait.h:941
-
ClassType & operator=(ClassType &&rhs) noexcept
Move assignment operator that transfers ownership of resources.
Definition DelegateAsyncWait.h:902
+
ClassType & operator=(ClassType &&rhs) noexcept
Move assignment operator that transfers ownership of resources.
Definition DelegateAsyncWait.h:195
+
virtual ClassType * Clone() const override
Creates a copy of the current object.
Definition DelegateAsyncWait.h:177
+
auto AsyncInvoke(Args... args)
Invoke delegate function asynchronously and block for function return value. Called by the source thr...
Definition DelegateAsyncWait.h:281
+
ClassType & operator=(const ClassType &rhs)
Assignment operator that assigns the state of one object to another.
Definition DelegateAsyncWait.h:184
+
void Assign(const ClassType &rhs)
Assigns the state of one object to another.
Definition DelegateAsyncWait.h:167
+
virtual bool operator==(const DelegateBase &rhs) const override
Compares two delegate objects for equality.
Definition DelegateAsyncWait.h:206
+
virtual void DelegateInvoke(std::shared_ptr< DelegateMsg > msg) override
Invoke the delegate function on the destination thread. Called by the destination thread.
Definition DelegateAsyncWait.h:301
+
void Clear() noexcept
Clear the target function.
Definition Delegate.h:480
+
DelegateFunctionAsync<> class asynchronously invokes a std::function target function.
Definition DelegateAsync.h:532
+
DelegateFunctionAsyncWait<> class asynchronously block invokes a std::function target function.
Definition DelegateAsyncWait.h:691
+
virtual ClassType * Clone() const override
Creates a copy of the current object.
Definition DelegateAsyncWait.h:752
+
void Assign(const ClassType &rhs)
Assigns the state of one object to another.
Definition DelegateAsyncWait.h:742
+
virtual bool operator==(const DelegateBase &rhs) const override
Compares two delegate objects for equality.
Definition DelegateAsyncWait.h:781
+
DelegateFunctionAsyncWait(FunctionType func, DelegateThread &thread, std::chrono::milliseconds timeout=WAIT_INFINITE)
Constructor to create a class instance.
Definition DelegateAsyncWait.h:702
+
RetType GetRetVal() noexcept
Definition DelegateAsyncWait.h:912
+
auto AsyncInvoke(Args... args)
Invoke delegate function asynchronously and block for function return value. Called by the source thr...
Definition DelegateAsyncWait.h:856
+
DelegateFunctionAsyncWait(const ClassType &rhs)
Copy constructor that creates a copy of the given instance.
Definition DelegateAsyncWait.h:712
+
void Bind(FunctionType func, DelegateThread &thread)
Bind a std::function to the delegate.
Definition DelegateAsyncWait.h:732
+
bool IsSuccess() noexcept
Definition DelegateAsyncWait.h:908
+
DelegateFunctionAsyncWait(ClassType &&rhs) noexcept
Move constructor that transfers ownership of resources.
Definition DelegateAsyncWait.h:719
+
ClassType & operator=(const ClassType &rhs)
Assignment operator that assigns the state of one object to another.
Definition DelegateAsyncWait.h:759
+
std::function< RetType(Args...)> FunctionType
Definition DelegateAsyncWait.h:693
+
virtual void DelegateInvoke(std::shared_ptr< DelegateMsg > msg) override
Invoke the delegate function on the destination thread. Called by the destination thread.
Definition DelegateAsyncWait.h:876
+
virtual RetType operator()(Args... args) override
Invoke delegate function asynchronously and block for function return value. Called by the source thr...
Definition DelegateAsyncWait.h:809
+
ClassType & operator=(ClassType &&rhs) noexcept
Move assignment operator that transfers ownership of resources.
Definition DelegateAsyncWait.h:770
-
DelegateMemberAsync<> class asynchronously invokes a class member target function.
Definition DelegateAsync.h:263
-
DelegateMemberAsyncWait<> class asynchronously block invokes a class member target function.
Definition DelegateAsyncWait.h:366
-
DelegateMemberAsyncWait(const ClassType &rhs)
Definition DelegateAsyncWait.h:383
-
void Assign(const ClassType &rhs)
Assigns the state of one object to another.
Definition DelegateAsyncWait.h:405
-
virtual void DelegateInvoke(std::shared_ptr< DelegateMsg > msg) override
Invoke the delegate function on the destination thread. Called by the destination thread.
Definition DelegateAsyncWait.h:539
-
void Bind(ObjectPtr object, MemberFunc func, DelegateThread &thread)
Bind a member function to a delegate.
Definition DelegateAsyncWait.h:390
-
virtual ClassType * Clone() const override
Creates a copy of the current object.
Definition DelegateAsyncWait.h:415
-
virtual RetType operator()(Args... args) override
Invoke delegate function asynchronously and block for function return value. Called by the source thr...
Definition DelegateAsyncWait.h:472
-
DelegateMemberAsyncWait(ObjectPtr object, ConstMemberFunc func, DelegateThread &thread, std::chrono::milliseconds timeout)
Definition DelegateAsyncWait.h:379
-
RetType GetRetVal() noexcept
Definition DelegateAsyncWait.h:575
-
ClassType & operator=(const ClassType &rhs)
Assignment operator that assigns the state of one object to another.
Definition DelegateAsyncWait.h:422
-
auto AsyncInvoke(Args... args)
Invoke delegate function asynchronously and block for function return value. Called by the source thr...
Definition DelegateAsyncWait.h:519
+
void Clear() noexcept
Clear the target function.
Definition Delegate.h:339
+
DelegateMemberAsync<> class asynchronously invokes a class member target function.
Definition DelegateAsync.h:264
+
DelegateMemberAsyncWait<> class asynchronously block invokes a class member target function.
Definition DelegateAsyncWait.h:367
+
DelegateMemberAsyncWait(const ClassType &rhs)
Copy constructor that creates a copy of the given instance.
Definition DelegateAsyncWait.h:425
+
std::shared_ptr< TClass > SharedPtr
Definition DelegateAsyncWait.h:370
+
void Assign(const ClassType &rhs)
Assigns the state of one object to another.
Definition DelegateAsyncWait.h:489
+
virtual void DelegateInvoke(std::shared_ptr< DelegateMsg > msg) override
Invoke the delegate function on the destination thread. Called by the destination thread.
Definition DelegateAsyncWait.h:623
+
void Bind(ObjectPtr object, MemberFunc func, DelegateThread &thread)
Bind a const member function to the delegate.
Definition DelegateAsyncWait.h:468
+
virtual ClassType * Clone() const override
Creates a copy of the current object.
Definition DelegateAsyncWait.h:499
+
virtual RetType operator()(Args... args) override
Invoke delegate function asynchronously and block for function return value. Called by the source thr...
Definition DelegateAsyncWait.h:556
+
DelegateMemberAsyncWait(ObjectPtr object, ConstMemberFunc func, DelegateThread &thread, std::chrono::milliseconds timeout)
Constructor to create a class instance.
Definition DelegateAsyncWait.h:415
+
void Bind(SharedPtr object, MemberFunc func, DelegateThread &thread)
Bind a const member function to the delegate.
Definition DelegateAsyncWait.h:446
+
DelegateMemberAsyncWait(ClassType &&rhs) noexcept
Move constructor that transfers ownership of resources.
Definition DelegateAsyncWait.h:432
+
RetType GetRetVal() noexcept
Definition DelegateAsyncWait.h:659
+
ClassType & operator=(const ClassType &rhs)
Assignment operator that assigns the state of one object to another.
Definition DelegateAsyncWait.h:506
+
auto AsyncInvoke(Args... args)
Invoke delegate function asynchronously and block for function return value. Called by the source thr...
Definition DelegateAsyncWait.h:603
-
DelegateMemberAsyncWait(ObjectPtr object, MemberFunc func, DelegateThread &thread, std::chrono::milliseconds timeout=WAIT_INFINITE)
Definition DelegateAsyncWait.h:375
-
TClass * ObjectPtr
Definition DelegateAsyncWait.h:368
-
virtual bool operator==(const DelegateBase &rhs) const override
Compares two delegate objects for equality.
Definition DelegateAsyncWait.h:444
-
ClassType & operator=(ClassType &&rhs) noexcept
Move assignment operator that transfers ownership of resources.
Definition DelegateAsyncWait.h:433
-
bool IsSuccess() noexcept
Definition DelegateAsyncWait.h:571
-
void Bind(ObjectPtr object, ConstMemberFunc func, DelegateThread &thread)
Bind a const member function to a delegate.
Definition DelegateAsyncWait.h:395
-
DelegateMemberSpAsync<> class asynchronously invokes a std::shared_ptr target function.
Definition DelegateAsync.h:476
-
DelegateMemberSpAsyncWait<> class asynchronously block invokes a std::shared_ptr target function.
Definition DelegateAsyncWait.h:605
-
ClassType & operator=(ClassType &&rhs) noexcept
Move assignment operator that transfers ownership of resources.
Definition DelegateAsyncWait.h:672
-
void Assign(const ClassType &rhs)
Assigns the state of one object to another.
Definition DelegateAsyncWait.h:644
-
std::shared_ptr< TClass > ObjectPtr
Definition DelegateAsyncWait.h:607
-
RetType GetRetVal() noexcept
Definition DelegateAsyncWait.h:814
-
void Bind(ObjectPtr object, ConstMemberFunc func, DelegateThread &thread)
Bind a const member function to a delegate.
Definition DelegateAsyncWait.h:634
-
auto AsyncInvoke(Args... args)
Invoke delegate function asynchronously and block for function return value. Called by the source thr...
Definition DelegateAsyncWait.h:758
-
ClassType & operator=(const ClassType &rhs)
Assignment operator that assigns the state of one object to another.
Definition DelegateAsyncWait.h:661
-
DelegateMemberSpAsyncWait(const ClassType &rhs)
Definition DelegateAsyncWait.h:622
-
virtual void DelegateInvoke(std::shared_ptr< DelegateMsg > msg) override
Invoke the delegate function on the destination thread. Called by the destination thread.
Definition DelegateAsyncWait.h:778
-
DelegateMemberSpAsyncWait(ObjectPtr object, ConstMemberFunc func, DelegateThread &thread, std::chrono::milliseconds timeout)
Definition DelegateAsyncWait.h:618
-
DelegateMemberSpAsyncWait(ObjectPtr object, MemberFunc func, DelegateThread &thread, std::chrono::milliseconds timeout=WAIT_INFINITE)
Definition DelegateAsyncWait.h:614
-
void Bind(ObjectPtr object, MemberFunc func, DelegateThread &thread)
Bind a member function to a delegate.
Definition DelegateAsyncWait.h:629
- -
virtual bool operator==(const DelegateBase &rhs) const override
Compares two delegate objects for equality.
Definition DelegateAsyncWait.h:683
-
virtual ClassType * Clone() const override
Creates a copy of the current object.
Definition DelegateAsyncWait.h:654
-
virtual RetType operator()(Args... args) override
Invoke delegate function asynchronously and block for function return value. Called by the source thr...
Definition DelegateAsyncWait.h:711
-
bool IsSuccess() noexcept
Definition DelegateAsyncWait.h:810
+
DelegateMemberAsyncWait(ObjectPtr object, MemberFunc func, DelegateThread &thread, std::chrono::milliseconds timeout=WAIT_INFINITE)
Constructor to create a class instance.
Definition DelegateAsyncWait.h:404
+
TClass * ObjectPtr
Definition DelegateAsyncWait.h:369
+
virtual bool operator==(const DelegateBase &rhs) const override
Compares two delegate objects for equality.
Definition DelegateAsyncWait.h:528
+
ClassType & operator=(ClassType &&rhs) noexcept
Move assignment operator that transfers ownership of resources.
Definition DelegateAsyncWait.h:517
+
DelegateMemberAsyncWait(SharedPtr object, MemberFunc func, DelegateThread &thread, std::chrono::milliseconds timeout=WAIT_INFINITE)
Constructor to create a class instance.
Definition DelegateAsyncWait.h:382
+
bool IsSuccess() noexcept
Definition DelegateAsyncWait.h:655
+
void Bind(SharedPtr object, ConstMemberFunc func, DelegateThread &thread)
Bind a member function to the delegate.
Definition DelegateAsyncWait.h:457
+
void Bind(ObjectPtr object, ConstMemberFunc func, DelegateThread &thread)
Bind a member function to the delegate.
Definition DelegateAsyncWait.h:479
+
DelegateMemberAsyncWait(SharedPtr object, ConstMemberFunc func, DelegateThread &thread, std::chrono::milliseconds timeout)
Constructor to create a class instance.
Definition DelegateAsyncWait.h:393
Base class for all delegate inter-thread messages.
Definition DelegateMsg.h:22
Definition DelegateThread.h:16
A semaphore wrapper class.
Definition Semaphore.h:19
Definition Delegate.h:18
-
DelegateFree< RetType(Args...)> MakeDelegate(RetType(*func)(Args... args))
Creates a delegate that binds to a free function.
Definition Delegate.h:597
+
DelegateFree< RetType(Args...)> MakeDelegate(RetType(*func)(Args... args))
Creates a delegate that binds to a free function.
Definition Delegate.h:497
constexpr auto WAIT_INFINITE
Definition DelegateAsyncWait.h:49
Definition DelegateAsync.h:59
Definition DelegateAsyncWait.h:110
-
Definition DelegateAsync.h:683
-
Definition DelegateAsyncWait.h:837
-
Definition DelegateAsync.h:256
-
Definition DelegateAsyncWait.h:359
-
Definition DelegateAsync.h:469
-
Definition DelegateAsyncWait.h:598
+
Definition DelegateAsync.h:520
+
Definition DelegateAsyncWait.h:682
+
Definition DelegateAsync.h:257
+
Definition DelegateAsyncWait.h:360
diff --git a/doxygen/html/annotated.html b/doxygen/html/annotated.html index f24cb48..4d1b67f 100644 --- a/doxygen/html/annotated.html +++ b/doxygen/html/annotated.html @@ -120,38 +120,32 @@  CDelegateFunctionAsyncWait  CDelegateFunctionAsyncWait< RetType(Args...)>DelegateFunctionAsyncWait<> class asynchronously block invokes a std::function target function  CDelegateMember - CDelegateMember< TClass, RetType(Args...)>DelegateMember<> class synchronously invokes a class member target function using a class object pointer + CDelegateMember< TClass, RetType(Args...)>DelegateMember<> class synchronously invokes a class member target function using a class object pointer or shared pointer  CDelegateMemberAsync  CDelegateMemberAsync< TClass, RetType(Args...)>DelegateMemberAsync<> class asynchronously invokes a class member target function  CDelegateMemberAsyncWait  CDelegateMemberAsyncWait< TClass, RetType(Args...)>DelegateMemberAsyncWait<> class asynchronously block invokes a class member target function - CDelegateMemberSp - CDelegateMemberSp< TClass, RetType(Args...)>DelegateMemberSp<> class synchronously invokes a class member target function using a std::shared_ptr object - CDelegateMemberSpAsync - CDelegateMemberSpAsync< TClass, RetType(Args...)>DelegateMemberSpAsync<> class asynchronously invokes a std::shared_ptr target function - CDelegateMemberSpAsyncWait - CDelegateMemberSpAsyncWait< TClass, RetType(Args...)>DelegateMemberSpAsyncWait<> class asynchronously block invokes a std::shared_ptr target function - CDelegateMsgBase class for all delegate inter-thread messages - CDelegateThread - Cheap_arg_deleterFrees heap memory for reference heap argument - Cheap_arg_deleter< T * >Frees heap memory for pointer heap argument - Cheap_arg_deleter< T ** >Frees heap memory for pointer to pointer heap argument - Cheap_arg_deleter_baseBase class for all deleter's - CIDelegateInvokerAbstract base class to support asynchronous delegate function invoke on destination thread of control - Cis_shared_ptr - Cis_shared_ptr< const std::shared_ptr< T > & > - Cis_shared_ptr< const std::shared_ptr< T > * > - Cis_shared_ptr< std::shared_ptr< T > & > - Cis_shared_ptr< std::shared_ptr< T > * > - Cis_shared_ptr< std::shared_ptr< T > > - CMulticastDelegate - CMulticastDelegate< RetType(Args...)>Not thread-safe multicast delegate container class. The class has a list of Delegate<> instances. When invoked, each Delegate instance within the invocation list is called.
+ CDelegateMsgBase class for all delegate inter-thread messages + CDelegateThread + Cheap_arg_deleterFrees heap memory for reference heap argument + Cheap_arg_deleter< T * >Frees heap memory for pointer heap argument + Cheap_arg_deleter< T ** >Frees heap memory for pointer to pointer heap argument + Cheap_arg_deleter_baseBase class for all deleter's + CIDelegateInvokerAbstract base class to support asynchronous delegate function invoke on destination thread of control + Cis_shared_ptr + Cis_shared_ptr< const std::shared_ptr< T > & > + Cis_shared_ptr< const std::shared_ptr< T > * > + Cis_shared_ptr< std::shared_ptr< T > & > + Cis_shared_ptr< std::shared_ptr< T > * > + Cis_shared_ptr< std::shared_ptr< T > > + CMulticastDelegate + CMulticastDelegate< RetType(Args...)>Not thread-safe multicast delegate container class. The class has a list of Delegate<> instances. When invoked, each Delegate instance within the invocation list is called.
- CMulticastDelegateSafe - CMulticastDelegateSafe< RetType(Args...)>Thread-safe multicast delegate container class - CSemaphoreA semaphore wrapper class - CSinglecastDelegate - CSinglecastDelegate< RetType(Args...)>A non-thread safe delegate container storing one delegate. Void and
+ CMulticastDelegateSafe + CMulticastDelegateSafe< RetType(Args...)>Thread-safe multicast delegate container class + CSemaphoreA semaphore wrapper class + CSinglecastDelegate + CSinglecastDelegate< RetType(Args...)>A non-thread safe delegate container storing one delegate. Void and
non-void return values supported.
diff --git a/doxygen/html/annotated_dup.js b/doxygen/html/annotated_dup.js index 78243ae..385959a 100644 --- a/doxygen/html/annotated_dup.js +++ b/doxygen/html/annotated_dup.js @@ -24,12 +24,6 @@ var annotated_dup = [ "DelegateMemberAsync< TClass, RetType(Args...)>", "class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html", "class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4" ], [ "DelegateMemberAsyncWait", "struct_delegate_lib_1_1_delegate_member_async_wait.html", null ], [ "DelegateMemberAsyncWait< TClass, RetType(Args...)>", "class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html", "class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4" ], - [ "DelegateMemberSp", "struct_delegate_lib_1_1_delegate_member_sp.html", null ], - [ "DelegateMemberSp< TClass, RetType(Args...)>", "class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html", "class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4" ], - [ "DelegateMemberSpAsync", "struct_delegate_lib_1_1_delegate_member_sp_async.html", null ], - [ "DelegateMemberSpAsync< TClass, RetType(Args...)>", "class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html", "class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4" ], - [ "DelegateMemberSpAsyncWait", "struct_delegate_lib_1_1_delegate_member_sp_async_wait.html", null ], - [ "DelegateMemberSpAsyncWait< TClass, RetType(Args...)>", "class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html", "class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4" ], [ "DelegateMsg", "class_delegate_lib_1_1_delegate_msg.html", "class_delegate_lib_1_1_delegate_msg" ], [ "DelegateThread", "class_delegate_lib_1_1_delegate_thread.html", "class_delegate_lib_1_1_delegate_thread" ], [ "heap_arg_deleter", "class_delegate_lib_1_1heap__arg__deleter.html", "class_delegate_lib_1_1heap__arg__deleter" ], diff --git a/doxygen/html/class_delegate_lib_1_1_delegate_3_01_ret_type_07_args_8_8_8_08_4.html b/doxygen/html/class_delegate_lib_1_1_delegate_3_01_ret_type_07_args_8_8_8_08_4.html index 0a00186..4c88194 100644 --- a/doxygen/html/class_delegate_lib_1_1_delegate_3_01_ret_type_07_args_8_8_8_08_4.html +++ b/doxygen/html/class_delegate_lib_1_1_delegate_3_01_ret_type_07_args_8_8_8_08_4.html @@ -113,19 +113,16 @@
-DelegateLib::DelegateBase -DelegateLib::DelegateFree< RetType(Args...)> -DelegateLib::DelegateFunction< RetType(Args...)> -DelegateLib::DelegateMember< TClass, RetType(Args...)> -DelegateLib::DelegateMemberSp< TClass, RetType(Args...)> -DelegateLib::DelegateFreeAsync< RetType(Args...)> -DelegateLib::DelegateFunctionAsync< RetType(Args...)> -DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)> -DelegateLib::DelegateMemberSpAsync< TClass, RetType(Args...)> -DelegateLib::DelegateFreeAsyncWait< RetType(Args...)> -DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)> -DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)> -DelegateLib::DelegateMemberSpAsyncWait< TClass, RetType(Args...)> +DelegateLib::DelegateBase +DelegateLib::DelegateFree< RetType(Args...)> +DelegateLib::DelegateFunction< RetType(Args...)> +DelegateLib::DelegateMember< TClass, RetType(Args...)> +DelegateLib::DelegateFreeAsync< RetType(Args...)> +DelegateLib::DelegateFunctionAsync< RetType(Args...)> +DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)> +DelegateLib::DelegateFreeAsyncWait< RetType(Args...)> +DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)> +DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>
@@ -191,7 +188,7 @@

DelegateLib::DelegateBase.

-

Implemented in DelegateLib::DelegateFree< RetType(Args...)>, DelegateLib::DelegateFreeAsync< RetType(Args...)>, DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>, DelegateLib::DelegateFunction< RetType(Args...)>, DelegateLib::DelegateFunctionAsync< RetType(Args...)>, DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>, DelegateLib::DelegateMember< TClass, RetType(Args...)>, DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>, DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>, DelegateLib::DelegateMemberSp< TClass, RetType(Args...)>, DelegateLib::DelegateMemberSpAsync< TClass, RetType(Args...)>, and DelegateLib::DelegateMemberSpAsyncWait< TClass, RetType(Args...)>.

+

Implemented in DelegateLib::DelegateFree< RetType(Args...)>, DelegateLib::DelegateFreeAsync< RetType(Args...)>, DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>, DelegateLib::DelegateFunction< RetType(Args...)>, DelegateLib::DelegateFunctionAsync< RetType(Args...)>, DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>, DelegateLib::DelegateMember< TClass, RetType(Args...)>, DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>, and DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>.

@@ -229,7 +226,7 @@

Returns
The bound function return value, if any.
-

Implemented in DelegateLib::DelegateFree< RetType(Args...)>, DelegateLib::DelegateFreeAsync< RetType(Args...)>, DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>, DelegateLib::DelegateFunction< RetType(Args...)>, DelegateLib::DelegateFunctionAsync< RetType(Args...)>, DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>, DelegateLib::DelegateMember< TClass, RetType(Args...)>, DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>, DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>, DelegateLib::DelegateMemberSp< TClass, RetType(Args...)>, DelegateLib::DelegateMemberSpAsync< TClass, RetType(Args...)>, and DelegateLib::DelegateMemberSpAsyncWait< TClass, RetType(Args...)>.

+

Implemented in DelegateLib::DelegateFree< RetType(Args...)>, DelegateLib::DelegateFreeAsync< RetType(Args...)>, DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>, DelegateLib::DelegateFunction< RetType(Args...)>, DelegateLib::DelegateFunctionAsync< RetType(Args...)>, DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>, DelegateLib::DelegateMember< TClass, RetType(Args...)>, DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>, and DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>.

diff --git a/doxygen/html/class_delegate_lib_1_1_delegate_3_01_ret_type_07_args_8_8_8_08_4.png b/doxygen/html/class_delegate_lib_1_1_delegate_3_01_ret_type_07_args_8_8_8_08_4.png index f3f13d44fd957466a78579324ea51e85a6dab82f..ea3d4c7dad1b2127cda7467be3987bd738622672 100644 GIT binary patch literal 5828 zcmdUzc~}!yzsFHpP|6ajMM0KELn#O%JH$XVh!SM+1=$2af^3Q?%3=tMiVze54azDY zErKWk11PeCL{daZgi691Fko218kS&4awkB&&)fcWZ=dJBz4OO8GiT;Za=yRw`^@*8 z+b3<0OGzk5h=_$f1kO3zM1fLY{+$$1?Kx?E%0eIz0H@=urO=c&MaBo! zFYiu&KR!G>473|`I28c*wuji;I*0(*>xa?S?B7L1 zx6Ee+M5=OyzqjT=!?y!(6e*|APrj}YAVkM@$9wt5d+k0iBBf7h+9iqXf*`+z5+C0X zTc&{1AU@-uSTO~fIo1XDAm3b4!T+p`5(;S_FRkPM_=agnf+|ve>q^^5#z(AXvNiv+?^$c2$bF32rW;eMf4BHBODP@s=8}p;QST zlr7e&6ldmfXDT{;AMIB3cQ_RvcP~Cq!D5=&kr4#5sv7o-F;BDPq(^9p=T;1 zMv9Ov(eci`Q?)I1W4tYFbJos%>32f^RBEAI~)wVAr#Djh#Q5$N zQV9ig!;FLWkb*VW6>3tB{*frHQZ~UiPG*RuGf4QAvfh_fyS}s!V#%TvHyOqrLov22 ze^N?o^u|v_?(5>? zYsd1hYDPH*37UZji*JV8Q;Lv+H66V{-@k}vI)lTOt=UChpIJS z*b=7w*8EAELe_!-S!s8HIDe%hAl_GM(u|Y6HvvfzKI!rmoJkDhw9PKqmJy1gG}c^d zUBkRNfQ-TvL~Nv78L{83Xd?-a{?USo-^^U-X6B+oZmnms{pR)GtKG+@r>F5~39@5R}5Z4Xe2`|GtFl>8xJ zz0`pqQz1WO*gk{=;0m^0{0XVi1>iJpych=oo$i6kBE^ad(7YG;qW- z2-2d@8h5I|ToWnr!9f-1sq!E_3Ln$&SD6TC%$#|&7udVpgR6cl_$;J(n zjz$Y$vuDhF+dB*T!*@Z$n32=vQcN-JOQu1Ojs zu8mX+Z7bgtx<98UD;-kB9tL4@lP_G%VYyE>-Ylp!XUR*;H7}`Y+7|2N{Mh}v_IuQc z(C!00b4&ZdhHfasyIQ{rS`jK`0hpfTm@z~s_o%Ax;cRj(VS-$29c&_M6;Nlz$s2yjTztB+eohF5iIX?Tc!tr za8ENa=q=-zw_W2XSZ8@0gvm;-2QTa5W@HF{#>T3&#ow0gEBxD_MBDVBQ7b9W6d8g= zNSPp0jnsHLEJ(f5Jw44dV>xVQvNGr*Ota0aIbx8*-z$g(FY7B|%vnB=K@}AF@?~j) z1%s(H;NPx6Ofwy<;Z!#$E1=k3cCVb0a>K*Be&>FtH48QHE4>g+Eum-c2qZjyuVO6A zd%O+fpJ3`tnv9gLuJb(Ebq2f)6L(gC&knENPYgY$fpQ$NN-!l;TM+9;qU=SHvFUWZ zfG0l?EP(O5wer+1X;p5UouGae{60Tl@njZuXTqD=PFkJsKY_%-u8YUHe5(}GNxqad zP|;fp%ra>L6Y8SRU&yt&7wXnYFvRqjIDD@9IJfi^bOJX83(SJ+Yxg)XpQ}y7Ga%vf z8N$|`)ccSNxd$c)z8+o8S~5HfPq+#y#Z^qj_2)KLl&d1Y=k4>97(D2C**;_s%(IK} zzV2CUwjL`zk{6jUcKO=LJQb&(+eV`_Yf9>aILizbSYe(tVF8LeXR`$BspJ1=xu29;T8&$&cx}lzA z3m~bmlr;x}X@6tl6cPt;l_Er>aB+~3s{wG;5WwyPFvk#!!0kJgnE+sc;P3pU$O_Sv+YWEYlNb zuf4H}wbaGX^&Fo~x}?QiM8+7c!*!rxHH{t}urje9S<06543DS%!r~v(PKx^VBu?|% zC088l-27Zw9~vfTQ4e!Yc=+)?xjT25knEkg^?2{8iB0k@&&`3jN=n%sLnU+NxCU7i zoOMNYw0<&8|$f|pH3dwX=)RFdF4s}+%++MO99{rY9y$1l1u#BzG~ zp`s$Ay&=C6iaasL??!18a|;>qAdDjtfTz5)?RG=cD?Y{5j!jMpIn4eqlYX2pK?zzY zG>;53;eRZ@dLn!nJ zri#K_A=jmQ2%2J18$8jZSc_dxOp|{!FYUb&JcZ0GLYDF^`S^jBDT!V>e z18e0YxMw@T3LtIAlw}RoI#|3h+YA0_>H|2fW#mW{KP-RNHpTHqXiF8AgAaxq5+x=q zaR%Cui6FfvN^1!pA+8It!Y@Ct-fxS783Vb9#9iwCTPeJti~@XD$3aQ+?LRsA?2gX| zEZNUTvVrpHwzVB~M?~NHufsUbA1q|D5Y5=CD#NWye{Bv|x%kby4}Uh8JMp6bDA)O) zfboAj?*ALl%Qa`s&1cQ1wS8UPhVMK*gd1IGh(JX&-<}5J#X^nE*t0Ucg|^xQNL}=7 zj)r4si5s`f@^m)3Fm}p0h`zRMOL|yd1F!?qI5rgzavNy)!})$U zv1kh%-y=mot(|%;|L>AKTjD0w(?0;?d4|*>zT5IJL>@()oK|S#4)oqeG0QHA9K~F7EN| zv~7g8Cg&WUmgmYX8k6GdM)Iuv!zDlJEV$Z)AGluIr`Oj!r<~_ybf&QLmkgYjtiQZ)`LTyLl=Uc4wu4_(7}c-hWfV`l z8d}oHyw}dnOAS#a<}!z^7|b&nRU_G3eKX4yn9nNK=hFI)fZZx=fsgLP2)OL)3_e=2 z$j!`d=(N9VQ)*dTS?)^s>9D>$a@TV~Z~H}3J~^#}t(_r_CPbX6gJ9nyaXG+uMgnSf zsG2o!&QBJltrf8EE4kx*_B5ytcg?IClbt=3SF;)E@R-cwdb}9C^IashFo_$8XVwo@gTZ??fedltoTC-5Ja0f}M~; z$lD;RGSp`tAB#7APu+*m#J0rNEKDQdpE0i22Ir>p>9EJMSQoGovi!4!>fpJ;%GkV) z7m(GP;@k*JV5OQ0p) Xof&V;i*Tq+plgV z>8z!hgqW__8sA|l&Rz<7E47NGAedZh(CZ!I!q!b8En6)jagl|%2~v75Jwt%$u&D!`+ytPs#NCk?m47E;>}XZX{C zhKc*}-5Po`pmw7TF)o{s3=Vf=U3FrfO{zHH{Z(oqRbqHh_`W*_mCrtTUU6{+?%38- z2Xt>F;`z;%p^D;Q)au9K;#)B^x3gKkyz!1Xtvs4hyyYQR+~V-+4^Q4?T&#rap3X9Y zm*Q>PC@BS!yLHvB>t=w`@;4;kWsw-5t<)An-*4TW=P9qGwTGOeeY*)1F14|D3Y;^q z>mwgKNx7FncsbTdq1+f^Fz$b(5HE8^?56@gxK+J`z?f%cEzSZWxwU>nd;qGrj(s3= zzz;dmvL+`!wl$Atg&I+^p0!nm;qI)fTr&(jNuycb48$73m@XSriFqop7>)Jqp8%`n z^{y*a)&h1^^t0O%*6Mcv%ZL(JC6rSB{Qa65Hg8oh z&RbtB?#p7|tjaFj^)J7ernD8%0PE1aHp0lNY1Gdy1n5q#oBC9q7j}5YbisAZAv1c2O%ShWZhI{< zx2}v5Yg^VP3XqgXpc70%j{AW{ldvJ{S3)Hj)&TR2Y4o z-Acy&O-YgBW#gCRjY>xGXgXY1vU+sZE42Hnp=Ub2GHy*C#`}^yTGX7IuM4OnoK<@1 zV*((Qy%{O@lLOf0%&+@Vwi!PBRt<@QwYbapoK9p>g9mj>=LMog zpC3Dv85duEXd))%^71}QdGoRt@Rs0xmv`AqTh|TGge+|sJBr6_1ZcZw!_U#mK|3=A zYD@e$!2F@mjjuMs&;0*tqgN@w^Xsr97Im+in0Jhy1TtyTxYUA5hkWpGUxF{e<m()|)v>o^6G4@7{1G68f(NyQ2+pptG9w*$uumFyCviT(l_nJ0 zcdqVsTTf^tSi)~=zy3k##ofdp18!fx36~IwySgwFUmq$T5yXF#O$qK_ETKlwdWXj!%==XRC4EaV|B6XUhbsO^NJXtvW} zOCF6tuM9rJFtS}u<=xlth!w4`u`7CPqG9G0SA+{MedG_Aa+hVt8Q6kenP>LQPW1PKHXNSD@T9!Ig4`QAx_ea1WrgjQC`a5 zCDwEutkg~)@%>>LDW$!ajlVaB(1aPhasiHQuATvUu)ucBZk+ME2j&Jxr?#+0?cUu; z@T&kntn|NKkmlimbe{B!M`pEHwF_*Ixyi?Tg3D4Yk~~H~RO7LapOu z8yk8rzQ7$pF8gNXq+(u! zS@G5Q3xi80Ho&Q$y`8e#0(K5LVY-?;gegOKhE$KfyOB@+)GJqv*V}oFpP4ZOMJh6K#Kx=N=y>L(|DhfKtt8VtlA1*$Xsa3 z=Uf=5{kXy0_jj&(I`KWVBQuK3RKs~4bS=cw-G#G?IOIgILNUYFdS0e+YQSpOVgsCf z9BwH&18(HK;fh$U+dGkioZdY=aqE3GD~B~8|PA2yTQ)4|Mn8J1y< zn4Yg+S>sB##WHhb@j8)R*+J zqts=2KSncd73|%atx%Pz@MOo&qlZwbyPW-70#^b$ZK`7^w(!W1&QB9VV~wX1J<8S4 zb-cj$_aE1&xYD@k6k}v_W~4D`e7d>6Rs6`j9@icWF>Lp!;x;+%dw2)PcH0!~Y#YmF zf^8Iw8QDZIF86*cT4kD!@tT=NwfTA=DtpiajavrtXdfo7`8w&4Ga~9{2Fje}0NjlR z-v?pmE)ZFekn%|hvi%Ip)@cn!i}IVVdl?4eCWoYH^YpWn;-(aDUiO0TbAIHPgjrPy(r_&b!^B}SBlc(a8F zZmN+q72=I;%fh|7zn<2WfSeBr=Cix$dMtJZfQZC6MkoP1^W_fWPN%vqsF zW)7FwmO4e1Pm{9?=eiwZ42o+y(Ax|2Oh_-MoApp1Ll;}&5kDixUts4dedi?zJ?ZJQ zj*q`(0V{iG264B5Z&nh_NbI+^PSP__2KyIxtTcHn*n<`}#Y6?`mBS3Yxpj3x$CyJJ zS4Yu=tt7xNszTJesVap_X@QG;ctjS`PCrYF-t5F+U911>{FaI#roCHAg`-~g)JsCm z2dO~e0N~l9zvB;Rpc7j%@c41YQksqa2$L~kChmJKbfNBQM>u!Dy@D^hWTT%>L6dEv z{#>tQxxLb|$ceb9gDBI=`K1-MMM$ZZrv_b+gh60FCBu`8^-GQjI+RF^K<#NI@%zErPyP01D6kX&Th7MAB)B zE4r6HQaGXaOH>1na7(tQ$2s5i#(1LqxXhJQo&8(R=ae$ zrA4{vQArb^A*KY!Z_n|9TzWoms;WpX0I9&3I=F)<QN{`%I|&tK?&X+X4%pm_Z3^LOe71<+@XS-woaiJIm zlw#M1Xy}jA7p&9HGdbx4{4XsFg1`Sp0&w!xhZ65PvZ>`T|O zu(3s6=_2-!10H`2rQl6yjk$US$xAb-N5O^|dk+h0*`WmvlQI2cU8qzfx zoQxA|f&fV8@CQi8ZkTr{9q606<>`yh>S=#F^sa)%dtriHk;Iy=VqLNL5oqU-Kv}kT6y!a_x+k09*+S!3tkB<$u!8=jpgkWb=g1}XBO-baT<7vY_{ENBJiUmXj1f_17 z(_e`|Nax$7E*dqH7wNX;U8-w{$DrnXK|ICD>3TTll2V2^MNV~ga=gPFi&{3x16CK! z^HMfS{MnpY`zv(^fPcKqUx)hnXq^69b(QU`ajR{x@qEOq-eOjMUhqQj@WAeY!iujx zrZ4#LNao1U!0TYh+ip<|4X}@y5VL>kb5e9Du|INbiFwU8U(X;vgSX-r?QcSwN~rf` z6JHnrSMfeA&i8@qZq{ zokDDKXIwlVrY5Rag!lFSB0n$z96QLeO^=B~8os00G*J@ZF!p-V)cFS_Zkw*q jYqj2Y|1&k-XT=`3qwhGIX4QayuS8%bmd53V7i0eoH=Z89 diff --git a/doxygen/html/class_delegate_lib_1_1_delegate_base.html b/doxygen/html/class_delegate_lib_1_1_delegate_base.html index db9005a..c00f5b4 100644 --- a/doxygen/html/class_delegate_lib_1_1_delegate_base.html +++ b/doxygen/html/class_delegate_lib_1_1_delegate_base.html @@ -113,19 +113,16 @@
-DelegateLib::Delegate< RetType(Args...)> -DelegateLib::DelegateFree< RetType(Args...)> -DelegateLib::DelegateFunction< RetType(Args...)> -DelegateLib::DelegateMember< TClass, RetType(Args...)> -DelegateLib::DelegateMemberSp< TClass, RetType(Args...)> -DelegateLib::DelegateFreeAsync< RetType(Args...)> -DelegateLib::DelegateFunctionAsync< RetType(Args...)> -DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)> -DelegateLib::DelegateMemberSpAsync< TClass, RetType(Args...)> -DelegateLib::DelegateFreeAsyncWait< RetType(Args...)> -DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)> -DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)> -DelegateLib::DelegateMemberSpAsyncWait< TClass, RetType(Args...)> +DelegateLib::Delegate< RetType(Args...)> +DelegateLib::DelegateFree< RetType(Args...)> +DelegateLib::DelegateFunction< RetType(Args...)> +DelegateLib::DelegateMember< TClass, RetType(Args...)> +DelegateLib::DelegateFreeAsync< RetType(Args...)> +DelegateLib::DelegateFunctionAsync< RetType(Args...)> +DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)> +DelegateLib::DelegateFreeAsyncWait< RetType(Args...)> +DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)> +DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>

@@ -227,7 +224,7 @@

Postcondition
The caller is responsible for deleting the clone instance.
-

Implemented in DelegateLib::Delegate< RetType(Args...)>, DelegateLib::DelegateFree< RetType(Args...)>, DelegateLib::DelegateFreeAsync< RetType(Args...)>, DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>, DelegateLib::DelegateFunction< RetType(Args...)>, DelegateLib::DelegateFunctionAsync< RetType(Args...)>, DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>, DelegateLib::DelegateMember< TClass, RetType(Args...)>, DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>, DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>, DelegateLib::DelegateMemberSp< TClass, RetType(Args...)>, DelegateLib::DelegateMemberSpAsync< TClass, RetType(Args...)>, and DelegateLib::DelegateMemberSpAsyncWait< TClass, RetType(Args...)>.

+

Implemented in DelegateLib::Delegate< RetType(Args...)>, DelegateLib::DelegateFree< RetType(Args...)>, DelegateLib::DelegateFreeAsync< RetType(Args...)>, DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>, DelegateLib::DelegateFunction< RetType(Args...)>, DelegateLib::DelegateFunctionAsync< RetType(Args...)>, DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>, DelegateLib::DelegateMember< TClass, RetType(Args...)>, DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>, and DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>.

@@ -297,7 +294,7 @@

Returns
true if the objects are equal, false otherwise.
-

Implemented in DelegateLib::DelegateFree< RetType(Args...)>, DelegateLib::DelegateFreeAsync< RetType(Args...)>, DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>, DelegateLib::DelegateFunction< RetType(Args...)>, DelegateLib::DelegateFunctionAsync< RetType(Args...)>, DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>, DelegateLib::DelegateMember< TClass, RetType(Args...)>, DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>, DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>, DelegateLib::DelegateMemberSp< TClass, RetType(Args...)>, DelegateLib::DelegateMemberSpAsync< TClass, RetType(Args...)>, and DelegateLib::DelegateMemberSpAsyncWait< TClass, RetType(Args...)>.

+

Implemented in DelegateLib::DelegateFree< RetType(Args...)>, DelegateLib::DelegateFreeAsync< RetType(Args...)>, DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>, DelegateLib::DelegateFunction< RetType(Args...)>, DelegateLib::DelegateFunctionAsync< RetType(Args...)>, DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>, DelegateLib::DelegateMember< TClass, RetType(Args...)>, DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>, and DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>.

diff --git a/doxygen/html/class_delegate_lib_1_1_delegate_base.png b/doxygen/html/class_delegate_lib_1_1_delegate_base.png index 40cc3461f16728db3a5714359b0bfac8c34148d7..e22e7c48956285a33fbc6935c827f476844c4f6e 100644 GIT binary patch literal 5837 zcmd^@cUV)|w!l#tY=D`$0)mu@21fxKO$dQF1WTwYRjL#rD&5eeWRQ}m0}N3?YCsW2 zs-Zc6Bx-_@jxazV5I{hPgc1UwlY0V;@4GXveDl43-uv$PW9_ro*=O&w*V^m1*FN_y znO+dvBeO?HNJtEM(cp@ZkT4avU);3=km}M6VnA{5lCi}(KA#WVjMcUc;7yPQkg z*&U(dpo26&6$JKxdfOX$DD}OcY-1Z(L`?l9R-6d5R7K-{+#$x!MtB0Rh;F_Td=n?9 z=h!hltQCLIK3-vg33u;iUPk%RwBlX2L8)1hBD|SCkezVL6v)mo)Fb=Ov98S?$FOw5 z0%fRmC1iSScy@9&@P0*w)Z8;J}|BFEJkv=h=x5YxPeZD~FxF zR}VD!VXHwkSW~R92$Uw$A{V3Qm|WBP&BnNnKOF+|q>q)=nrX)KHK^W7Xl>5AU*9w+ zN<`*YvqVtZ^^RkXxe5=5F=E8DJK(EfZwz0&8g^pJXWcX$DYD7~`>$9=+>asQ#)q~if z3z(%f8zCx#y0*_OvmB^(2h-d3@Bzzu*ln8mzUfSYv#uLzpR#)V@FI81#9xHrvhwPs zSP2=L->To19SzmOfbkXbHv5xv0lK?BzVR^#EFG}7^k%y@ux9+QP3-1G&^TaLNn4+Q zr3|$J&PRv=Zjo6e%mA(h++LzD_!6L`GVJm;?oJx~p$Ux*xDWVTeFnPmVd^t3=;)35 zm96^!?{YQaK&EPF@{)x`ESi9P3uyZ-YwJ&O@c@xk|cBfbIRgc|XVPw^Ovk!+zTO zfTNSOS^RZlA5XanK`$5-Zmq4Wyk5Q&{hy5Uez@5A6`AJz1|IC*r8-pI^Lv)t#S3l zh#@12*rpUwl-1JCLxmd)SphEL!hQ0DT~z8Jf92uX>St~0_POA|eCS?cC&&t{S>?vr zfjRPS(=MEUfO#C~WX5+x+z%@&EXK+J;gnVce5{U@)cWv@WN%CRuv*LM0BC@c#=RmI zb4mIE$}Ywh55sLuV|vU)E+kk!4&II{4skXKM8cK@k!z z)`X7&Qq6cqXi)vNU`Mx+%*TVrO5Z^1DhZs2(wlRAFd#+*7R<<=KLGkS77VcTP_fPj zZVCZW_=X>S2H=i}Ot8epL}h{%nM`Qih6emqqgH4Rpd>4@dn2B+BBh=k-l!)(6-*&3 z@_$zjD)|6cGlRjf;FGWdim$;#JDN%Dr3<@kL1U20M2_@!z(kghG8OXT4LTo!d&eQ!>xT*Z-1I74LyOx*TUTMEjo!R1h-1dBy>TF2lTgy(E%O58w;$%$YOI! zH$~r*Grkt*D6?`t8&cKqbjErTmdT&rA9@KV(aEtaQ8KF5re=;0-VRbWCV5ghUAji5 z5>ETXi16uTVfc~Rm6avNs8=Q1xH>#2+cl`A`vk++duFz4xaG$FyzLzk3d#yTW~%)S zvGm&ko)z=MUbYj@A^j3AX8xyk6K|K8nb@Oe^6%D}w=Q&Y=Vw4V2@%ynql>I0glhkk zaycwCUp>R3vBrJPQL6T6if+WSA-h|S_`a4X1Um#;ToEukdWA0m>6de9^?kXk81C$6 z7{?M$dEfsSWS5^7NQ^CU+D+{FuFTm}dhLwlaQ@06(ZQS)7D;BW9TD81ub1O^NXOB)vIN-!{jf^i%xO< zHsk)YVK)^$?$o{4FIB0QNH`d$yN1V7>CX`C8&F;>z42l-oSHc__~=^4VTMujQ^g68 zjze{#vPPJ$9#!&V?Yc*%EdORt)$=xg2V35?UPe_xM|B0~B?SA;M8NRMgVlYp^bRyz zjF_B=#^7`*Z?&nCafBe>XU7Xbc0BaNr?KTbC|omEx5rN74znL=K7F$M^~CS#RmDpV zWf4B6FYE5AVg?Q7q7JdM!907p0C?cjXpa>yjVSg`IdWFYT|pa}qg18w#oG}P9V3~|OkkDW#_4vyeacDp()_W@OPkiqzB*={GGImNex|R2Eatwv zvEKID#w?>Gvz&ho-&f}<(3;y{z!!#8=g?9^kUL+&=A^>c!f?9o(qV4dkg~~At<|Cj z)(U)Eu$7ab9Vv&F5@NaYj0gSX(()3hacCw>4_ zg5r>uh~Y=5p!iqio{#$frb_E76q!w8asuFrBS^7Q{fxM139S0XYdac!IY!q+^n# z-&kgJwR?-N7kqU~?>G*BiCd!@Ia`=hU6 zbdPWq;>~&7@p;plMNua>$fZotokCab@==-Nq^{3Rg6uM2X7}%jEmhN;1Q}9z9C{5J2v&Um`*&7!w9#R?9v^vir z%hV9tMn}*`GIn?$_o*N?DG=EUb1f`Z+^&8Uo7K(y)^%VnF^}~dnCfWR&IEf^)(amRmYM zRcOs-oLhGW^VH>P5bOZONim{_mKK)&l+#FJo;K3d_bg~q3lBd`{ftOu7s=>OPvuxI zNZA%CbS(Mlm6P0iv31*tQwv=XdsqmMtTx#i{w*&K6j~hLxg_h~v%VXt^9P4BLP7)g zJh|R*6IRfoN9oSk%qKI~Lq^ut<|fysTcZ*NT3vPeXG3PY^dDTy3^T4iJ-t%S{><<9 z!NhjF2 zUd}S2sTHefkq>E{?ozgKQ~lmamoVieKVO#!lF1N8h^T19VoWoDx+;sR2?V5_1>GY7hLGsb6MzUFWmp|EivP7I#*=R}=un zS+MOcL2<5E^wHA*LGiE3{ZC{5O_l4?0@L!h`v|0vmpfqlLz{B*A=v2lK|Z*bK0jB?9LxNIkf2cY%>f?WlzwB>R%r@8RMEJK`b{o8UvUSNg{as1s9 z`_(rpQ7F9@OAkzAw;VW7{_TI9p{-FNf%PLJY{qI|*#3^)RbihB2PU>TJZg$1eVi$p zS4CF-24w7c!?w4q3`0}N>8`NwY6UWJ#C{&Co7`t&&6ljk0T(Ql6f^C;q7U|up4ZU}T~ zB0~DY_F1a_fvShqWazB-{+ZQ?*5`A!E#=EVwk+FbRqkyZZ7vn~o<1o6?3rjf`FoZR zm?ye3PdH7!s`Pi5;TtPl#@JAGBzbfq6J$r7UM7V2uNGV%OVV!)xM9T(3sioWyhI{? zD7oNYTwVN|?eCHoyd6f!z^>Ur)S(I{zV{Dc7kJ)D2euQ25}!fx79}n{`ysU8d}~b& zyVD`YYJ!H2NZ(gfQkCz~zJ=@&`=3!fxW*)7eOJwCYG#3JfF9Pq5@Xsf$djX#fh63S z8SArw?DT?`^`w%6`WrvqbVtAb0@x`_CeVDVN4X(A6eQQv{%>j`-vCaPII1uF=n74VMSGAlo7Jh`*ad x|LJ7Aj|e1p0)z-Ze4)CPTxT@{5VshC_l_NKo=hqv13#XHkmpPdiuJGE{U_z%=~e&$ literal 6940 zcmeHMc~p~GvbSwlTyR4XglHRN6&X!~hD}+-fC(T7qAcP@5CPd`NzzIKttgB^pbbKr zAfX)y2ndlaQD{L#5-<|P2!RfChzSHq2#}Cuz995;ztb~s=Dd05ym!ugf82X3_1$~F zTXm~`Rh64=2&Z*wT53y{ELjIT=5S)kk`*{$JhSRcpzZkag$2-QyB+s*R4SFga8xiA zli6Hy(9H0vX720J!NEb`_pdv>9s<18(I*fdO8|QQu~?e-cF7X05}3mg&ud?d_47}B z<+8TP)_*46w&y8;l=h z2+95wT6t4p*Do3UVPx&Jqno!FxD9%n9fgFR8}9FZ(j;lMYq{i6v|4S8!Gy7|AUk1XW+QW3NtWzvPbu~c=Utt--rm?IIjQ<=tX?At_j z4QT$g+4tcV^And-lAjZJCK2lkD;1}8Fb8lpo}*>2c^|^aEbE-b10Wze%|rKg$Vll9 zhcXLd?tM6gO#InoT(!UZ;{Jc~8nmrwVeUGm(21Y55;V=p*L^Qn*aRzdtcmnHDeLtW z8kQe^f2zu5LSTu~524>}o~r<4E)RnoQK@Ko^1fb7YFzHF0a6$69VqQPdkoxucvf*% zJR;@s5W5@C6aw;W zPcuGC(_lig0G~I1ah5LEwVT%^z&?KsM!cj_H!#a-LGT6>W?IMRmszgsu=rv!a{i2J zTdr-GKNYZvI${3i0axY7XJIZ^v-)mc^uS^(yBGJ}`T2OjuK(v3J8PPA(FeVO-ce;@ zyJ}u0cp4V02V3#*R~y4#_?v|p!hU0Xe}|D22(gyOlcuwV)k-)rQf@_ch^_zVod&!@ z=b-WT!(v6^&pp*j+gsqeZ40+$(6}hL`WvbxuC^E5*rgq(444$qGw;F|*`-B1A(z2m z(>ctJ-e93P;*>xsP}U7g?7WMDWk1MUhuqU{@sUy)D(NV8s^PPaCgLf(aT(hm4}7-8 z3v$KT!Wit1r9txB)yVoC&4x|1f(X4l(@7)PxYL56U-N{J&X1mkeO%y1OwoTc?bR;}*q8nWbGkB75I|icjmjXw|iw&lP;F$JbKyz=-UjA%}s{^*f zG5%?!7N}DAvV$8a91#jPQQ5Y{XG1v{ecMx`33lW7h_(2ZNA{0SYLdtq^mogcj-Gn$ zsNe-t4$y?dCZTa>dTrfDHO-aYj_#g0UNqK z!O+z;?sTuM2NJ`reRk2@57TM^Uhtll*N#KHlDRv>9vF`sZ1GtGq#~%R|t^RHM7z}9r3m?~qU_;pcof_HT&2H|n{a>impNn`1zW>cFXDl!Q7##J$ z-gePHfjxfMQLlZOrzbEdGK94jZ#IPO`GJ7Fu++#17d-` zsNb%EXq!H>FCeIQzzvz`g7vMc`xuO2ms%*SKPfM=qhQ#idku((?qgRv^baM{2L(sn zGd(Az+2Izyyp^|jV;gCwq&7yEb?qx8(TKq53}WZ10k(qF=DNih>)p3SK`kGr+nVH! zYr~V@&r+G4g90Wp;Rh@xuh;8=a;!ta3^BfneQ+R$qVB{nNgWXIzip;`1;h*mKgWZ} z`|xc|jJCih7+Fo^)u=*LRz`1FLxeyiVai(rx1=rQ*9wh=;jUF^`X+d0O%$mEW5cW= zMoaD^6aI|tX^y)hFD%JRrCh!sddop^J~kNQE}2E+&Usf|u?q~)fVW}JHBG(x)UwyL zU5YwWIM!!hJoWx*6TfUM*U|M7O&3!v^hR%nO|GWw!RZEZYfLL*5mP~tl0Ia@x7f~e z({YZ6O!o45)&5@v`0#4?^ul#q*qz;w#=>kOey6~)D0obOYYQ#MJnq8x*1P0Jh2X_X zD+*J>_bNY$s6vA}!R<{m6r@zw()+#4Ii>vp$`OL9#CD_zzt-61SAUAzT-Fm^y2&Nw8ChFIIR2lku+`IH{q>z=pXuRJ=nT*J}PGesr#xVuCZT zORC#L%AoQ-C8y9n?%4K|hcR=njkjdl`)VDsAT_e}nkbZ zZFJ69!)|Sfx37riohxS5&b)tdeiT@Dg+=s6-K;gTTSzEKewj~@bFBkvq!K$;!+L8d z{t`DXzefHM8t*?P=&e$)g*wLrHmcMZVdHwJNk3Ml#Rph#s|Ob1nU@|VUTf$ts!g@5 zb0~R);1%|5<{%K1{5a8xf$t6Ee?O2`HXn}ZaL~$`@Eu{Zag#+U=IxD&dZ`P`7X9^< zq%)vDzE8s7SnM~2fZI#z!XbCga)q;^Jg;fr(2=#Yusg&yqrPhgo9IOP#oUa*7)cqY zISS1JuJ;Z&LlgS`X_eH~KtKa*sUnJ;GU#$*@WQaNK&(iHO&S6k0stVH1;e_eMo9Ds zM9;~)X*P%1D93fkQHk^U)v{Wo6nSY+`^j-HgZ4hzy}9tOMLlh0k8oJ1`Rb33}MdL56AvB-=IR42%f{Di&6O+Bt)lzDLZgex?5_mr!!!Y_yRY;Ka@@HBxIWMyt97>L@YxH`MQW|DhJ8^zV=a z`hg0YKtGA9OghvF1R&rARPeX<*?hcv!TK)tA-MgUdGt|T4G0cBG zmT7{7^DW9og;<0*Q1Jp{fia1d^N96jMz5|K$wYX_O1S@HCTbvuist&Trd`?Wf(vrp zT{ztk?&+1vq_PnCh9F@kaiyUTdAdt#Pc`p^7NE$PW0zxW3eu0-o?u(5oL-4xEMpn& z@H-TNcktO1)3{BYY^BGa4o#^IB9|cw#z+m($Y1IweOUWIN&BPBe=p&og&(EYD!O7wlGnU}D`<`g3wrH$4z5I{0(s-`P)%PsfrzJmz!hc6BT&uImsGX6D-z7kFi^GS5&d8FeRtjR9`c`PZ z@4oNa-qm~7W8N^k>tEH6@hy8xDwc7w73CN^Smc*+H;HL|vxgy_@2@PO|zvlM0!XY)~JINieGrxT%8S6E3cJL;?6_!%F# zp;~!uY8d|T=2fyJNPgy(nwV~dsG#C>Y+~Vfok_w*PiN8tQD44Uxpcx+vI*>SKpNzn(bT-#T2xF>i`xA0AJ*MexQNGs@#UPRp zLkQk#UxHvi8HMi@c+3M^TFR_VN*GmnoPMTf0AmKTd8Q9wh<}i#B`mT%nl`@k@&&zV z!`Td@fO6ph!U~A^bn$Eo${o^_p9a{^xZ7w}=?7)4yl2;XZTRj!0NQ?ulEB=Pjb{f^ z#$BfRjR0t?@RWYhOfkSsila-$G4)+R-gW6qb5T^ApBf;8E`;Ens;$1I*%)6&>IHmt z2v(bvOv!V+6Fi#m2#Bgm=OHaAqv9qJ2#zBy=HuJ{iHG@vczI9{2l%*GfY1A`Y|ooT zl)D9h91wY{+9fkEEBot}kLI%xASuzzm0n-SO;l74m#cPT=%s&0SHZ>it&{zEMW5dQ{AOmH0bc2v#nEXY+=aWra7Isk0?O`9{Hd+~v+NmbJM z2dUIQ7cTt)CIWG#E5@HM2iG<8X3+c*zTmyKT4*>dGJ%?K4)y#x-@ab+EkkiX+*XXi z&y~Aihq3CaOw2b{T5>4y2U1pv_5NG`t+)e4nk*36CpY)tA4FRQAk}9K~7J5b(1KHTXd?T zl%-!#Bab|+e;~-7`eu5~HrS-?2Q7GJwdiz->61B=ASK{(-Ku;9igLBIk)g86II#-r z6lzSkJPZ}?z?exzkQB4cKz14u)N2)1J)4}OXk;pRQ^@**@uyo9a=&~2hu+)%+*2Ds zjtupLF@;6;qLyY?)a{MKthN&hEc#-z|+7YKUG6zU#)l?)L zsBkklE7#=r9Fjp%imb{`Zs;|TZsf=A`WM_+K zpt|*qznpX_jrGmKFeM=&f=doT)F&})8{Ol8T+WaAKA?Lbgdo0PY%!S|X*9-*BWfpn zZ;J@sY?3e=iEHhWDCL#SHoBk7a4o+U*HJXI^5DIey-Ec7N!K1f?|@Q_qOp@-#W$B5 zqdu{$`)ff`UZu=~RT5?dN~7G3DBJ}bcR^^)m& zLsogxtF}inF2~A0K4Eyb*zYFMXKg+-q1Q3oEfADJ1jpxVZyN+3;#Q}OoBz2(V?tRl zsmkzdlgx0~;h5CQEO74eF`x*t+jv&11N5UpPgVUmY+rFw>eD=~3D2#|1zTKAvkQ3g zN*>M%(2=$j1%p+9_JJ0*;p?Z^KW(jV;LE=I@yNQS6TGz54d)@i-!_QO+33Q3c_pl7 z6%2~=Rz{PNS}ze;-~DyfXB^g%hC{a1gJ(gMW9&4C&p5b8PyoQS9&Ef#{uvKf|7&6O zAAsH;6p1D_!58X>4qlsseR7ITI;w6Ta|GNbP;OGS&oC1&&GVPRce8;1v6jFb5f0^c HXK(x!d$+`Y diff --git a/doxygen/html/class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4-members.html b/doxygen/html/class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4-members.html index 4634514..7c10273 100644 --- a/doxygen/html/class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4-members.html +++ b/doxygen/html/class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4-members.html @@ -120,7 +120,7 @@

- + diff --git a/doxygen/html/class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html b/doxygen/html/class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html index 0b9226c..246235d 100644 --- a/doxygen/html/class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html +++ b/doxygen/html/class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html @@ -174,9 +174,9 @@ - - - + + + @@ -577,8 +577,8 @@

-

◆ DelegateInvoke()

+ +

◆ DelegateInvoke()

DelegateFreeAsync(const ClassType &rhs)DelegateLib::DelegateFreeAsync< RetType(Args...)>inline
DelegateFreeAsync(ClassType &&rhs) noexceptDelegateLib::DelegateFreeAsync< RetType(Args...)>inline
DelegateFreeAsync()=deleteDelegateLib::DelegateFreeAsync< RetType(Args...)>
DelegateInvoke(std::shared_ptr< DelegateMsg > msg)DelegateLib::DelegateFreeAsync< RetType(Args...)>inlinevirtual
DelegateInvoke(std::shared_ptr< DelegateMsg > msg) overrideDelegateLib::DelegateFreeAsync< RetType(Args...)>inlinevirtual
Empty() const noexceptDelegateLib::DelegateFree< RetType(Args...)>inline
FreeFunc typedefDelegateLib::DelegateFreeAsync< RetType(Args...)>
GetSync()DelegateLib::DelegateFreeAsync< RetType(Args...)>inlineprotected
void AsyncInvoke (Args... args)
 Invoke delegate function asynchronously. Do not wait for return value. Called by the source thread.
 
virtual void DelegateInvoke (std::shared_ptr< DelegateMsg > msg)
 Invoke the delegate function on the destination thread. Called by the destintation thread.
 
virtual void DelegateInvoke (std::shared_ptr< DelegateMsg > msg) override
 Invoke the delegate function on the destination thread. Called by the destintation thread.
 
DelegateThreadGetThread () noexcept
 Get the destination thread that the target function is invoked on.
 

Invoke the delegate function on the destination thread. Called by the destintation thread.

-

Each source thread call to operator() generate a call to DelegateInvoke() on the destination thread. Unlike DelegateAsyncWait, a lock is not required between source and destination delegateMsg access because the source thread is not waiting for the function call to complete.

Parameters
+

Each source thread call to operator() generate a call to DelegateInvoke() on the destination thread. Unlike DelegateAsyncWait, a lock is not required between source and destination delegateMsg access because the source thread is not waiting for the function call to complete.

Parameters
[in]msgThe delegate message created and sent within operator()(Args... args).
@@ -701,7 +701,7 @@

Invoke the bound delegate function asynchronously. Called by the source thread.

-

Invoke delegate function asynchronously and do not wait for return value. This function is called by the source thread. Dispatches the delegate data into the destination thread message queue. DelegateInvoke() must be called by the destination thread to invoke the target function.

+

Invoke delegate function asynchronously and do not wait for return value. This function is called by the source thread. Dispatches the delegate data into the destination thread message queue. DelegateInvoke() must be called by the destination thread to invoke the target function.

The DelegateAsyncMsg duplicates and copies the function arguments into heap memory. The source thread is not required to place function arguments into the heap. The delegate library performs all necessary heap and argument coping for the caller. Ensure complex argument data types can be safely copied by creating a copy constructor if necessary.

Parameters
diff --git a/doxygen/html/class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.js b/doxygen/html/class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.js index 9420156..2b9ef14 100644 --- a/doxygen/html/class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.js +++ b/doxygen/html/class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.js @@ -11,7 +11,7 @@ var class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4 [ "AsyncInvoke", "class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#a2f0ac18839223393d6c8a76beb971478", null ], [ "Bind", "class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#aba44cf5c963b9b7667cc1ea70023e343", null ], [ "Clone", "class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#afe0877cb9e0d97f5b5ca408de1562b89", null ], - [ "DelegateInvoke", "class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#a18d39e4e8e3e6906fd9c07ada1ac5bc6", null ], + [ "DelegateInvoke", "class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#a24785156e3b7888a423a9d4a71573e40", null ], [ "GetSync", "class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#a73fa99c10f6b68b771bb8e83adffc444", null ], [ "GetThread", "class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#ad5e3487debe918c8c62d23a94bd9aac8", null ], [ "operator()", "class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#a8d6f10d5f2c1b9215b59946a77edf6f6", null ], diff --git a/doxygen/html/class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html b/doxygen/html/class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html index 6628db4..54fbd6d 100644 --- a/doxygen/html/class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html +++ b/doxygen/html/class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html @@ -656,7 +656,7 @@

DelegateLib::DelegateFreeAsync< RetType(Args...)>.

+

Reimplemented from DelegateLib::DelegateFreeAsync< RetType(Args...)>.

diff --git a/doxygen/html/class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4-members.html b/doxygen/html/class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4-members.html index 1d6f47a..28d8883 100644 --- a/doxygen/html/class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4-members.html +++ b/doxygen/html/class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4-members.html @@ -118,22 +118,23 @@

- - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + +
[in]argsThe function arguments, if any.
DelegateFunction()=defaultDelegateLib::DelegateFunction< RetType(Args...)>
DelegateFunctionAsync(FunctionType func, DelegateThread &thread)DelegateLib::DelegateFunctionAsync< RetType(Args...)>inline
DelegateFunctionAsync(const ClassType &rhs)DelegateLib::DelegateFunctionAsync< RetType(Args...)>inline
DelegateFunctionAsync()=deleteDelegateLib::DelegateFunctionAsync< RetType(Args...)>
DelegateInvoke(std::shared_ptr< DelegateMsg > msg)DelegateLib::DelegateFunctionAsync< RetType(Args...)>inlinevirtual
Empty() const noexceptDelegateLib::DelegateFunction< RetType(Args...)>inline
FunctionType typedefDelegateLib::DelegateFunctionAsync< RetType(Args...)>
GetSync()DelegateLib::DelegateFunctionAsync< RetType(Args...)>inlineprotected
GetThread() noexceptDelegateLib::DelegateFunctionAsync< RetType(Args...)>inline
operator bool() const noexceptDelegateLib::DelegateFunction< RetType(Args...)>inlineexplicit
operator!=(const DelegateBase &rhs) constDelegateLib::DelegateBaseinlinevirtual
operator()(Args... args) overrideDelegateLib::DelegateFunctionAsync< RetType(Args...)>inlinevirtual
operator=(const ClassType &rhs)DelegateLib::DelegateFunctionAsync< RetType(Args...)>inline
operator=(ClassType &&rhs) noexceptDelegateLib::DelegateFunctionAsync< RetType(Args...)>inline
DelegateLib::DelegateFunction< RetType(Args...)>::operator=(const ClassType &rhs)DelegateLib::DelegateFunction< RetType(Args...)>inline
DelegateLib::DelegateFunction< RetType(Args...)>::operator=(ClassType &&rhs) noexceptDelegateLib::DelegateFunction< RetType(Args...)>inline
operator==(const DelegateBase &rhs) const overrideDelegateLib::DelegateFunctionAsync< RetType(Args...)>inlinevirtual
SetSync(bool sync)DelegateLib::DelegateFunctionAsync< RetType(Args...)>inlineprotected
~DelegateBase() noexcept=defaultDelegateLib::DelegateBasevirtual
DelegateFunctionAsync(ClassType &&rhs) noexceptDelegateLib::DelegateFunctionAsync< RetType(Args...)>inline
DelegateFunctionAsync()=deleteDelegateLib::DelegateFunctionAsync< RetType(Args...)>
DelegateInvoke(std::shared_ptr< DelegateMsg > msg) overrideDelegateLib::DelegateFunctionAsync< RetType(Args...)>inlinevirtual
Empty() const noexceptDelegateLib::DelegateFunction< RetType(Args...)>inline
FunctionType typedefDelegateLib::DelegateFunctionAsync< RetType(Args...)>
GetSync()DelegateLib::DelegateFunctionAsync< RetType(Args...)>inlineprotected
GetThread() noexceptDelegateLib::DelegateFunctionAsync< RetType(Args...)>inline
operator bool() const noexceptDelegateLib::DelegateFunction< RetType(Args...)>inlineexplicit
operator!=(const DelegateBase &rhs) constDelegateLib::DelegateBaseinlinevirtual
operator()(Args... args) overrideDelegateLib::DelegateFunctionAsync< RetType(Args...)>inlinevirtual
operator=(const ClassType &rhs)DelegateLib::DelegateFunctionAsync< RetType(Args...)>inline
operator=(ClassType &&rhs) noexceptDelegateLib::DelegateFunctionAsync< RetType(Args...)>inline
DelegateLib::DelegateFunction< RetType(Args...)>::operator=(const ClassType &rhs)DelegateLib::DelegateFunction< RetType(Args...)>inline
DelegateLib::DelegateFunction< RetType(Args...)>::operator=(ClassType &&rhs) noexceptDelegateLib::DelegateFunction< RetType(Args...)>inline
operator==(const DelegateBase &rhs) const overrideDelegateLib::DelegateFunctionAsync< RetType(Args...)>inlinevirtual
SetSync(bool sync)DelegateLib::DelegateFunctionAsync< RetType(Args...)>inlineprotected
~DelegateBase() noexcept=defaultDelegateLib::DelegateBasevirtual

diff --git a/doxygen/html/class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html b/doxygen/html/class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html index 98b5b6d..8d80d75 100644 --- a/doxygen/html/class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html +++ b/doxygen/html/class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html @@ -145,6 +145,9 @@  DelegateFunctionAsync (const ClassType &rhs)  Copy constructor that creates a copy of the given instance.
  + DelegateFunctionAsync (ClassType &&rhs) noexcept + Move constructor that transfers ownership of resources.
+   DelegateFunctionAsync ()=delete   void Bind (FunctionType func, DelegateThread &thread) @@ -171,9 +174,9 @@ void AsyncInvoke (Args... args)  Invoke delegate function asynchronously. Do not wait for return value. Called by the source thread.
  -virtual void DelegateInvoke (std::shared_ptr< DelegateMsg > msg) - Invoke the delegate function on the destination thread. Called by the destintation thread.
-  +virtual void DelegateInvoke (std::shared_ptr< DelegateMsg > msg) override + Invoke the delegate function on the destination thread. Called by the destintation thread.
DelegateThreadGetThread () noexcept  Get the destination thread that the target function is invoked on.
  @@ -294,7 +297,7 @@

Constructor & Destructor Documentation

-

◆ DelegateFunctionAsync() [1/3]

+

◆ DelegateFunctionAsync() [1/4]

@@ -334,7 +337,7 @@

-

◆ DelegateFunctionAsync() [2/3]

+

◆ DelegateFunctionAsync() [2/4]

@@ -366,10 +369,45 @@

+

◆ DelegateFunctionAsync() [3/4]

+ +
+
+
+template<class RetType , class... Args>
+ + + + + +
+ + + + + + + +
DelegateLib::DelegateFunctionAsync< RetType(Args...)>::DelegateFunctionAsync (ClassType && rhs)
+
+inlinenoexcept
+
+ +

Move constructor that transfers ownership of resources.

+
Parameters
+ + +
[in]rhsThe object to move from.
+
+
+
-

◆ DelegateFunctionAsync() [3/3]

+

◆ DelegateFunctionAsync() [4/4]

@@ -541,8 +579,8 @@

-

◆ DelegateInvoke()

+ +

◆ DelegateInvoke()

Invoke the delegate function on the destination thread. Called by the destintation thread.

-

Each source thread call to operator() generate a call to DelegateInvoke() on the destination thread. Unlike DelegateAsyncWait, a lock is not required between source and destination delegateMsg access because the source thread is not waiting for the function call to complete.

Parameters
+

Each source thread call to operator() generate a call to DelegateInvoke() on the destination thread. Unlike DelegateAsyncWait, a lock is not required between source and destination delegateMsg access because the source thread is not waiting for the function call to complete.

Parameters
[in]msgThe delegate message created and sent within operator()(Args... args).
@@ -665,7 +703,7 @@

Invoke the bound delegate function asynchronously. Called by the source thread.

-

Invoke delegate function asynchronously and do not wait for return value. This function is called by the source thread. Dispatches the delegate data into the destination thread message queue. DelegateInvoke() must be called by the destination thread to invoke the target function.

+

Invoke delegate function asynchronously and do not wait for return value. This function is called by the source thread. Dispatches the delegate data into the destination thread message queue. DelegateInvoke() must be called by the destination thread to invoke the target function.

The DelegateAsyncMsg duplicates and copies the function arguments into heap memory. The source thread is not required to place function arguments into the heap. The delegate library performs all necessary heap and argument coping for the caller. Ensure complex argument data types can be safely copied by creating a copy constructor if necessary.

Parameters
diff --git a/doxygen/html/class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.js b/doxygen/html/class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.js index bbd5065..3801606 100644 --- a/doxygen/html/class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.js +++ b/doxygen/html/class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.js @@ -5,12 +5,13 @@ var class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_0 [ "FunctionType", "class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a4002625654c02248b5b37266bf63ef66", null ], [ "DelegateFunctionAsync", "class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a46501e1a3392ed1d13e3f3cba8eb2df0", null ], [ "DelegateFunctionAsync", "class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a2fb983602c9e3fcecc54907f13b748ce", null ], + [ "DelegateFunctionAsync", "class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#adeef2c1b2f887384a21024779b298445", null ], [ "DelegateFunctionAsync", "class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#ae32a58387b3b00e002763f3244310fab", null ], [ "Assign", "class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#ae51e00822c91e01e7041be385ac38c76", null ], [ "AsyncInvoke", "class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a5c0e0c2591b0b02feec73b501325fcb6", null ], [ "Bind", "class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a56758d6e931fbff1cfc3ea97151fd6b5", null ], [ "Clone", "class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a12be5d3ae814bea5de0df73d2807bedd", null ], - [ "DelegateInvoke", "class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a56930924ffa7d6662874675263e89bc5", null ], + [ "DelegateInvoke", "class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a2091d50db4b3be6334c66dc8a5b8fddc", null ], [ "GetSync", "class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a24d22901f60ab741597e253b7f02c174", null ], [ "GetThread", "class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#aeafdaa26caccb52408afe591e5c54aca", null ], [ "operator()", "class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a1e6153da03f3d607b1e18deb391c04a4", null ], diff --git a/doxygen/html/class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4-members.html b/doxygen/html/class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4-members.html index a43f790..6021d13 100644 --- a/doxygen/html/class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4-members.html +++ b/doxygen/html/class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4-members.html @@ -119,9 +119,11 @@ - - - + + + + + diff --git a/doxygen/html/class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html b/doxygen/html/class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html index 8b3cfcd..82a57be 100644 --- a/doxygen/html/class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html +++ b/doxygen/html/class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html @@ -146,13 +146,18 @@ + + + + + - + @@ -189,6 +194,9 @@ + + + @@ -326,7 +334,7 @@

Constructor & Destructor Documentation

-

◆ DelegateFunctionAsyncWait() [1/3]

+

◆ DelegateFunctionAsyncWait() [1/4]

[in]argsThe function arguments, if any.
DelegateFunction()=defaultDelegateLib::DelegateFunction< RetType(Args...)>
DelegateFunctionAsync(FunctionType func, DelegateThread &thread)DelegateLib::DelegateFunctionAsync< RetType(Args...)>inline
DelegateFunctionAsync(const ClassType &rhs)DelegateLib::DelegateFunctionAsync< RetType(Args...)>inline
DelegateFunctionAsync()=deleteDelegateLib::DelegateFunctionAsync< RetType(Args...)>
DelegateFunctionAsyncWait(FunctionType func, DelegateThread &thread, std::chrono::milliseconds timeout=WAIT_INFINITE)DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>inline
DelegateFunctionAsyncWait(const ClassType &rhs)DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>inline
DelegateFunctionAsync(ClassType &&rhs) noexceptDelegateLib::DelegateFunctionAsync< RetType(Args...)>inline
DelegateFunctionAsync()=deleteDelegateLib::DelegateFunctionAsync< RetType(Args...)>
DelegateFunctionAsyncWait(FunctionType func, DelegateThread &thread, std::chrono::milliseconds timeout=WAIT_INFINITE)DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>inline
DelegateFunctionAsyncWait(const ClassType &rhs)DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>inline
DelegateFunctionAsyncWait(ClassType &&rhs) noexceptDelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>inline
DelegateFunctionAsyncWait()=deleteDelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>
DelegateInvoke(std::shared_ptr< DelegateMsg > msg) overrideDelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>inlinevirtual
Empty() const noexceptDelegateLib::DelegateFunction< RetType(Args...)>inline

Public Member Functions

 DelegateFunctionAsyncWait (FunctionType func, DelegateThread &thread, std::chrono::milliseconds timeout=WAIT_INFINITE)
 Constructor to create a class instance.
 
 DelegateFunctionAsyncWait (const ClassType &rhs)
 Copy constructor that creates a copy of the given instance.
 
 DelegateFunctionAsyncWait (ClassType &&rhs) noexcept
 Move constructor that transfers ownership of resources.
 
 DelegateFunctionAsyncWait ()=delete
 
void Bind (FunctionType func, DelegateThread &thread)
 Bind a std::function to a delegate.
 Bind a std::function to the delegate.
 
void Assign (const ClassType &rhs)
 Assigns the state of one object to another.
 DelegateFunctionAsync (const ClassType &rhs)
 Copy constructor that creates a copy of the given instance.
 
 DelegateFunctionAsync (ClassType &&rhs) noexcept
 Move constructor that transfers ownership of resources.
 
 DelegateFunctionAsync ()=delete
 
void Bind (FunctionType func, DelegateThread &thread)
+ + + +
[in]funcThe target std::function to store.
[in]threadThe execution thread to invoke func.
[in]timeoutThe calling thread timeout for destination thread to invoke the target function.
+
+
+
+

-

◆ DelegateFunctionAsyncWait() [2/3]

+

◆ DelegateFunctionAsyncWait() [2/4]

+ +

◆ DelegateFunctionAsyncWait() [3/4]

+ +
+
+
+template<class RetType , class... Args>
+ + + + + +
+ + + + + + + +
DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::DelegateFunctionAsyncWait (ClassType && rhs)
+
+inlinenoexcept
+
+ +

Move constructor that transfers ownership of resources.

+
Parameters
+ + +
[in]rhsThe object to move from.
+
+
+
-

◆ DelegateFunctionAsyncWait() [3/3]

+

◆ DelegateFunctionAsyncWait() [4/4]

@@ -588,7 +657,7 @@

DelegateLib::DelegateFunctionAsync< RetType(Args...)>.

+

Reimplemented from DelegateLib::DelegateFunctionAsync< RetType(Args...)>.

diff --git a/doxygen/html/class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.js b/doxygen/html/class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.js index 338722f..d10fa4c 100644 --- a/doxygen/html/class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.js +++ b/doxygen/html/class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.js @@ -5,6 +5,7 @@ var class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_ [ "FunctionType", "class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a793983b42fc5819a186a891b9cac5806", null ], [ "DelegateFunctionAsyncWait", "class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a12fee611f64b1ff921f144456f735c34", null ], [ "DelegateFunctionAsyncWait", "class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a49ee2d06133beb8f1f97d9435dd233d8", null ], + [ "DelegateFunctionAsyncWait", "class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a61de38703ed39347662b0d523940751a", null ], [ "DelegateFunctionAsyncWait", "class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#afae9b073f590b47117d0ee00e100b7e2", null ], [ "Assign", "class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a06a1f3a07b3b85f30d1d149a8ce7694d", null ], [ "AsyncInvoke", "class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a1c4342829881ac285f0d839906c9f930", null ], diff --git a/doxygen/html/class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4-members.html b/doxygen/html/class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4-members.html index 68a9173..098c396 100644 --- a/doxygen/html/class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4-members.html +++ b/doxygen/html/class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4-members.html @@ -103,6 +103,8 @@

This is the complete list of members for DelegateLib::DelegateMember< TClass, RetType(Args...)>, including all inherited members.

+ + @@ -110,6 +112,8 @@ + + @@ -124,7 +128,8 @@ - + +
Assign(const ClassType &rhs)DelegateLib::DelegateMember< TClass, RetType(Args...)>inline
Bind(SharedPtr object, MemberFunc func)DelegateLib::DelegateMember< TClass, RetType(Args...)>inline
Bind(SharedPtr object, ConstMemberFunc func)DelegateLib::DelegateMember< TClass, RetType(Args...)>inline
Bind(ObjectPtr object, MemberFunc func)DelegateLib::DelegateMember< TClass, RetType(Args...)>inline
Bind(ObjectPtr object, ConstMemberFunc func)DelegateLib::DelegateMember< TClass, RetType(Args...)>inline
ClassType typedefDelegateLib::DelegateMember< TClass, RetType(Args...)>
Clone() const overrideDelegateLib::DelegateMember< TClass, RetType(Args...)>inlinevirtual
ConstMemberFunc typedefDelegateLib::DelegateMember< TClass, RetType(Args...)>
DelegateBase()=defaultDelegateLib::DelegateBase
DelegateMember(SharedPtr object, MemberFunc func)DelegateLib::DelegateMember< TClass, RetType(Args...)>inline
DelegateMember(SharedPtr object, ConstMemberFunc func)DelegateLib::DelegateMember< TClass, RetType(Args...)>inline
DelegateMember(ObjectPtr object, MemberFunc func)DelegateLib::DelegateMember< TClass, RetType(Args...)>inline
DelegateMember(ObjectPtr object, ConstMemberFunc func)DelegateLib::DelegateMember< TClass, RetType(Args...)>inline
DelegateMember(const ClassType &rhs)DelegateLib::DelegateMember< TClass, RetType(Args...)>inline
operator=(const ClassType &rhs)DelegateLib::DelegateMember< TClass, RetType(Args...)>inline
operator=(ClassType &&rhs) noexceptDelegateLib::DelegateMember< TClass, RetType(Args...)>inline
operator==(const DelegateBase &rhs) const overrideDelegateLib::DelegateMember< TClass, RetType(Args...)>inlinevirtual
~DelegateBase() noexcept=defaultDelegateLib::DelegateBasevirtual
SharedPtr typedefDelegateLib::DelegateMember< TClass, RetType(Args...)>
~DelegateBase() noexcept=defaultDelegateLib::DelegateBasevirtual

diff --git a/doxygen/html/class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html b/doxygen/html/class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html index 1b37f1d..e5e1c26 100644 --- a/doxygen/html/class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html +++ b/doxygen/html/class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html @@ -104,7 +104,7 @@

-

DelegateMember<> class synchronously invokes a class member target function using a class object pointer. +

DelegateMember<> class synchronously invokes a class member target function using a class object pointer or shared pointer. More...

#include <Delegate.h>

@@ -125,6 +125,8 @@ Public Types typedef TClass * ObjectPtr   +typedef std::shared_ptr< TClass > SharedPtr +  typedef RetType(TClass::*) MemberFunc(Args...)   typedef RetType(TClass::*) ConstMemberFunc(Args...) const @@ -134,6 +136,12 @@ + + + + + + @@ -149,6 +157,12 @@ + + + + + + @@ -194,7 +208,7 @@

Public Member Functions

 DelegateMember (SharedPtr object, MemberFunc func)
 Constructor to create a class instance.
 
 DelegateMember (SharedPtr object, ConstMemberFunc func)
 Constructor to create a class instance.
 
 DelegateMember (ObjectPtr object, MemberFunc func)
 Constructor to create a class instance.
 
 DelegateMember ()=default
 Default constructor creates an empty delegate.
 
void Bind (SharedPtr object, MemberFunc func)
 Bind a member function to the delegate.
 
void Bind (SharedPtr object, ConstMemberFunc func)
 Bind a const member function to the delegate.
 
void Bind (ObjectPtr object, MemberFunc func)
 Bind a member function to the delegate.
 

Detailed Description

template<class TClass, class RetType, class... Args>
-class DelegateLib::DelegateMember< TClass, RetType(Args...)>

DelegateMember<> class synchronously invokes a class member target function using a class object pointer.

+class DelegateLib::DelegateMember< TClass, RetType(Args...)>

DelegateMember<> class synchronously invokes a class member target function using a class object pointer or shared pointer.

Template Parameters
@@ -266,11 +280,107 @@

+ + + +

◆ SharedPtr

+ +
+
+
+template<class TClass , class RetType , class... Args>
+

TClassThe class type that contains the member function.
+ + + +
std::shared_ptr<TClass> DelegateLib::DelegateMember< TClass, RetType(Args...)>::SharedPtr
+
+

Constructor & Destructor Documentation

+ +

◆ DelegateMember() [1/7]

+ +
+
+
+template<class TClass , class RetType , class... Args>
+ + + + + +
+ + + + + + + + + + + +
DelegateLib::DelegateMember< TClass, RetType(Args...)>::DelegateMember (SharedPtr object,
MemberFunc func )
+
+inline
+
+ +

Constructor to create a class instance.

+
Parameters
+ + + +
[in]objectThe target object pointer to store.
[in]funcThe target member function to store.
+
+
+ +
+
+ +

◆ DelegateMember() [2/7]

+ +
+
+
+template<class TClass , class RetType , class... Args>
+ + + + + +
+ + + + + + + + + + + +
DelegateLib::DelegateMember< TClass, RetType(Args...)>::DelegateMember (SharedPtr object,
ConstMemberFunc func )
+
+inline
+
+ +

Constructor to create a class instance.

+
Parameters
+ + + +
[in]objectThe target object pointer to store.
[in]funcThe target const member function to store.
+
+
+ +
+
-

◆ DelegateMember() [1/5]

+

◆ DelegateMember() [3/7]

@@ -310,7 +420,7 @@

-

◆ DelegateMember() [2/5]

+

◆ DelegateMember() [4/7]

@@ -350,7 +460,7 @@

-

◆ DelegateMember() [3/5]

+

◆ DelegateMember() [5/7]

@@ -385,7 +495,7 @@

-

◆ DelegateMember() [4/5]

+

◆ DelegateMember() [6/7]

@@ -420,7 +530,7 @@

-

◆ DelegateMember() [5/5]

+

◆ DelegateMember() [7/7]

@@ -485,7 +595,7 @@

-

◆ Bind() [1/2]

+

◆ Bind() [1/4]

@@ -525,7 +635,7 @@

-

◆ Bind() [2/2]

+

◆ Bind() [2/4]

@@ -562,6 +672,86 @@

+

◆ Bind() [3/4]

+ +
+
+
+template<class TClass , class RetType , class... Args>
+ + + + + +
+ + + + + + + + + + + +
void DelegateLib::DelegateMember< TClass, RetType(Args...)>::Bind (SharedPtr object,
ConstMemberFunc func )
+
+inline
+
+ +

Bind a const member function to the delegate.

+

This method associates a member function (func) with the delegate. Once the function is bound, the delegate can be used to invoke the function.

Parameters
+ + + +
[in]objectThe target object instance.
[in]funcThe function to bind to the delegate. The member function to bind to the delegate. This function must match the signature of the delegate.
+
+
+ +
+
+ +

◆ Bind() [4/4]

+ +
+
+
+template<class TClass , class RetType , class... Args>
+ + + + + +
+ + + + + + + + + + + +
void DelegateLib::DelegateMember< TClass, RetType(Args...)>::Bind (SharedPtr object,
MemberFunc func )
+
+inline
+
+ +

Bind a member function to the delegate.

+

This method associates a member function (func) with the delegate. Once the function is bound, the delegate can be used to invoke the function.

Parameters
+ + + +
[in]objectThe target object instance.
[in]funcThe member function to bind to the delegate. This function must match the signature of the delegate.
+
+
+
diff --git a/doxygen/html/class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.js b/doxygen/html/class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.js index e9f0c75..eb01dc1 100644 --- a/doxygen/html/class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.js +++ b/doxygen/html/class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.js @@ -4,6 +4,9 @@ var class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8 [ "ConstMemberFunc", "class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ab639313353b5269e652b72883adc5c61", null ], [ "MemberFunc", "class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aa8e6bc2879f78d50ac63ac5cc730b755", null ], [ "ObjectPtr", "class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aeb119acb465b89f74f158f6e3d0c6c3d", null ], + [ "SharedPtr", "class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a845057cf22b42ddccfa44228e530529e", null ], + [ "DelegateMember", "class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a39bb526ecf387e3ce23603c0ddab26ea", null ], + [ "DelegateMember", "class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a6ea857874b53a0a99a2cfe20ad31e266", null ], [ "DelegateMember", "class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ac0ebe807ef2e92dab70422a6f97a461f", null ], [ "DelegateMember", "class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ab772a635e195f3553f9c43f344b262df", null ], [ "DelegateMember", "class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a322dd315ac65ec9fc88616913cf222c3", null ], @@ -12,6 +15,8 @@ var class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8 [ "Assign", "class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aa837983f1f9c0a2f8b35fb0ea4704e5b", null ], [ "Bind", "class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a2dcf47b856e718a305b49107349e1d23", null ], [ "Bind", "class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a2a695e30c79885ec8394cd049301fe24", null ], + [ "Bind", "class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a6397270ea2b42e123a8ff20d7d5cf7a0", null ], + [ "Bind", "class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a9c24220b7f1ef4f21ba66c7c9ef5086b", null ], [ "Clear", "class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a94073c6581ff7739523e7c8bfe57caa0", null ], [ "Clone", "class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#af4eb4fba1da063063b5d4ba47de4299a", null ], [ "Empty", "class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aa34f567d476fb8cba1d28d7ec664e3e2", null ], diff --git a/doxygen/html/class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4-members.html b/doxygen/html/class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4-members.html index 899a26c..449e314 100644 --- a/doxygen/html/class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4-members.html +++ b/doxygen/html/class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4-members.html @@ -106,23 +106,31 @@ DelegateLib::DelegateMember< TClass, RetType(Args...)>::Assign(const ClassType &rhs)DelegateLib::DelegateMember< TClass, RetType(Args...)>inline AsyncInvoke(Args... args)DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>inline BaseType typedefDelegateLib::DelegateMemberAsync< TClass, RetType(Args...)> + Bind(SharedPtr object, MemberFunc func, DelegateThread &thread)DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>inline + Bind(SharedPtr object, ConstMemberFunc func, DelegateThread &thread)DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>inline Bind(ObjectPtr object, MemberFunc func, DelegateThread &thread)DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>inline Bind(ObjectPtr object, ConstMemberFunc func, DelegateThread &thread)DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>inline - DelegateLib::DelegateMember< TClass, RetType(Args...)>::Bind(ObjectPtr object, MemberFunc func)DelegateLib::DelegateMember< TClass, RetType(Args...)>inline - ClassType typedefDelegateLib::DelegateMemberAsync< TClass, RetType(Args...)> - Clear() noexceptDelegateLib::DelegateMember< TClass, RetType(Args...)>inline - Clone() const overrideDelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>inlinevirtual - ConstMemberFunc typedefDelegateLib::DelegateMemberAsync< TClass, RetType(Args...)> - DelegateBase()=defaultDelegateLib::DelegateBase - DelegateInvoke(std::shared_ptr< DelegateMsg > msg)DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>inlinevirtual - DelegateMember(ObjectPtr object, MemberFunc func)DelegateLib::DelegateMember< TClass, RetType(Args...)>inline - DelegateMember(ObjectPtr object, ConstMemberFunc func)DelegateLib::DelegateMember< TClass, RetType(Args...)>inline - DelegateMember(const ClassType &rhs)DelegateLib::DelegateMember< TClass, RetType(Args...)>inline - DelegateMember(ClassType &&rhs) noexceptDelegateLib::DelegateMember< TClass, RetType(Args...)>inline - DelegateMember()=defaultDelegateLib::DelegateMember< TClass, RetType(Args...)> - DelegateMemberAsync(ObjectPtr object, MemberFunc func, DelegateThread &thread)DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>inline - DelegateMemberAsync(ObjectPtr object, ConstMemberFunc func, DelegateThread &thread)DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>inline - DelegateMemberAsync(const ClassType &rhs)DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>inline + DelegateLib::DelegateMember< TClass, RetType(Args...)>::Bind(SharedPtr object, MemberFunc func)DelegateLib::DelegateMember< TClass, RetType(Args...)>inline + DelegateLib::DelegateMember< TClass, RetType(Args...)>::Bind(ObjectPtr object, MemberFunc func)DelegateLib::DelegateMember< TClass, RetType(Args...)>inline + ClassType typedefDelegateLib::DelegateMemberAsync< TClass, RetType(Args...)> + Clear() noexceptDelegateLib::DelegateMember< TClass, RetType(Args...)>inline + Clone() const overrideDelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>inlinevirtual + ConstMemberFunc typedefDelegateLib::DelegateMemberAsync< TClass, RetType(Args...)> + DelegateBase()=defaultDelegateLib::DelegateBase + DelegateInvoke(std::shared_ptr< DelegateMsg > msg) overrideDelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>inlinevirtual + DelegateMember(SharedPtr object, MemberFunc func)DelegateLib::DelegateMember< TClass, RetType(Args...)>inline + DelegateMember(SharedPtr object, ConstMemberFunc func)DelegateLib::DelegateMember< TClass, RetType(Args...)>inline + DelegateMember(ObjectPtr object, MemberFunc func)DelegateLib::DelegateMember< TClass, RetType(Args...)>inline + DelegateMember(ObjectPtr object, ConstMemberFunc func)DelegateLib::DelegateMember< TClass, RetType(Args...)>inline + DelegateMember(const ClassType &rhs)DelegateLib::DelegateMember< TClass, RetType(Args...)>inline + DelegateMember(ClassType &&rhs) noexceptDelegateLib::DelegateMember< TClass, RetType(Args...)>inline + DelegateMember()=defaultDelegateLib::DelegateMember< TClass, RetType(Args...)> + DelegateMemberAsync(SharedPtr object, MemberFunc func, DelegateThread &thread)DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>inline + DelegateMemberAsync(SharedPtr object, ConstMemberFunc func, DelegateThread &thread)DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>inline + DelegateMemberAsync(ObjectPtr object, MemberFunc func, DelegateThread &thread)DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>inline + DelegateMemberAsync(ObjectPtr object, ConstMemberFunc func, DelegateThread &thread)DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>inline + DelegateMemberAsync(const ClassType &rhs)DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>inline + DelegateMemberAsync(ClassType &&rhs) noexceptDelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>inline DelegateMemberAsync()=deleteDelegateLib::DelegateMemberAsync< TClass, RetType(Args...)> Empty() const noexceptDelegateLib::DelegateMember< TClass, RetType(Args...)>inline GetSync()DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>inlineprotected @@ -138,7 +146,8 @@ DelegateLib::DelegateMember< TClass, RetType(Args...)>::operator=(ClassType &&rhs) noexceptDelegateLib::DelegateMember< TClass, RetType(Args...)>inline operator==(const DelegateBase &rhs) const overrideDelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>inlinevirtual SetSync(bool sync)DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>inlineprotected - ~DelegateBase() noexcept=defaultDelegateLib::DelegateBasevirtual + SharedPtr typedefDelegateLib::DelegateMemberAsync< TClass, RetType(Args...)> + ~DelegateBase() noexcept=defaultDelegateLib::DelegateBasevirtual

diff --git a/doxygen/html/class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html b/doxygen/html/class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html index 5e9cd33..311e439 100644 --- a/doxygen/html/class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html +++ b/doxygen/html/class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html @@ -127,6 +127,8 @@ Public Types

typedef TClass * ObjectPtr   +typedef std::shared_ptr< TClass > SharedPtr +  typedef RetType(TClass::*) MemberFunc(Args...)   typedef RetType(TClass::*) ConstMemberFunc(Args...) const @@ -138,6 +140,8 @@ - Public Types inherited from DelegateLib::DelegateMember< TClass, RetType(Args...)> typedef TClass * ObjectPtr   +typedef std::shared_ptr< TClass > SharedPtr +  typedef RetType(TClass::*) MemberFunc(Args...)   typedef RetType(TClass::*) ConstMemberFunc(Args...) const @@ -147,6 +151,12 @@ + + + + + + @@ -156,8 +166,17 @@ + + + + + + + + + @@ -185,13 +204,19 @@ - - - + + + + + + + + + @@ -207,6 +232,12 @@ + + + + + + @@ -341,11 +372,119 @@

+ + + +

◆ SharedPtr

+ +
+
+
+template<class TClass , class RetType , class... Args>
+

Public Member Functions

 DelegateMemberAsync (SharedPtr object, MemberFunc func, DelegateThread &thread)
 Constructor to create a class instance.
 
 DelegateMemberAsync (SharedPtr object, ConstMemberFunc func, DelegateThread &thread)
 Constructor to create a class instance.
 
 DelegateMemberAsync (ObjectPtr object, MemberFunc func, DelegateThread &thread)
 Constructor to create a class instance.
 
 DelegateMemberAsync (const ClassType &rhs)
 Copy constructor that creates a copy of the given instance.
 
 DelegateMemberAsync (ClassType &&rhs) noexcept
 Move constructor that transfers ownership of resources.
 
 DelegateMemberAsync ()=delete
 
void Bind (SharedPtr object, MemberFunc func, DelegateThread &thread)
 Bind a const member function to the delegate.
 
void Bind (SharedPtr object, ConstMemberFunc func, DelegateThread &thread)
 Bind a member function to the delegate.
 
void Bind (ObjectPtr object, MemberFunc func, DelegateThread &thread)
 Bind a const member function to the delegate.
 
void AsyncInvoke (Args... args)
 Invoke delegate function asynchronously. Do not wait for return value. Called by the source thread.
 
virtual void DelegateInvoke (std::shared_ptr< DelegateMsg > msg)
 Invoke the delegate function on the destination thread. Called by the destintation thread.
 
virtual void DelegateInvoke (std::shared_ptr< DelegateMsg > msg) override
 Invoke the delegate function on the destination thread. Called by the destintation thread.
 
DelegateThreadGetThread () noexcept
 Get the destination thread that the target function is invoked on.
 
- Public Member Functions inherited from DelegateLib::DelegateMember< TClass, RetType(Args...)>
 DelegateMember (SharedPtr object, MemberFunc func)
 Constructor to create a class instance.
 
 DelegateMember (SharedPtr object, ConstMemberFunc func)
 Constructor to create a class instance.
 
 DelegateMember (ObjectPtr object, MemberFunc func)
 Constructor to create a class instance.
 
 DelegateMember ()=default
 Default constructor creates an empty delegate.
 
void Bind (SharedPtr object, MemberFunc func)
 Bind a member function to the delegate.
 
void Bind (SharedPtr object, ConstMemberFunc func)
 Bind a const member function to the delegate.
 
void Bind (ObjectPtr object, MemberFunc func)
 Bind a member function to the delegate.
 
+ + + +
std::shared_ptr<TClass> DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::SharedPtr
+
+

Constructor & Destructor Documentation

+ +

◆ DelegateMemberAsync() [1/7]

+ +
+
+
+template<class TClass , class RetType , class... Args>
+ + + + + +
+ + + + + + + + + + + + + + + + +
DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::DelegateMemberAsync (SharedPtr object,
MemberFunc func,
DelegateThread & thread )
+
+inline
+
+ +

Constructor to create a class instance.

+
Parameters
+ + + + +
[in]objectThe target object pointer to store.
[in]funcThe target member function to store.
[in]threadThe execution thread to invoke func.
+
+
+ +
+
+ +

◆ DelegateMemberAsync() [2/7]

+ +
+
+
+template<class TClass , class RetType , class... Args>
+ + + + + +
+ + + + + + + + + + + + + + + + +
DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::DelegateMemberAsync (SharedPtr object,
ConstMemberFunc func,
DelegateThread & thread )
+
+inline
+
+ +

Constructor to create a class instance.

+
Parameters
+ + + + +
[in]objectThe target object pointer to store.
[in]funcThe target const member function to store.
[in]threadThe execution thread to invoke func.
+
+
+ +
+
-

◆ DelegateMemberAsync() [1/4]

+

◆ DelegateMemberAsync() [3/7]

@@ -391,7 +530,7 @@

-

◆ DelegateMemberAsync() [2/4]

+

◆ DelegateMemberAsync() [4/7]

@@ -437,7 +576,7 @@

-

◆ DelegateMemberAsync() [3/4]

+

◆ DelegateMemberAsync() [5/7]

@@ -469,10 +608,45 @@

+

◆ DelegateMemberAsync() [6/7]

+ +
+
+
+template<class TClass , class RetType , class... Args>
+ + + + + +
+ + + + + + + +
DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::DelegateMemberAsync (ClassType && rhs)
+
+inlinenoexcept
+
+ +

Move constructor that transfers ownership of resources.

+
Parameters
+ + +
[in]rhsThe object to move from.
+
+
+
-

◆ DelegateMemberAsync() [4/4]

+

◆ DelegateMemberAsync() [7/7]

@@ -570,7 +744,7 @@

-

◆ Bind() [1/2]

+

◆ Bind() [1/4]

@@ -616,7 +790,7 @@

-

◆ Bind() [2/2]

+

◆ Bind() [2/4]

@@ -659,6 +833,98 @@

+

◆ Bind() [3/4]

+ +
+
+
+template<class TClass , class RetType , class... Args>
+ + + + + +
+ + + + + + + + + + + + + + + + +
void DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::Bind (SharedPtr object,
ConstMemberFunc func,
DelegateThread & thread )
+
+inline
+
+ +

Bind a member function to the delegate.

+

This method associates a member function (func) with the delegate. Once the function is bound, the delegate can be used to invoke the function.

Parameters
+ + + + +
[in]objectThe target object instance.
[in]funcThe member function to bind to the delegate. This function must match the signature of the delegate.
[in]threadThe execution thread to invoke func.
+
+
+ +
+
+ +

◆ Bind() [4/4]

+ +
+
+
+template<class TClass , class RetType , class... Args>
+ + + + + +
+ + + + + + + + + + + + + + + + +
void DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::Bind (SharedPtr object,
MemberFunc func,
DelegateThread & thread )
+
+inline
+
+ +

Bind a const member function to the delegate.

+

This method associates a member function (func) with the delegate. Once the function is bound, the delegate can be used to invoke the function.

Parameters
+ + + + +
[in]objectThe target object instance.
[in]funcThe function to bind to the delegate. This function must match the signature of the delegate.
[in]threadThe execution thread to invoke func.
+
+
+
@@ -696,8 +962,8 @@

-

◆ DelegateInvoke()

+ +

◆ DelegateInvoke()

Invoke the delegate function on the destination thread. Called by the destintation thread.

-

Each source thread call to operator() generate a call to DelegateInvoke() on the destination thread. Unlike DelegateAsyncWait, a lock is not required between source and destination delegateMsg access because the source thread is not waiting for the function call to complete.

Parameters
+

Each source thread call to operator() generate a call to DelegateInvoke() on the destination thread. Unlike DelegateAsyncWait, a lock is not required between source and destination delegateMsg access because the source thread is not waiting for the function call to complete.

Parameters
[in]msgThe delegate message created and sent within operator()(Args... args).
@@ -820,7 +1086,7 @@

Invoke the bound delegate function asynchronously. Called by the source thread.

-

Invoke delegate function asynchronously and do not wait for return value. This function is called by the source thread. Dispatches the delegate data into the destination thread message queue. DelegateInvoke() must be called by the destination thread to invoke the target function.

+

Invoke delegate function asynchronously and do not wait for return value. This function is called by the source thread. Dispatches the delegate data into the destination thread message queue. DelegateInvoke() must be called by the destination thread to invoke the target function.

The DelegateAsyncMsg duplicates and copies the function arguments into heap memory. The source thread is not required to place function arguments into the heap. The delegate library performs all necessary heap and argument coping for the caller. Ensure complex argument data types can be safely copied by creating a copy constructor if necessary.

Parameters
diff --git a/doxygen/html/class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.js b/doxygen/html/class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.js index cdb2625..032386a 100644 --- a/doxygen/html/class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.js +++ b/doxygen/html/class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.js @@ -5,16 +5,22 @@ var class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_ [ "ConstMemberFunc", "class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a20a9019042525729f704966658bb17ce", null ], [ "MemberFunc", "class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aaf196667f048fb72dfd430bd12a9f8b1", null ], [ "ObjectPtr", "class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#acfabf1d64175cf35c3ddc562d9921ac2", null ], + [ "SharedPtr", "class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ab269a84c9fb2b4d30d47e7cb5ca7bbc2", null ], + [ "DelegateMemberAsync", "class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#afff94fad479eda85f2c93d35187221c0", null ], + [ "DelegateMemberAsync", "class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a4f4eceeb29f6e3f4afe18baeccb43e82", null ], [ "DelegateMemberAsync", "class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a8fe4844542d5e2881cb85e7c5f8cc1c9", null ], [ "DelegateMemberAsync", "class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a797d31931f53b5c43c75b712e2c4acc1", null ], [ "DelegateMemberAsync", "class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a222976657b434d64f0c3a6d5dc4426c4", null ], + [ "DelegateMemberAsync", "class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ad28ce245f32ae9de24542789d8727005", null ], [ "DelegateMemberAsync", "class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a498aee49e9441a11f859ead02545b79c", null ], [ "Assign", "class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#abe340362fa1daacc9e1d0b58428506e5", null ], [ "AsyncInvoke", "class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a66a4e60715f3379696d120cbfd0d0010", null ], [ "Bind", "class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a00787579ccdcf94fea924f2aa3b05cde", null ], [ "Bind", "class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aaa1df37c6b1b6f9549de0daa981fafcf", null ], + [ "Bind", "class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#acc96893f7caf4881d2b3f647465745f4", null ], + [ "Bind", "class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#af10b109e87b2ba4599da6c84e65931c3", null ], [ "Clone", "class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#acbd04f7121278e2dae40311c4f303d9b", null ], - [ "DelegateInvoke", "class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a97ee00052f6de71e7910784dce3b0fa4", null ], + [ "DelegateInvoke", "class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a470bad2bda18c47a169b88a923d06fa6", null ], [ "GetSync", "class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aec8a8636e131eb2746311426dacb7490", null ], [ "GetThread", "class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aca30b381dee966dc0dab34e41080af4e", null ], [ "operator()", "class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aa73f04631d245b5bf76b6e3025a0b5e5", null ], diff --git a/doxygen/html/class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4-members.html b/doxygen/html/class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4-members.html index 830c0ec..899d95f 100644 --- a/doxygen/html/class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4-members.html +++ b/doxygen/html/class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4-members.html @@ -107,46 +107,58 @@ + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + +
[in]argsThe function arguments, if any.
DelegateLib::DelegateMember< TClass, RetType(Args...)>::Assign(const ClassType &rhs)DelegateLib::DelegateMember< TClass, RetType(Args...)>inline
AsyncInvoke(Args... args)DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>inline
BaseType typedefDelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>
Bind(SharedPtr object, MemberFunc func, DelegateThread &thread)DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>inline
Bind(SharedPtr object, ConstMemberFunc func, DelegateThread &thread)DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>inline
Bind(ObjectPtr object, MemberFunc func, DelegateThread &thread)DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>inline
Bind(ObjectPtr object, ConstMemberFunc func, DelegateThread &thread)DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>inline
DelegateLib::DelegateMember< TClass, RetType(Args...)>::Bind(ObjectPtr object, MemberFunc func)DelegateLib::DelegateMember< TClass, RetType(Args...)>inline
ClassType typedefDelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>
Clear() noexceptDelegateLib::DelegateMember< TClass, RetType(Args...)>inline
Clone() const overrideDelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>inlinevirtual
ConstMemberFunc typedefDelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>
DelegateBase()=defaultDelegateLib::DelegateBase
DelegateInvoke(std::shared_ptr< DelegateMsg > msg) overrideDelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>inlinevirtual
DelegateMember(ObjectPtr object, MemberFunc func)DelegateLib::DelegateMember< TClass, RetType(Args...)>inline
DelegateMember(ObjectPtr object, ConstMemberFunc func)DelegateLib::DelegateMember< TClass, RetType(Args...)>inline
DelegateMember(const ClassType &rhs)DelegateLib::DelegateMember< TClass, RetType(Args...)>inline
DelegateMember(ClassType &&rhs) noexceptDelegateLib::DelegateMember< TClass, RetType(Args...)>inline
DelegateMember()=defaultDelegateLib::DelegateMember< TClass, RetType(Args...)>
DelegateMemberAsync(ObjectPtr object, MemberFunc func, DelegateThread &thread)DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>inline
DelegateMemberAsync(ObjectPtr object, ConstMemberFunc func, DelegateThread &thread)DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>inline
DelegateMemberAsync(const ClassType &rhs)DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>inline
DelegateLib::DelegateMember< TClass, RetType(Args...)>::Bind(SharedPtr object, MemberFunc func)DelegateLib::DelegateMember< TClass, RetType(Args...)>inline
DelegateLib::DelegateMember< TClass, RetType(Args...)>::Bind(ObjectPtr object, MemberFunc func)DelegateLib::DelegateMember< TClass, RetType(Args...)>inline
ClassType typedefDelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>
Clear() noexceptDelegateLib::DelegateMember< TClass, RetType(Args...)>inline
Clone() const overrideDelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>inlinevirtual
ConstMemberFunc typedefDelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>
DelegateBase()=defaultDelegateLib::DelegateBase
DelegateInvoke(std::shared_ptr< DelegateMsg > msg) overrideDelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>inlinevirtual
DelegateMember(SharedPtr object, MemberFunc func)DelegateLib::DelegateMember< TClass, RetType(Args...)>inline
DelegateMember(SharedPtr object, ConstMemberFunc func)DelegateLib::DelegateMember< TClass, RetType(Args...)>inline
DelegateMember(ObjectPtr object, MemberFunc func)DelegateLib::DelegateMember< TClass, RetType(Args...)>inline
DelegateMember(ObjectPtr object, ConstMemberFunc func)DelegateLib::DelegateMember< TClass, RetType(Args...)>inline
DelegateMember(const ClassType &rhs)DelegateLib::DelegateMember< TClass, RetType(Args...)>inline
DelegateMember(ClassType &&rhs) noexceptDelegateLib::DelegateMember< TClass, RetType(Args...)>inline
DelegateMember()=defaultDelegateLib::DelegateMember< TClass, RetType(Args...)>
DelegateMemberAsync(SharedPtr object, MemberFunc func, DelegateThread &thread)DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>inline
DelegateMemberAsync(SharedPtr object, ConstMemberFunc func, DelegateThread &thread)DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>inline
DelegateMemberAsync(ObjectPtr object, MemberFunc func, DelegateThread &thread)DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>inline
DelegateMemberAsync(ObjectPtr object, ConstMemberFunc func, DelegateThread &thread)DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>inline
DelegateMemberAsync(const ClassType &rhs)DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>inline
DelegateMemberAsync(ClassType &&rhs) noexceptDelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>inline
DelegateMemberAsync()=deleteDelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>
DelegateMemberAsyncWait(SharedPtr object, MemberFunc func, DelegateThread &thread, std::chrono::milliseconds timeout=WAIT_INFINITE)DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>inline
DelegateMemberAsyncWait(SharedPtr object, ConstMemberFunc func, DelegateThread &thread, std::chrono::milliseconds timeout)DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>inline
DelegateMemberAsyncWait(ObjectPtr object, MemberFunc func, DelegateThread &thread, std::chrono::milliseconds timeout=WAIT_INFINITE)DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>inline
DelegateMemberAsyncWait(ObjectPtr object, ConstMemberFunc func, DelegateThread &thread, std::chrono::milliseconds timeout)DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>inline
DelegateMemberAsyncWait(const ClassType &rhs)DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>inline
DelegateMemberAsyncWait()=deleteDelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>
Empty() const noexceptDelegateLib::DelegateMember< TClass, RetType(Args...)>inline
GetRetVal() noexceptDelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>inline
GetSync()DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>inlineprotected
GetThread() noexceptDelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>inline
IsSuccess() noexceptDelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>inline
MemberFunc typedefDelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>
ObjectPtr typedefDelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>
operator bool() const noexceptDelegateLib::DelegateMember< TClass, RetType(Args...)>inlineexplicit
operator!=(const DelegateBase &rhs) constDelegateLib::DelegateBaseinlinevirtual
operator()(Args... args) overrideDelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>inlinevirtual
operator=(const ClassType &rhs)DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>inline
operator=(ClassType &&rhs) noexceptDelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>inline
DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::operator=(const ClassType &rhs)DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>inline
DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::operator=(ClassType &&rhs) noexceptDelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>inline
DelegateLib::DelegateMember< TClass, RetType(Args...)>::operator=(const ClassType &rhs)DelegateLib::DelegateMember< TClass, RetType(Args...)>inline
DelegateLib::DelegateMember< TClass, RetType(Args...)>::operator=(ClassType &&rhs) noexceptDelegateLib::DelegateMember< TClass, RetType(Args...)>inline
operator==(const DelegateBase &rhs) const overrideDelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>inlinevirtual
SetSync(bool sync)DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>inlineprotected
DelegateMemberAsyncWait(ClassType &&rhs) noexceptDelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>inline
DelegateMemberAsyncWait()=deleteDelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>
Empty() const noexceptDelegateLib::DelegateMember< TClass, RetType(Args...)>inline
GetRetVal() noexceptDelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>inline
GetSync()DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>inlineprotected
GetThread() noexceptDelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>inline
IsSuccess() noexceptDelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>inline
MemberFunc typedefDelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>
ObjectPtr typedefDelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>
operator bool() const noexceptDelegateLib::DelegateMember< TClass, RetType(Args...)>inlineexplicit
operator!=(const DelegateBase &rhs) constDelegateLib::DelegateBaseinlinevirtual
operator()(Args... args) overrideDelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>inlinevirtual
operator=(const ClassType &rhs)DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>inline
operator=(ClassType &&rhs) noexceptDelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>inline
DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::operator=(const ClassType &rhs)DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>inline
DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::operator=(ClassType &&rhs) noexceptDelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>inline
DelegateLib::DelegateMember< TClass, RetType(Args...)>::operator=(const ClassType &rhs)DelegateLib::DelegateMember< TClass, RetType(Args...)>inline
DelegateLib::DelegateMember< TClass, RetType(Args...)>::operator=(ClassType &&rhs) noexceptDelegateLib::DelegateMember< TClass, RetType(Args...)>inline
operator==(const DelegateBase &rhs) const overrideDelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>inlinevirtual
SetSync(bool sync)DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>inlineprotected
SharedPtr typedefDelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>
~DelegateBase() noexcept=defaultDelegateLib::DelegateBasevirtual

diff --git a/doxygen/html/class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html b/doxygen/html/class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html index 1c3c3f4..eb4fc96 100644 --- a/doxygen/html/class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html +++ b/doxygen/html/class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html @@ -126,6 +126,8 @@ Public Types

typedef TClass * ObjectPtr   +typedef std::shared_ptr< TClass > SharedPtr +  typedef RetType(TClass::*) MemberFunc(Args...)   typedef RetType(TClass::*) ConstMemberFunc(Args...) const @@ -137,6 +139,8 @@ - Public Types inherited from DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)> typedef TClass * ObjectPtr   +typedef std::shared_ptr< TClass > SharedPtr +  typedef RetType(TClass::*) MemberFunc(Args...)   typedef RetType(TClass::*) ConstMemberFunc(Args...) const @@ -148,6 +152,8 @@ - Public Types inherited from DelegateLib::DelegateMember< TClass, RetType(Args...)> typedef TClass * ObjectPtr   +typedef std::shared_ptr< TClass > SharedPtr +  typedef RetType(TClass::*) MemberFunc(Args...)   typedef RetType(TClass::*) ConstMemberFunc(Args...) const @@ -157,19 +163,37 @@ + + + + + + + + + + + + + + + + + + - + - + @@ -200,6 +224,12 @@ + + + + + + @@ -209,8 +239,17 @@ + + + + + + + + + @@ -233,6 +272,12 @@ + + + + + + @@ -248,6 +293,12 @@ + + + + + + @@ -383,11 +434,133 @@

+ + + +

◆ SharedPtr

+ +
+
+
+template<class TClass , class RetType , class... Args>
+

Public Member Functions

 DelegateMemberAsyncWait (SharedPtr object, MemberFunc func, DelegateThread &thread, std::chrono::milliseconds timeout=WAIT_INFINITE)
 Constructor to create a class instance.
 
 DelegateMemberAsyncWait (SharedPtr object, ConstMemberFunc func, DelegateThread &thread, std::chrono::milliseconds timeout)
 Constructor to create a class instance.
 
 DelegateMemberAsyncWait (ObjectPtr object, MemberFunc func, DelegateThread &thread, std::chrono::milliseconds timeout=WAIT_INFINITE)
 Constructor to create a class instance.
 
 DelegateMemberAsyncWait (ObjectPtr object, ConstMemberFunc func, DelegateThread &thread, std::chrono::milliseconds timeout)
 Constructor to create a class instance.
 
 DelegateMemberAsyncWait (const ClassType &rhs)
 Copy constructor that creates a copy of the given instance.
 
 DelegateMemberAsyncWait (ClassType &&rhs) noexcept
 Move constructor that transfers ownership of resources.
 
 DelegateMemberAsyncWait ()=delete
 
void Bind (SharedPtr object, MemberFunc func, DelegateThread &thread)
 Bind a const member function to the delegate.
 
void Bind (SharedPtr object, ConstMemberFunc func, DelegateThread &thread)
 Bind a member function to the delegate.
 
void Bind (ObjectPtr object, MemberFunc func, DelegateThread &thread)
 Bind a member function to a delegate.
 Bind a const member function to the delegate.
 
void Bind (ObjectPtr object, ConstMemberFunc func, DelegateThread &thread)
 Bind a const member function to a delegate.
 Bind a member function to the delegate.
 
void Assign (const ClassType &rhs)
 Assigns the state of one object to another.
RetType GetRetVal () noexcept
 
- Public Member Functions inherited from DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>
 DelegateMemberAsync (SharedPtr object, MemberFunc func, DelegateThread &thread)
 Constructor to create a class instance.
 
 DelegateMemberAsync (SharedPtr object, ConstMemberFunc func, DelegateThread &thread)
 Constructor to create a class instance.
 
 DelegateMemberAsync (ObjectPtr object, MemberFunc func, DelegateThread &thread)
 Constructor to create a class instance.
 
 DelegateMemberAsync (const ClassType &rhs)
 Copy constructor that creates a copy of the given instance.
 
 DelegateMemberAsync (ClassType &&rhs) noexcept
 Move constructor that transfers ownership of resources.
 
 DelegateMemberAsync ()=delete
 
void Bind (SharedPtr object, MemberFunc func, DelegateThread &thread)
 Bind a const member function to the delegate.
 
void Bind (SharedPtr object, ConstMemberFunc func, DelegateThread &thread)
 Bind a member function to the delegate.
 
void Bind (ObjectPtr object, MemberFunc func, DelegateThread &thread)
 Bind a const member function to the delegate.
 
 Get the destination thread that the target function is invoked on.
 
- Public Member Functions inherited from DelegateLib::DelegateMember< TClass, RetType(Args...)>
 DelegateMember (SharedPtr object, MemberFunc func)
 Constructor to create a class instance.
 
 DelegateMember (SharedPtr object, ConstMemberFunc func)
 Constructor to create a class instance.
 
 DelegateMember (ObjectPtr object, MemberFunc func)
 Constructor to create a class instance.
 
 DelegateMember ()=default
 Default constructor creates an empty delegate.
 
void Bind (SharedPtr object, MemberFunc func)
 Bind a member function to the delegate.
 
void Bind (SharedPtr object, ConstMemberFunc func)
 Bind a const member function to the delegate.
 
void Bind (ObjectPtr object, MemberFunc func)
 Bind a member function to the delegate.
 
+ + + +
std::shared_ptr<TClass> DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::SharedPtr
+

+

Constructor & Destructor Documentation

+ +

◆ DelegateMemberAsyncWait() [1/7]

+ +
+
+
+template<class TClass , class RetType , class... Args>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::DelegateMemberAsyncWait (SharedPtr object,
MemberFunc func,
DelegateThread & thread,
std::chrono::milliseconds timeout = WAIT_INFINITE )
+
+inline
+
+ +

Constructor to create a class instance.

+
Parameters
+ + + + + +
[in]objectThe target object pointer to store.
[in]funcThe target member function to store.
[in]threadThe execution thread to invoke func.
[in]timeoutThe calling thread timeout for destination thread to invoke the target function.
+
+
+
+ +
+
+ +

◆ DelegateMemberAsyncWait() [2/7]

+ +
+
+
+template<class TClass , class RetType , class... Args>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::DelegateMemberAsyncWait (SharedPtr object,
ConstMemberFunc func,
DelegateThread & thread,
std::chrono::milliseconds timeout )
+
+inline
+
+ +

Constructor to create a class instance.

+
Parameters
+ + + + + +
[in]objectThe target object pointer to store.
[in]funcThe target const member function to store.
[in]threadThe execution thread to invoke func.
[in]timeoutThe calling thread timeout for destination thread to invoke the target function.
+
+
+
+ +
+
-

◆ DelegateMemberAsyncWait() [1/4]

+

◆ DelegateMemberAsyncWait() [3/7]

-

◆ DelegateMemberAsyncWait() [2/4]

+

◆ DelegateMemberAsyncWait() [4/7]

-

◆ DelegateMemberAsyncWait() [3/4]

+

◆ DelegateMemberAsyncWait() [5/7]

+ +

◆ DelegateMemberAsyncWait() [6/7]

+ +
+
+
+template<class TClass , class RetType , class... Args>
+ + + + + +
+ + + + + + + +
DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::DelegateMemberAsyncWait (ClassType && rhs)
+
+inlinenoexcept
+
+ +

Move constructor that transfers ownership of resources.

+
Parameters
+ + +
[in]rhsThe object to move from.
+
+
+
-

◆ DelegateMemberAsyncWait() [4/4]

+

◆ DelegateMemberAsyncWait() [7/7]

@@ -596,7 +836,7 @@

-

◆ Bind() [1/2]

+

◆ Bind() [1/4]

-

◆ Bind() [2/2]

+

◆ Bind() [2/4]

+ +

◆ Bind() [3/4]

+ +
+
+
+template<class TClass , class RetType , class... Args>
+ + + + + +
+ + + + + + + + + + + + + + + + +
void DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::Bind (SharedPtr object,
ConstMemberFunc func,
DelegateThread & thread )
+
+inline
+
+ +

Bind a member function to the delegate.

+

This method associates a member function (func) with the delegate. Once the function is bound, the delegate can be used to invoke the function.

Parameters
+ + + + +
[in]objectThe target object instance.
[in]funcThe member function to bind to the delegate. This function must match the signature of the delegate.
[in]threadThe execution thread to invoke func.
+
+
+ +
+
+ +

◆ Bind() [4/4]

+ +
+
+
+template<class TClass , class RetType , class... Args>
+ + + + + +
+ + + + + + + + + + + + + + + + +
void DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::Bind (SharedPtr object,
MemberFunc func,
DelegateThread & thread )
+
+inline
+
+ +

Bind a const member function to the delegate.

+

This method associates a member function (func) with the delegate. Once the function is bound, the delegate can be used to invoke the function.

Parameters
+ + + + +
[in]objectThe target object instance.
[in]funcThe function to bind to the delegate. This function must match the signature of the delegate.
[in]threadThe execution thread to invoke func.
+
+
@@ -738,7 +1086,7 @@

DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>.

+

Reimplemented from DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>.

diff --git a/doxygen/html/class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.js b/doxygen/html/class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.js index 21404f1..6bd4369 100644 --- a/doxygen/html/class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.js +++ b/doxygen/html/class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.js @@ -5,14 +5,20 @@ var class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_typ [ "ConstMemberFunc", "class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ad39ce01bd33617cb77b82ab93dc9284a", null ], [ "MemberFunc", "class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a4f8262576388c8627661815107ec1120", null ], [ "ObjectPtr", "class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aaecfde6d367d64edd65e8e5c0fbe394a", null ], + [ "SharedPtr", "class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a1880c4ca2f5e3e182533fa68e6522f23", null ], + [ "DelegateMemberAsyncWait", "class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ada8b19fb76daac6e38fc5684a8217112", null ], + [ "DelegateMemberAsyncWait", "class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#afe99f7555a4c36ba95a08267bf5bb85d", null ], [ "DelegateMemberAsyncWait", "class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a9c9a5f01b71911ff87ce41da11d9bd76", null ], [ "DelegateMemberAsyncWait", "class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a3e831f0389d2ddfa37c5c6a24f145dd4", null ], [ "DelegateMemberAsyncWait", "class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a0b1ea98a55b2871d5b21c3d85d811baf", null ], + [ "DelegateMemberAsyncWait", "class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a4c6ecc8941ffa3e74bc21bebc94f8c6d", null ], [ "DelegateMemberAsyncWait", "class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a93fccd873d370ab1c6ce08a8d731a85e", null ], [ "Assign", "class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a1ead27747d4dc9a932bc7957de036a6c", null ], [ "AsyncInvoke", "class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a8291fb2c29ace6e80959768d7e614e13", null ], [ "Bind", "class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#af52d71df3cdb3d55a49e725b63a19d25", null ], [ "Bind", "class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a24c3b8b9fd284963b56d32b2aeaf5bd1", null ], + [ "Bind", "class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ae7a040c2bec3f07797b19a6de8481a7f", null ], + [ "Bind", "class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a48971ab5284449ef2402b65922187238", null ], [ "Clone", "class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a2f80842f6fce3a49b26fd09d5f0ed283", null ], [ "DelegateInvoke", "class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a20e9f7755ba4b19fb12988da5f8fe6f7", null ], [ "GetRetVal", "class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a4f336c0ec1773959bdc114685a493ac3", null ], diff --git a/doxygen/html/class_delegate_lib_1_1_i_delegate_invoker.html b/doxygen/html/class_delegate_lib_1_1_i_delegate_invoker.html index d4fc331..3d810a1 100644 --- a/doxygen/html/class_delegate_lib_1_1_i_delegate_invoker.html +++ b/doxygen/html/class_delegate_lib_1_1_i_delegate_invoker.html @@ -113,14 +113,12 @@
-DelegateLib::DelegateFreeAsync< RetType(Args...)> -DelegateLib::DelegateFunctionAsync< RetType(Args...)> -DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)> -DelegateLib::DelegateMemberSpAsync< TClass, RetType(Args...)> -DelegateLib::DelegateFreeAsyncWait< RetType(Args...)> -DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)> -DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)> -DelegateLib::DelegateMemberSpAsyncWait< TClass, RetType(Args...)> +DelegateLib::DelegateFreeAsync< RetType(Args...)> +DelegateLib::DelegateFunctionAsync< RetType(Args...)> +DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)> +DelegateLib::DelegateFreeAsyncWait< RetType(Args...)> +DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)> +DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>

@@ -167,7 +165,7 @@

DelegateLib::DelegateFreeAsync< RetType(Args...)>, DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>, DelegateLib::DelegateFunctionAsync< RetType(Args...)>, DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>, DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>, DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>, DelegateLib::DelegateMemberSpAsync< TClass, RetType(Args...)>, and DelegateLib::DelegateMemberSpAsyncWait< TClass, RetType(Args...)>.

+

Implemented in DelegateLib::DelegateFreeAsync< RetType(Args...)>, DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>, DelegateLib::DelegateFunctionAsync< RetType(Args...)>, DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>, DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>, and DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>.

diff --git a/doxygen/html/class_delegate_lib_1_1_i_delegate_invoker.png b/doxygen/html/class_delegate_lib_1_1_i_delegate_invoker.png index 0d51f38748beee530b23f4c7d973f073aa15cbec..ef45c953033532fc9b2ebde418ce713c82d19ffc 100644 GIT binary patch literal 3555 zcmd6pdpMNq7Qny3Mj4FlPGU4jxuvwt2pQ~*jpPzx52o-C5=9J+T`m(lWn4>>_C}(Z zMxmX{6yuT!JJ-Qxlo*$pB)2p!=QC;VbDnel>DlKz&-wm%zjv+muJ>7Mz3=*c-xWuP zBjVeYwgUhlj}cm=y|J+YPA55w=dU#s8yjecDdfDI z93346^+xT-3qjkqb50J<04VdH?*#ICz&%4TRu(Q7AYAfHb_GgCD7C|*ymmucmF=vC z@D=hqH4~WZ^tR$kjV74}2&?UAG=TamB*BFN;b(wCya*J@4i4`?3P|h&1bu+2Q5XZs zHZZ0G(0B;*lBEv&R^up4&;Stj5tE?aijcT$3EgzlHKv13&@HDhTcWr*6dYVvg?zxwJOWvwAB3U6GVgPs=Ytc(zGNljM6YCuJvb};o`|!74s~ zsa$owdL;y!OZeq{O_&r8e|k7oheDHAK4YfQvjevoZ}96sV0n)Un4UTh0p@)6)52^awT9>U^@Oz2^&U|}_woB&KJ4?-li140dGKpnRqkfJKaA9fezo7E2r z!bHXRW-GcsAm9tW4HbcED4&7ikvLL#tf-t_+Izq)xkWnYGqE$f*^QD!}mhtVz~ zGVN@&trHNK?@8*84zd_Sk_;p-y^v^3M`*)t?;*)ZeVuej9@p4;e^n2oGBLJXH`DTF zP-}Z{wav}yUTKnxv#Zj(N`ij<>uoi{@Ib2Re%D{8?=c8fg{<~lQ$A~L>+Sf9yg%N} zS(5sYjr|$$<5|NalY>mLL`2D(K|{=-&Eoqb+}iw&F&X?Gdc*Yf!kb647S!kt=fZ}# z-&ikC#0fO3k3HF$$lO+s6{QkpBT%gFrB7yYc`P}G!z*sF*f3$`9M}Ec`{;mJY>kqg zcsXNv)@y;czQE&>+PIl86SpH2Kl3wwWs*6M;dF;^$E66)BJ)nEN%ugzz_gl2TJaP| zu^tPh2A&!pX`7qNw%Ak6-rgH;Ru{N;#BV#nj5%P3gjT! zw6Xs_JW}}sZua&Hch37NSLZ;!PC%DTSXr%q+zGQ^-$g|SL_d}Oh1{G*Te_lv*QGmj zQ+LtLT)X3-h0Fzf( zy$@XJ;+i3oyr%o84{hoMcOv=j$p~Uxd0`nmGU>85y|lSME)JJ{4*kGw!p>Viff;Vo zgzcX6i%P|sdfz)?-nOz&C5WQUbJT@}(C`@#V?Mkg6mvQwq?XV`^8ErN#bSO*mUJ+I z87*;KiN@)uFjf9W$FNB8X!pSWSW`uuIpyq`*iT-*Q4h$aCtoM@5U%!(4->*$p$Dy$@ob` z9Zs|2@=4p!dmjSo(#Zv=;~9~3$r`Z7arUgl^DtMCA^uL zgmoM2=wauG)uBvp3WPNBEMo)zXi0KcQz7+yupr$&C_VT*-#x4FruoA83q%Yly^w7T z_T&qjE(Y^wgf$(miTUZh3)rY%C%sj|X&0Sxveg!9a=~b8fGmJNypidYBKpj26S~hI zD)LG8Pb?xfj^lO#bN|WEn|u{WX#96f$@D?~pBeZ+1?*RDzM`~WyJ$h&%gJ_1jDHZs z_QFgjD;v@>oxAOFCi~M(Uv=CWUBeM-q5lqK*MSCSN19F2R&9V#lK}(*~-v*&og2 z`pu5rtGDi|ExWy2UtvnJM6oA~Ffl6`_wlWLj?JE`GG~p_w5m#$dWliQ-OG!6dEcqR zeL|N%!Z9p!VH7eAf87-L}c{uZZ&+|5H)oes9@O`PH|_-KAK#i@xkmBMw4w$){gjp<%? z3GI|E?d+4$l4oVJvkP`>om!(?(}p1JwsMxU2WqRawoccE`Ec$#u(RH>OMjDFd!DS@ ze>^*(kBYt%??CJwWa!m1`YpEL{BeX2XZj|b*@X2WZ|A4iBM9^$8V?myKynEs%i5Cq zj1lyaf`TDVXd>nMdUGD(d!A(aGqQcv`h?!wEj-r08qS*322RGb;w6&&yllkf_T(N)zBq}*tgSpR+|Z94fAN}XP%=SN!DD%Jv{K(y`x7v^gR zUIS^3JH_;^PZQlI-e~b-^l!iCuat{bi-Y~L9FLWx9^S;ir3Tj!gf+`Q7hyW;zBR1VK}vehigL_6ALWjYyZ7s&|l|JhbW Xk_F%TYFghJ0>B4j?O;`o_PO*A=eH*) literal 4243 zcmds)cTiLL7RN6t7OX2MQZ%bZG`Iq45CQ@!kZ_|B4H2m-77}Wt3o(Mrf(jCrKyVE~ zgg_8jl#YNDVUPvZKA(64WU<#wAJ*{vt17PORWo#`mAQ#>ctr>de&IBl=j@mAn;~<|aO` znY_>WIDGD7A8Tw~#mHdGw3DZhFHXyK=lU9*v=c5FEkc_yRye)Cx*11qszJ$<7tNOe zHzT^(0tvBIBzfTyTN+&ajvXE*IqO+)T@L5uWE*<_S?Sh6a<^vclDm)ZkrX$_w^?a- z^Ba0?id$P1L++Qna$|UKDesoHdyO_zF!bOdZAP@2(T>dzJ!{i;F(IF{zL^Ol%}~x+ z%iGfoLO5G;gTEl?{ff8;p^E}w`6tVcyBt+JSA^TF>VoD2+kw!z_~9A=?AjDbG3Z2r z=DkR_)OD1Khq<|~3WRPw{oX|{wgrS|IUz;GGwJ#=Y8Y;usC#md^4J@1m&y%b|-YGu`Cf%tiH8^emmoU%ORh9IEe)>XNm3FI!^a(?RA6C}8F{ zIJWIHu=4AmY|0HOwJ;wb)pn<`x_u!ypm@3@zjU6LfXR2PQ``jy=VFWU_Ul0b%QKWV zd|S}{dXJFJ4B15|=6>-XSddGr5P0f5Y!rANN^TTfJ)PWG&4QYj&~CWP27pw?z5u{N z?ilcc%wyZ3Ro??!r8fbg%T@;%OXY-$fE8s4z_Lqc=VjiRu&>fNS-sli@~_f4Sx4oq zCFz{SqPC55R=-*#$9Pbk0@%6-l)8=t@kKXwfq39Ai30KyQf4WP zSvs=f`ji7Kpqaj{knayR9HI;qsjJfB!BU#aP%$Yr)qpSV=urxSr@ViI0{!R%@4^fH^dw2n zetVhB+})riFIG<;r>k1v%uQFx)_OL^lNVG?kdivj@&idBmq`uT6>BI4OtJq49wn?{ ztj~q~xgRrHDjyX1V6Cmv^`bm=f<;M#0afq!E!ZHY zM&)jJKQvA10KxX|k_l>Qs(lw%U&y|Y{;KC8($AD?YGk&;utJXFuuOVW9uC>H(!%wC z@-SJDI4ZJ=pK->yx#yhsP9fV{`Zi4p0#_Yo@8phCKWOa)O|y-WLLxCGQ1-w`Y& z(ZeajVI;?zGjV6=g&|i~ckW}V?S{G7j#2%-Jgs5`1xNP&cq24DrC~7A5p#`^CG3su z6+FDe5|F25>51}faHe;5_AX|EuC)S=vQKcnc+?~%!QxiS%rDjg*K9Yx3CQO#PRsgc zp$;n}EFq=ljeto|E**5c7JoLD*ZOIi?-Sc;yuW5^IOBB}>L|HsbmTFb!C%b@OK{NA zHN}|SB<^QBY}}I{^lbD@{&WxunceW3;c%Rv&69gsKPbB|AY+Q{a5U?(Q-j#8E;PFM z!jlrGs{(J5AFiE-s%Gcar6)B;mWWynH0n5hv3AXEf z8mZ>F=vsUG#U8J_hSP&7g)`5E6`S@e$gZd7(0vk8q;(~A;bhg157A~8#5&`~60GXR ziXvz8uJq)a>$+g!eR-eOB~7(Vea}qTrl=!oNRU6)X3c|xwaytDWV8N>S&ZMua}@Do zc>3Eg5vwNidEo>UljhdvHhlJoOmP}(Ld zcOFr~9cYh8M2xVC5vgu___qD}sl(^ahACP-@dWH(Au3*7=q~@F`l7TqiDfy%V}@@M zrC|3s!9ykuQ32fUEzLRfaFggnrg}fck`NR8;pFz?ZOI8B{XV?7ia7sv2{v9#4sRj< zyhn`aiGW4aVg{k9fR6H}a8M@TFNv^o=80Qz~yfV3{buYl`tfw zg>3ytDL9*Tdh3e%qko>#?NNi7-v_j0{y78g3;!<|03q#v2cUoR=67TncMF6Adu78e}*$7-{W;(epU$_cv|;DQh&$v z*1%?vndQDK*OAyEV56+%a+B%3`}@e<{uf=4*#TO!J> z(vku3l?8@$&pRne4zC^0%v0^9vy~F=bw@-Zb2rMG#@WuWInrky)*h2T!h`i!&61L4 zvq~P$Q!U1DE#&}HO(HyS`B{Xo_=RviOe8Cj)Xif}!t2bX#+Q#W#J-iwQ!y=e{(~N( zw)T*oyo(sGVq5&Q*d8f#B0e?qhxO#axb31vwo#}TQ#o(AB@1k0A!j;gwk9BcjJFGM z(YdX-Wzr8~8~z{Irlqg7!?@sSi>Y!hRp;@`-%0(4sd3MLPF(du5jWdzInZQOo5|9n zEz<2={KXyUu&(;5-?8Tjf#s~_Z{K1){fng_ z*z4{0w}Nu2I;PRp+uW!zf~EJ}-%-v!Z}eb(LzlfECyw9Zqt3L_BINhhmv=+|FszfE z@NV+}MSGzyR`eO8W9z(bOl?%~Bjnxq)%odr4cgh-s=)2%E-0KL8$s3|(KuI7lwHip zGw#-(RX0XTJL^K!@3NUL9`6d}tPakLI~FDb-Sey6`|?zTu&EcW?I(io$j;^iF4NCPqP!i&Q>&=HO z=XTCXK{eUuxlm{PU1qD+JgS-g*7Sr_Nnt_7*k(} zdU}_xA)zYpbsNO6_}Joosn_fMn? zb?Yy}n4R>7J7ArO>USM&K&7=^A7)zaIyTjxND5rjsljaWQqt@bo`A(9d%bhu_uUbX z1{?`pfZki~h3_Ef)v0;X#{)JBtoNki49AjaD$cbeI(#?SnQ4mz=@E(H^W}0V#5!#z zJjM2C#A3Oeu@7P$8>Dws%7TkE^*=3Qu@Om8r?7}zlYY;|H3K6JiTFPl$x65t9m VxrRsGK>?r#G(K(g^u(nf{|5D9Nn`*3 diff --git a/doxygen/html/classes.html b/doxygen/html/classes.html index c3d30ce..0d46216 100644 --- a/doxygen/html/classes.html +++ b/doxygen/html/classes.html @@ -103,7 +103,7 @@
D
-
Delegate (DelegateLib)
Delegate< RetType(Args...)> (DelegateLib)
DelegateAsyncMsg (DelegateLib)
DelegateAsyncWaitMsg (DelegateLib)
DelegateBase (DelegateLib)
DelegateFree (DelegateLib)
DelegateFree< RetType(Args...)> (DelegateLib)
DelegateFreeAsync (DelegateLib)
DelegateFreeAsync< RetType(Args...)> (DelegateLib)
DelegateFreeAsyncWait (DelegateLib)
DelegateFreeAsyncWait< RetType(Args...)> (DelegateLib)
DelegateFunction (DelegateLib)
DelegateFunction< RetType(Args...)> (DelegateLib)
DelegateFunctionAsync (DelegateLib)
DelegateFunctionAsync< RetType(Args...)> (DelegateLib)
DelegateFunctionAsyncWait (DelegateLib)
DelegateFunctionAsyncWait< RetType(Args...)> (DelegateLib)
DelegateMember (DelegateLib)
DelegateMember< TClass, RetType(Args...)> (DelegateLib)
DelegateMemberAsync (DelegateLib)
DelegateMemberAsync< TClass, RetType(Args...)> (DelegateLib)
DelegateMemberAsyncWait (DelegateLib)
DelegateMemberAsyncWait< TClass, RetType(Args...)> (DelegateLib)
DelegateMemberSp (DelegateLib)
DelegateMemberSp< TClass, RetType(Args...)> (DelegateLib)
DelegateMemberSpAsync (DelegateLib)
DelegateMemberSpAsync< TClass, RetType(Args...)> (DelegateLib)
DelegateMemberSpAsyncWait (DelegateLib)
DelegateMemberSpAsyncWait< TClass, RetType(Args...)> (DelegateLib)
DelegateMsg (DelegateLib)
DelegateThread (DelegateLib)
+
Delegate (DelegateLib)
Delegate< RetType(Args...)> (DelegateLib)
DelegateAsyncMsg (DelegateLib)
DelegateAsyncWaitMsg (DelegateLib)
DelegateBase (DelegateLib)
DelegateFree (DelegateLib)
DelegateFree< RetType(Args...)> (DelegateLib)
DelegateFreeAsync (DelegateLib)
DelegateFreeAsync< RetType(Args...)> (DelegateLib)
DelegateFreeAsyncWait (DelegateLib)
DelegateFreeAsyncWait< RetType(Args...)> (DelegateLib)
DelegateFunction (DelegateLib)
DelegateFunction< RetType(Args...)> (DelegateLib)
DelegateFunctionAsync (DelegateLib)
DelegateFunctionAsync< RetType(Args...)> (DelegateLib)
DelegateFunctionAsyncWait (DelegateLib)
DelegateFunctionAsyncWait< RetType(Args...)> (DelegateLib)
DelegateMember (DelegateLib)
DelegateMember< TClass, RetType(Args...)> (DelegateLib)
DelegateMemberAsync (DelegateLib)
DelegateMemberAsync< TClass, RetType(Args...)> (DelegateLib)
DelegateMemberAsyncWait (DelegateLib)
DelegateMemberAsyncWait< TClass, RetType(Args...)> (DelegateLib)
DelegateMsg (DelegateLib)
DelegateThread (DelegateLib)
H
heap_arg_deleter (DelegateLib)
heap_arg_deleter< T * > (DelegateLib)
heap_arg_deleter< T ** > (DelegateLib)
heap_arg_deleter_base (DelegateLib)
diff --git a/doxygen/html/doxygen_crawl.html b/doxygen/html/doxygen_crawl.html index 7e9181e..9cfd2c0 100644 --- a/doxygen/html/doxygen_crawl.html +++ b/doxygen/html/doxygen_crawl.html @@ -72,15 +72,6 @@ - - - - - - - - - @@ -165,22 +156,23 @@ + - + - + - + @@ -237,7 +229,7 @@ - + @@ -296,6 +288,7 @@ + @@ -303,11 +296,11 @@ - + @@ -321,6 +314,7 @@ + @@ -333,11 +327,16 @@ + + + + + @@ -357,30 +356,39 @@ + + - + + + + + + + + @@ -393,74 +401,11 @@ + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -558,17 +503,17 @@ - - - + + + @@ -597,9 +542,6 @@ - - - diff --git a/doxygen/html/functions.html b/doxygen/html/functions.html index 51fe74e..b85300f 100644 --- a/doxygen/html/functions.html +++ b/doxygen/html/functions.html @@ -99,8 +99,8 @@
Here is a list of all class members with links to the classes they belong to:

- a -

diff --git a/doxygen/html/functions_b.html b/doxygen/html/functions_b.html index c932944..e5c309c 100644 --- a/doxygen/html/functions_b.html +++ b/doxygen/html/functions_b.html @@ -99,8 +99,8 @@
Here is a list of all class members with links to the classes they belong to:

- b -

diff --git a/doxygen/html/functions_c.html b/doxygen/html/functions_c.html index fd4eea8..bdc362d 100644 --- a/doxygen/html/functions_c.html +++ b/doxygen/html/functions_c.html @@ -99,10 +99,10 @@
Here is a list of all class members with links to the classes they belong to:

- c -

diff --git a/doxygen/html/functions_d.html b/doxygen/html/functions_d.html index c8a9c6a..ba54604 100644 --- a/doxygen/html/functions_d.html +++ b/doxygen/html/functions_d.html @@ -108,13 +108,10 @@

- d -

diff --git a/doxygen/html/functions_e.html b/doxygen/html/functions_e.html index f6ce2a9..8fca95e 100644 --- a/doxygen/html/functions_e.html +++ b/doxygen/html/functions_e.html @@ -99,7 +99,7 @@
Here is a list of all class members with links to the classes they belong to:

- e -

diff --git a/doxygen/html/functions_func.html b/doxygen/html/functions_func.html index 523d500..409bd27 100644 --- a/doxygen/html/functions_func.html +++ b/doxygen/html/functions_func.html @@ -99,8 +99,8 @@
Here is a list of all functions with links to the classes they belong to:

- a -

diff --git a/doxygen/html/functions_func_b.html b/doxygen/html/functions_func_b.html index 32629ff..d3dc999 100644 --- a/doxygen/html/functions_func_b.html +++ b/doxygen/html/functions_func_b.html @@ -99,7 +99,7 @@
Here is a list of all functions with links to the classes they belong to:

- b -

diff --git a/doxygen/html/functions_func_c.html b/doxygen/html/functions_func_c.html index 5f34bd5..0b8935e 100644 --- a/doxygen/html/functions_func_c.html +++ b/doxygen/html/functions_func_c.html @@ -99,8 +99,8 @@
Here is a list of all functions with links to the classes they belong to:

- c -

diff --git a/doxygen/html/functions_func_d.html b/doxygen/html/functions_func_d.html index b45031a..27d6d79 100644 --- a/doxygen/html/functions_func_d.html +++ b/doxygen/html/functions_func_d.html @@ -108,13 +108,10 @@

- d -

diff --git a/doxygen/html/functions_func_e.html b/doxygen/html/functions_func_e.html index 1cda501..5b00df6 100644 --- a/doxygen/html/functions_func_e.html +++ b/doxygen/html/functions_func_e.html @@ -99,7 +99,7 @@
Here is a list of all functions with links to the classes they belong to:

- e -

diff --git a/doxygen/html/functions_func_g.html b/doxygen/html/functions_func_g.html index e37ff2b..4265faf 100644 --- a/doxygen/html/functions_func_g.html +++ b/doxygen/html/functions_func_g.html @@ -103,10 +103,10 @@

- g -

diff --git a/doxygen/html/functions_func_i.html b/doxygen/html/functions_func_i.html index 730fabd..bd3cd18 100644 --- a/doxygen/html/functions_func_i.html +++ b/doxygen/html/functions_func_i.html @@ -99,7 +99,7 @@
Here is a list of all functions with links to the classes they belong to:

- i -

diff --git a/doxygen/html/functions_func_o.html b/doxygen/html/functions_func_o.html index d804953..2b1292f 100644 --- a/doxygen/html/functions_func_o.html +++ b/doxygen/html/functions_func_o.html @@ -99,13 +99,13 @@
Here is a list of all functions with links to the classes they belong to:

- o -

diff --git a/doxygen/html/functions_func_s.html b/doxygen/html/functions_func_s.html index 3f7c8ec..65106f2 100644 --- a/doxygen/html/functions_func_s.html +++ b/doxygen/html/functions_func_s.html @@ -101,7 +101,7 @@

- s -

- + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + - - - - - - + + + + + +
 CDelegateLib::DelegateFunction< RetType(Args...)>DelegateFunction<> class synchronously invokes a std::function target function
 CDelegateLib::DelegateFunctionAsync< RetType(Args...)>DelegateFunctionAsync<> class asynchronously invokes a std::function target function
 CDelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>DelegateFunctionAsyncWait<> class asynchronously block invokes a std::function target function
 CDelegateLib::DelegateMember< TClass, RetType(Args...)>DelegateMember<> class synchronously invokes a class member target function using a class object pointer
 CDelegateLib::DelegateMember< TClass, RetType(Args...)>DelegateMember<> class synchronously invokes a class member target function using a class object pointer or shared pointer
 CDelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>DelegateMemberAsync<> class asynchronously invokes a class member target function
 CDelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>DelegateMemberAsyncWait<> class asynchronously block invokes a class member target function
 CDelegateLib::DelegateMemberSp< TClass, RetType(Args...)>DelegateMemberSp<> class synchronously invokes a class member target function using a std::shared_ptr object
 CDelegateLib::DelegateMemberSpAsync< TClass, RetType(Args...)>DelegateMemberSpAsync<> class asynchronously invokes a std::shared_ptr target function
 CDelegateLib::DelegateMemberSpAsyncWait< TClass, RetType(Args...)>DelegateMemberSpAsyncWait<> class asynchronously block invokes a std::shared_ptr target function
 CDelegateLib::DelegateFree< R >
 CDelegateLib::DelegateFreeAsync< R >
 CDelegateLib::DelegateFreeAsyncWait< R >
 CDelegateLib::DelegateFunction< R >
 CDelegateLib::DelegateFunctionAsync< R >
 CDelegateLib::DelegateFunctionAsyncWait< R >
 CDelegateLib::DelegateMember< C, R >
 CDelegateLib::DelegateMemberAsync< C, R >
 CDelegateLib::DelegateMemberAsyncWait< C, R >
 CDelegateLib::DelegateMemberSp< C, R >
 CDelegateLib::DelegateMemberSpAsync< C, R >
 CDelegateLib::DelegateMemberSpAsyncWait< C, R >
 CDelegateLib::DelegateMsgBase class for all delegate inter-thread messages
 CDelegateLib::DelegateAsyncMsg< Args >Stores all function arguments suitable for non-blocking asynchronous calls. Argument data is stored in the heap
 CDelegateLib::DelegateAsyncWaitMsg< Args >Stores all function arguments suitable for blocking asynchronous calls. Argument data is not stored in the heap
 CDelegateLib::DelegateThread
 Cstd::false_type
 CDelegateLib::is_shared_ptr< T >
 CDelegateLib::heap_arg_deleter_baseBase class for all deleter's
 CDelegateLib::heap_arg_deleter< T >Frees heap memory for reference heap argument
 CDelegateLib::heap_arg_deleter< T * >Frees heap memory for pointer heap argument
 CDelegateLib::heap_arg_deleter< T ** >Frees heap memory for pointer to pointer heap argument
 CDelegateLib::IDelegateInvokerAbstract base class to support asynchronous delegate function invoke on destination thread of control
 CDelegateLib::DelegateFreeAsync< RetType(Args...)>DelegateFreeAsync<> class asynchronously invokes a free target function
 CDelegateLib::DelegateFunctionAsync< RetType(Args...)>DelegateFunctionAsync<> class asynchronously invokes a std::function target function
 CDelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>DelegateMemberAsync<> class asynchronously invokes a class member target function
 CDelegateLib::DelegateMemberSpAsync< TClass, RetType(Args...)>DelegateMemberSpAsync<> class asynchronously invokes a std::shared_ptr target function
 CDelegateLib::MulticastDelegate< R >
 CDelegateLib::MulticastDelegate< RetType(Args...)>Not thread-safe multicast delegate container class. The class has a list of Delegate<> instances. When invoked, each Delegate instance within the invocation list is called.
+
 CDelegateLib::DelegateFree< R >
 CDelegateLib::DelegateFreeAsync< R >
 CDelegateLib::DelegateFreeAsyncWait< R >
 CDelegateLib::DelegateFunction< R >
 CDelegateLib::DelegateFunctionAsync< R >
 CDelegateLib::DelegateFunctionAsyncWait< R >
 CDelegateLib::DelegateMember< C, R >
 CDelegateLib::DelegateMemberAsync< C, R >
 CDelegateLib::DelegateMemberAsyncWait< C, R >
 CDelegateLib::DelegateMsgBase class for all delegate inter-thread messages
 CDelegateLib::DelegateAsyncMsg< Args >Stores all function arguments suitable for non-blocking asynchronous calls. Argument data is stored in the heap
 CDelegateLib::DelegateAsyncWaitMsg< Args >Stores all function arguments suitable for blocking asynchronous calls. Argument data is not stored in the heap
 CDelegateLib::DelegateThread
 Cstd::false_type
 CDelegateLib::is_shared_ptr< T >
 CDelegateLib::heap_arg_deleter_baseBase class for all deleter's
 CDelegateLib::heap_arg_deleter< T >Frees heap memory for reference heap argument
 CDelegateLib::heap_arg_deleter< T * >Frees heap memory for pointer heap argument
 CDelegateLib::heap_arg_deleter< T ** >Frees heap memory for pointer to pointer heap argument
 CDelegateLib::IDelegateInvokerAbstract base class to support asynchronous delegate function invoke on destination thread of control
 CDelegateLib::DelegateFreeAsync< RetType(Args...)>DelegateFreeAsync<> class asynchronously invokes a free target function
 CDelegateLib::DelegateFunctionAsync< RetType(Args...)>DelegateFunctionAsync<> class asynchronously invokes a std::function target function
 CDelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>DelegateMemberAsync<> class asynchronously invokes a class member target function
 CDelegateLib::MulticastDelegate< R >
 CDelegateLib::MulticastDelegate< RetType(Args...)>Not thread-safe multicast delegate container class. The class has a list of Delegate<> instances. When invoked, each Delegate instance within the invocation list is called.
 CDelegateLib::MulticastDelegateSafe< RetType(Args...)>Thread-safe multicast delegate container class
 CDelegateLib::MulticastDelegateSafe< R >
 CDelegateLib::SemaphoreA semaphore wrapper class
 CDelegateLib::SinglecastDelegate< R >
 CDelegateLib::SinglecastDelegate< RetType(Args...)>A non-thread safe delegate container storing one delegate. Void and
+
 CDelegateLib::MulticastDelegateSafe< RetType(Args...)>Thread-safe multicast delegate container class
 CDelegateLib::MulticastDelegateSafe< R >
 CDelegateLib::SemaphoreA semaphore wrapper class
 CDelegateLib::SinglecastDelegate< R >
 CDelegateLib::SinglecastDelegate< RetType(Args...)>A non-thread safe delegate container storing one delegate. Void and
non-void return values supported.
 Cstd::true_type
 CDelegateLib::is_shared_ptr< const std::shared_ptr< T > & >
 CDelegateLib::is_shared_ptr< const std::shared_ptr< T > * >
 CDelegateLib::is_shared_ptr< std::shared_ptr< T > & >
 CDelegateLib::is_shared_ptr< std::shared_ptr< T > * >
 CDelegateLib::is_shared_ptr< std::shared_ptr< T > >
 Cstd::true_type
 CDelegateLib::is_shared_ptr< const std::shared_ptr< T > & >
 CDelegateLib::is_shared_ptr< const std::shared_ptr< T > * >
 CDelegateLib::is_shared_ptr< std::shared_ptr< T > & >
 CDelegateLib::is_shared_ptr< std::shared_ptr< T > * >
 CDelegateLib::is_shared_ptr< std::shared_ptr< T > >

diff --git a/doxygen/html/hierarchy.js b/doxygen/html/hierarchy.js index ff7f023..e492c08 100644 --- a/doxygen/html/hierarchy.js +++ b/doxygen/html/hierarchy.js @@ -17,11 +17,6 @@ var hierarchy = [ "DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>", "class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html", [ [ "DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>", "class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html", null ] ] ] - ] ], - [ "DelegateLib::DelegateMemberSp< TClass, RetType(Args...)>", "class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html", [ - [ "DelegateLib::DelegateMemberSpAsync< TClass, RetType(Args...)>", "class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html", [ - [ "DelegateLib::DelegateMemberSpAsyncWait< TClass, RetType(Args...)>", "class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html", null ] - ] ] ] ] ] ] ] ], @@ -34,9 +29,6 @@ var hierarchy = [ "DelegateLib::DelegateMember< C, R >", "struct_delegate_lib_1_1_delegate_member.html", null ], [ "DelegateLib::DelegateMemberAsync< C, R >", "struct_delegate_lib_1_1_delegate_member_async.html", null ], [ "DelegateLib::DelegateMemberAsyncWait< C, R >", "struct_delegate_lib_1_1_delegate_member_async_wait.html", null ], - [ "DelegateLib::DelegateMemberSp< C, R >", "struct_delegate_lib_1_1_delegate_member_sp.html", null ], - [ "DelegateLib::DelegateMemberSpAsync< C, R >", "struct_delegate_lib_1_1_delegate_member_sp_async.html", null ], - [ "DelegateLib::DelegateMemberSpAsyncWait< C, R >", "struct_delegate_lib_1_1_delegate_member_sp_async_wait.html", null ], [ "DelegateLib::DelegateMsg", "class_delegate_lib_1_1_delegate_msg.html", [ [ "DelegateLib::DelegateAsyncMsg< Args >", "class_delegate_lib_1_1_delegate_async_msg.html", null ], [ "DelegateLib::DelegateAsyncWaitMsg< Args >", "class_delegate_lib_1_1_delegate_async_wait_msg.html", null ] @@ -53,8 +45,7 @@ var hierarchy = [ "DelegateLib::IDelegateInvoker", "class_delegate_lib_1_1_i_delegate_invoker.html", [ [ "DelegateLib::DelegateFreeAsync< RetType(Args...)>", "class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html", null ], [ "DelegateLib::DelegateFunctionAsync< RetType(Args...)>", "class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html", null ], - [ "DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>", "class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html", null ], - [ "DelegateLib::DelegateMemberSpAsync< TClass, RetType(Args...)>", "class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html", null ] + [ "DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>", "class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html", null ] ] ], [ "DelegateLib::MulticastDelegate< R >", "struct_delegate_lib_1_1_multicast_delegate.html", null ], [ "DelegateLib::MulticastDelegate< RetType(Args...)>", "class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html", [ diff --git a/doxygen/html/menudata.js b/doxygen/html/menudata.js index c9e946b..a8360df 100644 --- a/doxygen/html/menudata.js +++ b/doxygen/html/menudata.js @@ -69,7 +69,8 @@ var menudata={children:[ {text:"c",url:"functions_type.html#index_c"}, {text:"f",url:"functions_type.html#index_f"}, {text:"m",url:"functions_type.html#index_m"}, -{text:"o",url:"functions_type.html#index_o"}]}]}]}, +{text:"o",url:"functions_type.html#index_o"}, +{text:"s",url:"functions_type.html#index_s"}]}]}]}, {text:"Files",url:"files.html",children:[ {text:"File List",url:"files.html"}, {text:"File Members",url:"globals.html",children:[ diff --git a/doxygen/html/namespace_delegate_lib.html b/doxygen/html/namespace_delegate_lib.html index f2c47d1..e089046 100644 --- a/doxygen/html/namespace_delegate_lib.html +++ b/doxygen/html/namespace_delegate_lib.html @@ -153,7 +153,7 @@ struct  DelegateMember   class  DelegateMember< TClass, RetType(Args...)>DelegateMember<> class synchronously invokes a class member target function using a class object pointer. More...
DelegateMember<> class synchronously invokes a class member target function using a class object pointer or shared pointer. More...
  struct  DelegateMemberAsync   @@ -165,21 +165,6 @@ class  DelegateMemberAsyncWait< TClass, RetType(Args...)>  DelegateMemberAsyncWait<> class asynchronously block invokes a class member target function. More...
  -struct  DelegateMemberSp -  -class  DelegateMemberSp< TClass, RetType(Args...)>DelegateMemberSp<> class synchronously invokes a class member target function using a std::shared_ptr object. More...
-  -struct  DelegateMemberSpAsync -  -class  DelegateMemberSpAsync< TClass, RetType(Args...)>DelegateMemberSpAsync<> class asynchronously invokes a std::shared_ptr target function. More...
-  -struct  DelegateMemberSpAsyncWait -  -class  DelegateMemberSpAsyncWait< TClass, RetType(Args...)>DelegateMemberSpAsyncWait<> class asynchronously block invokes a std::shared_ptr target function. More...
-  class  DelegateMsg  Base class for all delegate inter-thread messages. More...
  @@ -244,10 +229,10 @@ DelegateMember< TClass, RetType(Args...)> MakeDelegate (TClass *object, RetType(TClass::*func)(Args... args))  Creates a delegate that binds to a non-const member function.
  -template<class TClass , class RetType , class... Args> -DelegateMemberSp< TClass, RetType(Args...)> MakeDelegate (std::shared_ptr< TClass > object, RetType(TClass::*func)(Args... args)) - Creates a delegate that binds to a non-const member function with a shared pointer to the object.
-  +template<class TClass , class RetType , class... Args> +DelegateMember< TClass, RetType(Args...)> MakeDelegate (std::shared_ptr< TClass > object, RetType(TClass::*func)(Args... args)) + Creates a delegate that binds to a non-const member function with a shared pointer to the object.
+  template<class RetType , class... Args> DelegateFunction< RetType(Args...)> MakeDelegate (std::function< RetType(Args...)> func)  Creates a delegate that binds to a std::function.
@@ -260,10 +245,10 @@ DelegateMemberAsync< TClass, RetType(Args...)> MakeDelegate (TClass *object, RetType(TClass::*func)(Args... args), DelegateThread &thread)  Creates an asynchronous delegate that binds to a non-const member function.
  -template<class TClass , class RetVal , class... Args> -DelegateMemberSpAsync< TClass, RetVal(Args...)> MakeDelegate (std::shared_ptr< TClass > object, RetVal(TClass::*func)(Args... args), DelegateThread &thread) - Creates an asynchronous delegate that binds to a non-const member function using a shared pointer.
-  +template<class TClass , class RetVal , class... Args> +DelegateMemberAsync< TClass, RetVal(Args...)> MakeDelegate (std::shared_ptr< TClass > object, RetVal(TClass::*func)(Args... args), DelegateThread &thread) + Creates an asynchronous delegate that binds to a non-const member function using a shared pointer.
+  template<class RetType , class... Args> DelegateFunctionAsync< RetType(Args...)> MakeDelegate (std::function< RetType(Args...)> func, DelegateThread &thread)  Creates an asynchronous delegate that binds to a std::function.
@@ -276,10 +261,10 @@ DelegateMemberAsyncWait< TClass, RetType(Args...)> MakeDelegate (TClass *object, RetType(TClass::*func)(Args... args), DelegateThread &thread, std::chrono::milliseconds timeout)  Creates an asynchronous delegate that binds to a non-const member function with a wait and timeout.
  -template<class TClass , class RetVal , class... Args> -DelegateMemberSpAsyncWait< TClass, RetVal(Args...)> MakeDelegate (std::shared_ptr< TClass > object, RetVal(TClass::*func)(Args... args), DelegateThread &thread, std::chrono::milliseconds timeout) - Creates an asynchronous delegate that binds to a non-const member function using a shared pointer, with a wait and timeout.
-  +template<class TClass , class RetVal , class... Args> +DelegateMemberAsyncWait< TClass, RetVal(Args...)> MakeDelegate (std::shared_ptr< TClass > object, RetVal(TClass::*func)(Args... args), DelegateThread &thread, std::chrono::milliseconds timeout) + Creates an asynchronous delegate that binds to a non-const member function using a shared pointer, with a wait and timeout.
+  template<class RetType , class... Args> DelegateFunctionAsyncWait< RetType(Args...)> MakeDelegate (std::function< RetType(Args...)> func, DelegateThread &thread, std::chrono::milliseconds timeout)  Creates an asynchronous delegate that binds to a std::function with a wait and timeout.
@@ -645,8 +630,8 @@

-

◆ MakeDelegate() [7/12]

+ +

◆ MakeDelegate() [7/12]

@@ -654,7 +639,7 @@

- DelegateMemberSp< TClass, RetType(Args...)> DelegateLib::MakeDelegate + DelegateMember< TClass, RetType(Args...)> DelegateLib::MakeDelegate ( std::shared_ptr< TClass > object, @@ -683,7 +668,7 @@

Returns
A DelegateMemberSp object bound to the specified non-const member function.
+
Returns
A DelegateMember shared pointer bound to the specified non-const member function.
Template Parameters
@@ -699,12 +684,12 @@

Returns
A DelegateMemberSp object bound to the specified const member function.
+
Returns
A DelegateMember shared pointer bound to the specified const member function.
- -

◆ MakeDelegate() [8/12]

+ +

◆ MakeDelegate() [8/12]

@@ -712,7 +697,7 @@

- + @@ -747,7 +732,7 @@

Returns
A DelegateMemberSpAsync object bound to the specified non-const member function and thread.
+
Returns
A DelegateMemberAsync shared pointer bound to the specified non-const member function and thread.
Template Parameters

TClassThe class type that contains the member function.
DelegateMemberSpAsync< TClass, RetVal(Args...)> DelegateLib::MakeDelegate DelegateMemberAsync< TClass, RetVal(Args...)> DelegateLib::MakeDelegate ( std::shared_ptr< TClass > object,
@@ -764,12 +749,12 @@

Returns
A DelegateMemberSpAsync object bound to the specified const member function and thread.
+
Returns
A DelegateMemberAsync shared pointer bound to the specified const member function and thread.
- -

◆ MakeDelegate() [9/12]

+ +

◆ MakeDelegate() [9/12]

@@ -777,7 +762,7 @@

- + @@ -818,7 +803,7 @@

Returns
A DelegateMemberSpAsyncWait object bound to the specified non-const member function, thread, and timeout.
+
Returns
A DelegateMemberAsyncWait shared pointer bound to the specified non-const member function, thread, and timeout.
Template Parameters

TClassThe class type that contains the member function.
DelegateMemberSpAsyncWait< TClass, RetVal(Args...)> DelegateLib::MakeDelegate DelegateMemberAsyncWait< TClass, RetVal(Args...)> DelegateLib::MakeDelegate ( std::shared_ptr< TClass > object,
@@ -836,7 +821,7 @@

Returns
A DelegateMemberSpAsyncWait object bound to the specified const member function, thread, and timeout.
+
Returns
A DelegateMemberAsyncWait shared pointer bound to the specified const member function, thread, and timeout.
diff --git a/doxygen/html/namespace_delegate_lib.js b/doxygen/html/namespace_delegate_lib.js index 92f4996..32d9fca 100644 --- a/doxygen/html/namespace_delegate_lib.js +++ b/doxygen/html/namespace_delegate_lib.js @@ -23,12 +23,6 @@ var namespace_delegate_lib = [ "DelegateMemberAsync< TClass, RetType(Args...)>", "class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html", "class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4" ], [ "DelegateMemberAsyncWait", "struct_delegate_lib_1_1_delegate_member_async_wait.html", null ], [ "DelegateMemberAsyncWait< TClass, RetType(Args...)>", "class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html", "class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4" ], - [ "DelegateMemberSp", "struct_delegate_lib_1_1_delegate_member_sp.html", null ], - [ "DelegateMemberSp< TClass, RetType(Args...)>", "class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html", "class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4" ], - [ "DelegateMemberSpAsync", "struct_delegate_lib_1_1_delegate_member_sp_async.html", null ], - [ "DelegateMemberSpAsync< TClass, RetType(Args...)>", "class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html", "class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4" ], - [ "DelegateMemberSpAsyncWait", "struct_delegate_lib_1_1_delegate_member_sp_async_wait.html", null ], - [ "DelegateMemberSpAsyncWait< TClass, RetType(Args...)>", "class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html", "class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4" ], [ "DelegateMsg", "class_delegate_lib_1_1_delegate_msg.html", "class_delegate_lib_1_1_delegate_msg" ], [ "DelegateThread", "class_delegate_lib_1_1_delegate_thread.html", "class_delegate_lib_1_1_delegate_thread" ], [ "heap_arg_deleter", "class_delegate_lib_1_1heap__arg__deleter.html", "class_delegate_lib_1_1heap__arg__deleter" ], @@ -57,9 +51,9 @@ var namespace_delegate_lib = [ "MakeDelegate", "namespace_delegate_lib.html#a7616e4b38fca0742748de407497d12c6", null ], [ "MakeDelegate", "namespace_delegate_lib.html#a8f614eab3c1d9527a3b3c1b006b4d6ee", null ], [ "MakeDelegate", "namespace_delegate_lib.html#a684f519f3b774007ab1d8b81e32fc647", null ], - [ "MakeDelegate", "namespace_delegate_lib.html#a23f0516caa72547787911fd0f0fc9c1b", null ], - [ "MakeDelegate", "namespace_delegate_lib.html#a12cd186bad0206967705aa560e8e21a6", null ], - [ "MakeDelegate", "namespace_delegate_lib.html#a18a52212b54b5a8994f32fae6d19ec4f", null ], + [ "MakeDelegate", "namespace_delegate_lib.html#a739d90362b129b98ba2c5a626d655c6a", null ], + [ "MakeDelegate", "namespace_delegate_lib.html#a5cc5695faac26dd65571b4ee1121b06c", null ], + [ "MakeDelegate", "namespace_delegate_lib.html#a2ec853f3e1fa47faba54b04fb3c5232d", null ], [ "MakeDelegate", "namespace_delegate_lib.html#a388d9eb1fda04113138b8be61dc94650", null ], [ "MakeDelegate", "namespace_delegate_lib.html#ad93c07a649cc918a05b19e8b351add0d", null ], [ "MakeDelegate", "namespace_delegate_lib.html#a5db76998112ee428868ac9edfc89b4aa", null ], diff --git a/doxygen/html/navtreedata.js b/doxygen/html/navtreedata.js index 8c13079..e0aa54c 100644 --- a/doxygen/html/navtreedata.js +++ b/doxygen/html/navtreedata.js @@ -58,9 +58,8 @@ var NAVTREE = var NAVTREEINDEX = [ "_delegate_8h.html", -"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a56758d6e931fbff1cfc3ea97151fd6b5", -"class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a6563fdeb2a74bdfc8fd7aabe3dd38a43", -"src__dup_8py.html#a15dd702d0fd7d58585504fa19b49623d" +"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a4e95505c52ba0355839a32e2cacc3480", +"class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a8273659a7d2a5febd0e1e3ce8c7fe6b7" ]; var SYNCONMSG = 'click to disable panel synchronisation'; diff --git a/doxygen/html/navtreeindex0.js b/doxygen/html/navtreeindex0.js index 4721a43..d3ba5bc 100644 --- a/doxygen/html/navtreeindex0.js +++ b/doxygen/html/navtreeindex0.js @@ -1,23 +1,23 @@ var NAVTREEINDEX0 = { "_delegate_8h.html":[3,0,0,0,0], -"_delegate_8h.html#a23f0516caa72547787911fd0f0fc9c1b":[3,0,0,0,0,8], -"_delegate_8h.html#a388d9eb1fda04113138b8be61dc94650":[3,0,0,0,0,9], -"_delegate_8h.html#a75ff1e13f1cb691402002bfccaf9d1b2":[3,0,0,0,0,6], -"_delegate_8h.html#a7616e4b38fca0742748de407497d12c6":[3,0,0,0,0,7], +"_delegate_8h.html#a388d9eb1fda04113138b8be61dc94650":[3,0,0,0,0,8], +"_delegate_8h.html#a739d90362b129b98ba2c5a626d655c6a":[3,0,0,0,0,7], +"_delegate_8h.html#a75ff1e13f1cb691402002bfccaf9d1b2":[3,0,0,0,0,5], +"_delegate_8h.html#a7616e4b38fca0742748de407497d12c6":[3,0,0,0,0,6], "_delegate_8h_source.html":[3,0,0,0,0], "_delegate_async_8h.html":[3,0,0,0,1], -"_delegate_async_8h.html#a12cd186bad0206967705aa560e8e21a6":[3,0,0,0,1,7], -"_delegate_async_8h.html#a577444f047f613a4869e76fad9064f05":[3,0,0,0,1,5], -"_delegate_async_8h.html#a8f614eab3c1d9527a3b3c1b006b4d6ee":[3,0,0,0,1,6], -"_delegate_async_8h.html#ad93c07a649cc918a05b19e8b351add0d":[3,0,0,0,1,8], +"_delegate_async_8h.html#a577444f047f613a4869e76fad9064f05":[3,0,0,0,1,4], +"_delegate_async_8h.html#a5cc5695faac26dd65571b4ee1121b06c":[3,0,0,0,1,6], +"_delegate_async_8h.html#a8f614eab3c1d9527a3b3c1b006b4d6ee":[3,0,0,0,1,5], +"_delegate_async_8h.html#ad93c07a649cc918a05b19e8b351add0d":[3,0,0,0,1,7], "_delegate_async_8h_source.html":[3,0,0,0,1], "_delegate_async_wait_8h.html":[3,0,0,0,2], -"_delegate_async_wait_8h.html#a18a52212b54b5a8994f32fae6d19ec4f":[3,0,0,0,2,7], -"_delegate_async_wait_8h.html#a2fe15d9d206f30899ed86ed0a117217b":[3,0,0,0,2,5], -"_delegate_async_wait_8h.html#a5db76998112ee428868ac9edfc89b4aa":[3,0,0,0,2,8], -"_delegate_async_wait_8h.html#a684f519f3b774007ab1d8b81e32fc647":[3,0,0,0,2,6], -"_delegate_async_wait_8h.html#aa0e7491d38d4053d6218bf874d56e868":[3,0,0,0,2,9], +"_delegate_async_wait_8h.html#a2ec853f3e1fa47faba54b04fb3c5232d":[3,0,0,0,2,6], +"_delegate_async_wait_8h.html#a2fe15d9d206f30899ed86ed0a117217b":[3,0,0,0,2,4], +"_delegate_async_wait_8h.html#a5db76998112ee428868ac9edfc89b4aa":[3,0,0,0,2,7], +"_delegate_async_wait_8h.html#a684f519f3b774007ab1d8b81e32fc647":[3,0,0,0,2,5], +"_delegate_async_wait_8h.html#aa0e7491d38d4053d6218bf874d56e868":[3,0,0,0,2,8], "_delegate_async_wait_8h_source.html":[3,0,0,0,2], "_delegate_invoker_8h.html":[3,0,0,0,3], "_delegate_invoker_8h_source.html":[3,0,0,0,3], @@ -120,8 +120,8 @@ var NAVTREEINDEX0 = "class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html":[2,0,0,8], "class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#a1539d9effc50d7af8624b05b3ec37139":[1,0,0,8,0], "class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#a1539d9effc50d7af8624b05b3ec37139":[2,0,0,8,0], -"class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#a18d39e4e8e3e6906fd9c07ada1ac5bc6":[1,0,0,8,11], -"class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#a18d39e4e8e3e6906fd9c07ada1ac5bc6":[2,0,0,8,11], +"class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#a24785156e3b7888a423a9d4a71573e40":[1,0,0,8,11], +"class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#a24785156e3b7888a423a9d4a71573e40":[2,0,0,8,11], "class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#a2f0ac18839223393d6c8a76beb971478":[1,0,0,8,8], "class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#a2f0ac18839223393d6c8a76beb971478":[2,0,0,8,8], "class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#a681a97f01b1b14b4149cd82e3269ddb4":[1,0,0,8,16], @@ -232,14 +232,16 @@ var NAVTREEINDEX0 = "class_delegate_lib_1_1_delegate_function_3_01_ret_type_07_args_8_8_8_08_4.html#aff35a45eb0c37f87d4a566c3fabd0850":[2,0,0,12,9], "class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html":[1,0,0,14], "class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html":[2,0,0,14], -"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a12be5d3ae814bea5de0df73d2807bedd":[1,0,0,14,9], -"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a12be5d3ae814bea5de0df73d2807bedd":[2,0,0,14,9], -"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a1e6153da03f3d607b1e18deb391c04a4":[1,0,0,14,13], -"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a1e6153da03f3d607b1e18deb391c04a4":[2,0,0,14,13], -"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a203dd774ded780851f79cac05c4c719b":[1,0,0,14,15], -"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a203dd774ded780851f79cac05c4c719b":[2,0,0,14,15], -"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a24d22901f60ab741597e253b7f02c174":[1,0,0,14,11], -"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a24d22901f60ab741597e253b7f02c174":[2,0,0,14,11], +"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a12be5d3ae814bea5de0df73d2807bedd":[1,0,0,14,10], +"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a12be5d3ae814bea5de0df73d2807bedd":[2,0,0,14,10], +"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a1e6153da03f3d607b1e18deb391c04a4":[1,0,0,14,14], +"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a1e6153da03f3d607b1e18deb391c04a4":[2,0,0,14,14], +"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a203dd774ded780851f79cac05c4c719b":[1,0,0,14,16], +"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a203dd774ded780851f79cac05c4c719b":[2,0,0,14,16], +"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a2091d50db4b3be6334c66dc8a5b8fddc":[1,0,0,14,11], +"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a2091d50db4b3be6334c66dc8a5b8fddc":[2,0,0,14,11], +"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a24d22901f60ab741597e253b7f02c174":[1,0,0,14,12], +"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a24d22901f60ab741597e253b7f02c174":[2,0,0,14,12], "class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a2a303bc469c86c9f50979caae34f2d51":[1,0,0,14,0], "class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a2a303bc469c86c9f50979caae34f2d51":[2,0,0,14,0], "class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a2fb983602c9e3fcecc54907f13b748ce":[1,0,0,14,4], @@ -247,7 +249,5 @@ var NAVTREEINDEX0 = "class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a4002625654c02248b5b37266bf63ef66":[1,0,0,14,2], "class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a4002625654c02248b5b37266bf63ef66":[2,0,0,14,2], "class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a46501e1a3392ed1d13e3f3cba8eb2df0":[1,0,0,14,3], -"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a46501e1a3392ed1d13e3f3cba8eb2df0":[2,0,0,14,3], -"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a4e95505c52ba0355839a32e2cacc3480":[1,0,0,14,1], -"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a4e95505c52ba0355839a32e2cacc3480":[2,0,0,14,1] +"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a46501e1a3392ed1d13e3f3cba8eb2df0":[2,0,0,14,3] }; diff --git a/doxygen/html/navtreeindex1.js b/doxygen/html/navtreeindex1.js index c88b74a..246266a 100644 --- a/doxygen/html/navtreeindex1.js +++ b/doxygen/html/navtreeindex1.js @@ -1,253 +1,253 @@ var NAVTREEINDEX1 = { -"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a56758d6e931fbff1cfc3ea97151fd6b5":[1,0,0,14,8], -"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a56758d6e931fbff1cfc3ea97151fd6b5":[2,0,0,14,8], -"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a56930924ffa7d6662874675263e89bc5":[1,0,0,14,10], -"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a56930924ffa7d6662874675263e89bc5":[2,0,0,14,10], -"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a5c0e0c2591b0b02feec73b501325fcb6":[1,0,0,14,7], -"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a5c0e0c2591b0b02feec73b501325fcb6":[2,0,0,14,7], -"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a642fc55c2dfa6f7eb29f016a7194af9a":[1,0,0,14,16], -"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a642fc55c2dfa6f7eb29f016a7194af9a":[2,0,0,14,16], -"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#ac677a19f9c6ed6f0d5be06e8b1733d37":[1,0,0,14,14], -"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#ac677a19f9c6ed6f0d5be06e8b1733d37":[2,0,0,14,14], -"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#acf44f40ff48ec3f1481b6dca4e08c352":[1,0,0,14,17], -"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#acf44f40ff48ec3f1481b6dca4e08c352":[2,0,0,14,17], -"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#ae32a58387b3b00e002763f3244310fab":[1,0,0,14,5], -"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#ae32a58387b3b00e002763f3244310fab":[2,0,0,14,5], -"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#ae51e00822c91e01e7041be385ac38c76":[1,0,0,14,6], -"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#ae51e00822c91e01e7041be385ac38c76":[2,0,0,14,6], -"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#aeafdaa26caccb52408afe591e5c54aca":[1,0,0,14,12], -"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#aeafdaa26caccb52408afe591e5c54aca":[2,0,0,14,12], +"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a4e95505c52ba0355839a32e2cacc3480":[1,0,0,14,1], +"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a4e95505c52ba0355839a32e2cacc3480":[2,0,0,14,1], +"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a56758d6e931fbff1cfc3ea97151fd6b5":[1,0,0,14,9], +"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a56758d6e931fbff1cfc3ea97151fd6b5":[2,0,0,14,9], +"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a5c0e0c2591b0b02feec73b501325fcb6":[1,0,0,14,8], +"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a5c0e0c2591b0b02feec73b501325fcb6":[2,0,0,14,8], +"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a642fc55c2dfa6f7eb29f016a7194af9a":[1,0,0,14,17], +"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a642fc55c2dfa6f7eb29f016a7194af9a":[2,0,0,14,17], +"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#ac677a19f9c6ed6f0d5be06e8b1733d37":[1,0,0,14,15], +"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#ac677a19f9c6ed6f0d5be06e8b1733d37":[2,0,0,14,15], +"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#acf44f40ff48ec3f1481b6dca4e08c352":[1,0,0,14,18], +"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#acf44f40ff48ec3f1481b6dca4e08c352":[2,0,0,14,18], +"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#adeef2c1b2f887384a21024779b298445":[1,0,0,14,5], +"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#adeef2c1b2f887384a21024779b298445":[2,0,0,14,5], +"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#ae32a58387b3b00e002763f3244310fab":[1,0,0,14,6], +"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#ae32a58387b3b00e002763f3244310fab":[2,0,0,14,6], +"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#ae51e00822c91e01e7041be385ac38c76":[1,0,0,14,7], +"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#ae51e00822c91e01e7041be385ac38c76":[2,0,0,14,7], +"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#aeafdaa26caccb52408afe591e5c54aca":[1,0,0,14,13], +"class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#aeafdaa26caccb52408afe591e5c54aca":[2,0,0,14,13], "class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html":[1,0,0,16], "class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html":[2,0,0,16], -"class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a06308fd077f75299814b78d042e52ac0":[1,0,0,16,9], -"class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a06308fd077f75299814b78d042e52ac0":[2,0,0,16,9], -"class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a06a1f3a07b3b85f30d1d149a8ce7694d":[1,0,0,16,6], -"class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a06a1f3a07b3b85f30d1d149a8ce7694d":[2,0,0,16,6], -"class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a0cc272f27fb57a62d2c762f74f032eb2":[1,0,0,16,16], -"class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a0cc272f27fb57a62d2c762f74f032eb2":[2,0,0,16,16], +"class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a06308fd077f75299814b78d042e52ac0":[1,0,0,16,10], +"class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a06308fd077f75299814b78d042e52ac0":[2,0,0,16,10], +"class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a06a1f3a07b3b85f30d1d149a8ce7694d":[1,0,0,16,7], +"class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a06a1f3a07b3b85f30d1d149a8ce7694d":[2,0,0,16,7], +"class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a0cc272f27fb57a62d2c762f74f032eb2":[1,0,0,16,17], +"class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a0cc272f27fb57a62d2c762f74f032eb2":[2,0,0,16,17], "class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a12fee611f64b1ff921f144456f735c34":[1,0,0,16,3], "class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a12fee611f64b1ff921f144456f735c34":[2,0,0,16,3], -"class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a19e32658a811a5b584436505c46d8cf7":[1,0,0,16,11], -"class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a19e32658a811a5b584436505c46d8cf7":[2,0,0,16,11], -"class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a1c4342829881ac285f0d839906c9f930":[1,0,0,16,7], -"class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a1c4342829881ac285f0d839906c9f930":[2,0,0,16,7], +"class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a19e32658a811a5b584436505c46d8cf7":[1,0,0,16,12], +"class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a19e32658a811a5b584436505c46d8cf7":[2,0,0,16,12], +"class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a1c4342829881ac285f0d839906c9f930":[1,0,0,16,8], +"class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a1c4342829881ac285f0d839906c9f930":[2,0,0,16,8], "class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a49ee2d06133beb8f1f97d9435dd233d8":[1,0,0,16,4], "class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a49ee2d06133beb8f1f97d9435dd233d8":[2,0,0,16,4], -"class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a56245374ac83ac8ae2cb5ea0de8907f8":[1,0,0,16,8], -"class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a56245374ac83ac8ae2cb5ea0de8907f8":[2,0,0,16,8], -"class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a5e9ae067e7bc5c3621a6ad80d39cd0bc":[1,0,0,16,12], -"class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a5e9ae067e7bc5c3621a6ad80d39cd0bc":[2,0,0,16,12], -"class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a6c3628f557fdff90db3bf3f7df4f28f1":[1,0,0,16,15], -"class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a6c3628f557fdff90db3bf3f7df4f28f1":[2,0,0,16,15], +"class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a56245374ac83ac8ae2cb5ea0de8907f8":[1,0,0,16,9], +"class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a56245374ac83ac8ae2cb5ea0de8907f8":[2,0,0,16,9], +"class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a5e9ae067e7bc5c3621a6ad80d39cd0bc":[1,0,0,16,13], +"class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a5e9ae067e7bc5c3621a6ad80d39cd0bc":[2,0,0,16,13], +"class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a61de38703ed39347662b0d523940751a":[1,0,0,16,5], +"class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a61de38703ed39347662b0d523940751a":[2,0,0,16,5], +"class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a6c3628f557fdff90db3bf3f7df4f28f1":[1,0,0,16,16], +"class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a6c3628f557fdff90db3bf3f7df4f28f1":[2,0,0,16,16], "class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a793983b42fc5819a186a891b9cac5806":[1,0,0,16,2], "class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a793983b42fc5819a186a891b9cac5806":[2,0,0,16,2], -"class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a8a0cfe8f1e6f7bc06c161a1f210c6aa7":[1,0,0,16,10], -"class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a8a0cfe8f1e6f7bc06c161a1f210c6aa7":[2,0,0,16,10], +"class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a8a0cfe8f1e6f7bc06c161a1f210c6aa7":[1,0,0,16,11], +"class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a8a0cfe8f1e6f7bc06c161a1f210c6aa7":[2,0,0,16,11], "class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a8aacf1bb9e50e7f05526aef37343e241":[1,0,0,16,0], "class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a8aacf1bb9e50e7f05526aef37343e241":[2,0,0,16,0], "class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#ab18be594adc125473e2967684953ac1c":[1,0,0,16,1], "class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#ab18be594adc125473e2967684953ac1c":[2,0,0,16,1], -"class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#abe10c60e4a83a5611e0b9bc9ed6e05e1":[1,0,0,16,13], -"class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#abe10c60e4a83a5611e0b9bc9ed6e05e1":[2,0,0,16,13], -"class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#aeb01775a1f4fbf735e16aca245fc08b8":[1,0,0,16,14], -"class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#aeb01775a1f4fbf735e16aca245fc08b8":[2,0,0,16,14], -"class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#afae9b073f590b47117d0ee00e100b7e2":[1,0,0,16,5], -"class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#afae9b073f590b47117d0ee00e100b7e2":[2,0,0,16,5], +"class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#abe10c60e4a83a5611e0b9bc9ed6e05e1":[1,0,0,16,14], +"class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#abe10c60e4a83a5611e0b9bc9ed6e05e1":[2,0,0,16,14], +"class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#aeb01775a1f4fbf735e16aca245fc08b8":[1,0,0,16,15], +"class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#aeb01775a1f4fbf735e16aca245fc08b8":[2,0,0,16,15], +"class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#afae9b073f590b47117d0ee00e100b7e2":[1,0,0,16,6], +"class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#afae9b073f590b47117d0ee00e100b7e2":[2,0,0,16,6], "class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html":[1,0,0,18], "class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html":[2,0,0,18], -"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a2a695e30c79885ec8394cd049301fe24":[1,0,0,18,11], -"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a2a695e30c79885ec8394cd049301fe24":[2,0,0,18,11], -"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a2dcf47b856e718a305b49107349e1d23":[1,0,0,18,10], -"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a2dcf47b856e718a305b49107349e1d23":[2,0,0,18,10], -"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a322dd315ac65ec9fc88616913cf222c3":[1,0,0,18,6], -"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a322dd315ac65ec9fc88616913cf222c3":[2,0,0,18,6], -"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a412150bb991a3941c45353e4d20303ec":[1,0,0,18,15], -"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a412150bb991a3941c45353e4d20303ec":[2,0,0,18,15], -"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a4ab91c91146c582b15ad0231b539323f":[1,0,0,18,8], -"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a4ab91c91146c582b15ad0231b539323f":[2,0,0,18,8], -"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a5fc8a23d96dfd6c0fda2d7e9d73966a5":[1,0,0,18,7], -"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a5fc8a23d96dfd6c0fda2d7e9d73966a5":[2,0,0,18,7], -"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a90f7904623f6945bd232747a207ef5a7":[1,0,0,18,19], -"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a90f7904623f6945bd232747a207ef5a7":[2,0,0,18,19], -"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a94073c6581ff7739523e7c8bfe57caa0":[1,0,0,18,12], -"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a94073c6581ff7739523e7c8bfe57caa0":[2,0,0,18,12], -"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aa34f567d476fb8cba1d28d7ec664e3e2":[1,0,0,18,14], -"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aa34f567d476fb8cba1d28d7ec664e3e2":[2,0,0,18,14], -"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aa837983f1f9c0a2f8b35fb0ea4704e5b":[1,0,0,18,9], -"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aa837983f1f9c0a2f8b35fb0ea4704e5b":[2,0,0,18,9], +"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a2a695e30c79885ec8394cd049301fe24":[1,0,0,18,14], +"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a2a695e30c79885ec8394cd049301fe24":[2,0,0,18,14], +"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a2dcf47b856e718a305b49107349e1d23":[1,0,0,18,13], +"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a2dcf47b856e718a305b49107349e1d23":[2,0,0,18,13], +"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a322dd315ac65ec9fc88616913cf222c3":[1,0,0,18,9], +"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a322dd315ac65ec9fc88616913cf222c3":[2,0,0,18,9], +"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a39bb526ecf387e3ce23603c0ddab26ea":[1,0,0,18,5], +"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a39bb526ecf387e3ce23603c0ddab26ea":[2,0,0,18,5], +"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a412150bb991a3941c45353e4d20303ec":[1,0,0,18,20], +"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a412150bb991a3941c45353e4d20303ec":[2,0,0,18,20], +"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a4ab91c91146c582b15ad0231b539323f":[1,0,0,18,11], +"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a4ab91c91146c582b15ad0231b539323f":[2,0,0,18,11], +"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a5fc8a23d96dfd6c0fda2d7e9d73966a5":[1,0,0,18,10], +"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a5fc8a23d96dfd6c0fda2d7e9d73966a5":[2,0,0,18,10], +"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a6397270ea2b42e123a8ff20d7d5cf7a0":[1,0,0,18,15], +"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a6397270ea2b42e123a8ff20d7d5cf7a0":[2,0,0,18,15], +"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a6ea857874b53a0a99a2cfe20ad31e266":[1,0,0,18,6], +"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a6ea857874b53a0a99a2cfe20ad31e266":[2,0,0,18,6], +"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a845057cf22b42ddccfa44228e530529e":[1,0,0,18,4], +"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a845057cf22b42ddccfa44228e530529e":[2,0,0,18,4], +"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a90f7904623f6945bd232747a207ef5a7":[1,0,0,18,24], +"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a90f7904623f6945bd232747a207ef5a7":[2,0,0,18,24], +"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a94073c6581ff7739523e7c8bfe57caa0":[1,0,0,18,17], +"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a94073c6581ff7739523e7c8bfe57caa0":[2,0,0,18,17], +"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a9c24220b7f1ef4f21ba66c7c9ef5086b":[1,0,0,18,16], +"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a9c24220b7f1ef4f21ba66c7c9ef5086b":[2,0,0,18,16], +"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aa34f567d476fb8cba1d28d7ec664e3e2":[1,0,0,18,19], +"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aa34f567d476fb8cba1d28d7ec664e3e2":[2,0,0,18,19], +"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aa837983f1f9c0a2f8b35fb0ea4704e5b":[1,0,0,18,12], +"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aa837983f1f9c0a2f8b35fb0ea4704e5b":[2,0,0,18,12], "class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aa8e6bc2879f78d50ac63ac5cc730b755":[1,0,0,18,2], "class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aa8e6bc2879f78d50ac63ac5cc730b755":[2,0,0,18,2], "class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ab639313353b5269e652b72883adc5c61":[1,0,0,18,1], "class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ab639313353b5269e652b72883adc5c61":[2,0,0,18,1], -"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ab772a635e195f3553f9c43f344b262df":[1,0,0,18,5], -"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ab772a635e195f3553f9c43f344b262df":[2,0,0,18,5], -"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ac0ebe807ef2e92dab70422a6f97a461f":[1,0,0,18,4], -"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ac0ebe807ef2e92dab70422a6f97a461f":[2,0,0,18,4], -"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ac37f599bb6493c11c88a015c877b1530":[1,0,0,18,16], -"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ac37f599bb6493c11c88a015c877b1530":[2,0,0,18,16], +"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ab772a635e195f3553f9c43f344b262df":[1,0,0,18,8], +"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ab772a635e195f3553f9c43f344b262df":[2,0,0,18,8], +"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ac0ebe807ef2e92dab70422a6f97a461f":[1,0,0,18,7], +"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ac0ebe807ef2e92dab70422a6f97a461f":[2,0,0,18,7], +"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ac37f599bb6493c11c88a015c877b1530":[1,0,0,18,21], +"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ac37f599bb6493c11c88a015c877b1530":[2,0,0,18,21], "class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ac6d4fe0918756c689831ce0651da67e5":[1,0,0,18,0], "class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ac6d4fe0918756c689831ce0651da67e5":[2,0,0,18,0], -"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ad06b7ee91cc4f40440a2841a2fe2ec83":[1,0,0,18,18], -"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ad06b7ee91cc4f40440a2841a2fe2ec83":[2,0,0,18,18], -"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ae31b9598c8f3e72d2adcbd9c0a1269e1":[1,0,0,18,17], -"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ae31b9598c8f3e72d2adcbd9c0a1269e1":[2,0,0,18,17], +"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ad06b7ee91cc4f40440a2841a2fe2ec83":[1,0,0,18,23], +"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ad06b7ee91cc4f40440a2841a2fe2ec83":[2,0,0,18,23], +"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ae31b9598c8f3e72d2adcbd9c0a1269e1":[1,0,0,18,22], +"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ae31b9598c8f3e72d2adcbd9c0a1269e1":[2,0,0,18,22], "class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aeb119acb465b89f74f158f6e3d0c6c3d":[1,0,0,18,3], "class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aeb119acb465b89f74f158f6e3d0c6c3d":[2,0,0,18,3], -"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#af4eb4fba1da063063b5d4ba47de4299a":[1,0,0,18,13], -"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#af4eb4fba1da063063b5d4ba47de4299a":[2,0,0,18,13], +"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#af4eb4fba1da063063b5d4ba47de4299a":[1,0,0,18,18], +"class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#af4eb4fba1da063063b5d4ba47de4299a":[2,0,0,18,18], "class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html":[1,0,0,20], "class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html":[2,0,0,20], -"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a00787579ccdcf94fea924f2aa3b05cde":[1,0,0,20,11], -"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a00787579ccdcf94fea924f2aa3b05cde":[2,0,0,20,11], +"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a00787579ccdcf94fea924f2aa3b05cde":[1,0,0,20,15], +"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a00787579ccdcf94fea924f2aa3b05cde":[2,0,0,20,15], "class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a20a9019042525729f704966658bb17ce":[1,0,0,20,2], "class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a20a9019042525729f704966658bb17ce":[2,0,0,20,2], -"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a222976657b434d64f0c3a6d5dc4426c4":[1,0,0,20,7], -"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a222976657b434d64f0c3a6d5dc4426c4":[2,0,0,20,7], +"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a222976657b434d64f0c3a6d5dc4426c4":[1,0,0,20,10], +"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a222976657b434d64f0c3a6d5dc4426c4":[2,0,0,20,10], "class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a2de0939ea659fe15cc57ec93ec2d8d12":[1,0,0,20,0], "class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a2de0939ea659fe15cc57ec93ec2d8d12":[2,0,0,20,0], -"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a367221c5c3b36d7aae675cadaa2c27ba":[1,0,0,20,20], -"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a367221c5c3b36d7aae675cadaa2c27ba":[2,0,0,20,20], -"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a46343959b0ea03ef02f1ebe3f8182814":[1,0,0,20,19], -"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a46343959b0ea03ef02f1ebe3f8182814":[2,0,0,20,19], -"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a498aee49e9441a11f859ead02545b79c":[1,0,0,20,8], -"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a498aee49e9441a11f859ead02545b79c":[2,0,0,20,8], -"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a66a4e60715f3379696d120cbfd0d0010":[1,0,0,20,10], -"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a66a4e60715f3379696d120cbfd0d0010":[2,0,0,20,10], -"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a797d31931f53b5c43c75b712e2c4acc1":[1,0,0,20,6], -"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a797d31931f53b5c43c75b712e2c4acc1":[2,0,0,20,6], -"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a8fe4844542d5e2881cb85e7c5f8cc1c9":[1,0,0,20,5], -"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a8fe4844542d5e2881cb85e7c5f8cc1c9":[2,0,0,20,5], -"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a93e6a8587d6f62f39f9dcf6e0c016d9b":[1,0,0,20,21], -"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a93e6a8587d6f62f39f9dcf6e0c016d9b":[2,0,0,20,21], -"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a97ee00052f6de71e7910784dce3b0fa4":[1,0,0,20,14], -"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a97ee00052f6de71e7910784dce3b0fa4":[2,0,0,20,14], -"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a9cd118df91aa22e6c3d4885b1e39329c":[1,0,0,20,18], -"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a9cd118df91aa22e6c3d4885b1e39329c":[2,0,0,20,18], -"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aa73f04631d245b5bf76b6e3025a0b5e5":[1,0,0,20,17], -"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aa73f04631d245b5bf76b6e3025a0b5e5":[2,0,0,20,17], -"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aaa1df37c6b1b6f9549de0daa981fafcf":[1,0,0,20,12], -"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aaa1df37c6b1b6f9549de0daa981fafcf":[2,0,0,20,12], +"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a367221c5c3b36d7aae675cadaa2c27ba":[1,0,0,20,26], +"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a367221c5c3b36d7aae675cadaa2c27ba":[2,0,0,20,26], +"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a46343959b0ea03ef02f1ebe3f8182814":[1,0,0,20,25], +"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a46343959b0ea03ef02f1ebe3f8182814":[2,0,0,20,25], +"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a470bad2bda18c47a169b88a923d06fa6":[1,0,0,20,20], +"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a470bad2bda18c47a169b88a923d06fa6":[2,0,0,20,20], +"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a498aee49e9441a11f859ead02545b79c":[1,0,0,20,12], +"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a498aee49e9441a11f859ead02545b79c":[2,0,0,20,12], +"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a4f4eceeb29f6e3f4afe18baeccb43e82":[1,0,0,20,7], +"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a4f4eceeb29f6e3f4afe18baeccb43e82":[2,0,0,20,7], +"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a66a4e60715f3379696d120cbfd0d0010":[1,0,0,20,14], +"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a66a4e60715f3379696d120cbfd0d0010":[2,0,0,20,14], +"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a797d31931f53b5c43c75b712e2c4acc1":[1,0,0,20,9], +"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a797d31931f53b5c43c75b712e2c4acc1":[2,0,0,20,9], +"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a8fe4844542d5e2881cb85e7c5f8cc1c9":[1,0,0,20,8], +"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a8fe4844542d5e2881cb85e7c5f8cc1c9":[2,0,0,20,8], +"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a93e6a8587d6f62f39f9dcf6e0c016d9b":[1,0,0,20,27], +"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a93e6a8587d6f62f39f9dcf6e0c016d9b":[2,0,0,20,27], +"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a9cd118df91aa22e6c3d4885b1e39329c":[1,0,0,20,24], +"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a9cd118df91aa22e6c3d4885b1e39329c":[2,0,0,20,24], +"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aa73f04631d245b5bf76b6e3025a0b5e5":[1,0,0,20,23], +"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aa73f04631d245b5bf76b6e3025a0b5e5":[2,0,0,20,23], +"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aaa1df37c6b1b6f9549de0daa981fafcf":[1,0,0,20,16], +"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aaa1df37c6b1b6f9549de0daa981fafcf":[2,0,0,20,16], "class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aaf196667f048fb72dfd430bd12a9f8b1":[1,0,0,20,3], "class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aaf196667f048fb72dfd430bd12a9f8b1":[2,0,0,20,3], -"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#abe340362fa1daacc9e1d0b58428506e5":[1,0,0,20,9], -"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#abe340362fa1daacc9e1d0b58428506e5":[2,0,0,20,9], -"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aca30b381dee966dc0dab34e41080af4e":[1,0,0,20,16], -"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aca30b381dee966dc0dab34e41080af4e":[2,0,0,20,16], -"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#acbd04f7121278e2dae40311c4f303d9b":[1,0,0,20,13], -"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#acbd04f7121278e2dae40311c4f303d9b":[2,0,0,20,13], +"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ab269a84c9fb2b4d30d47e7cb5ca7bbc2":[1,0,0,20,5], +"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ab269a84c9fb2b4d30d47e7cb5ca7bbc2":[2,0,0,20,5], +"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#abe340362fa1daacc9e1d0b58428506e5":[1,0,0,20,13], +"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#abe340362fa1daacc9e1d0b58428506e5":[2,0,0,20,13], +"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aca30b381dee966dc0dab34e41080af4e":[1,0,0,20,22], +"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aca30b381dee966dc0dab34e41080af4e":[2,0,0,20,22], +"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#acbd04f7121278e2dae40311c4f303d9b":[1,0,0,20,19], +"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#acbd04f7121278e2dae40311c4f303d9b":[2,0,0,20,19], +"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#acc96893f7caf4881d2b3f647465745f4":[1,0,0,20,17], +"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#acc96893f7caf4881d2b3f647465745f4":[2,0,0,20,17], "class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#acfabf1d64175cf35c3ddc562d9921ac2":[1,0,0,20,4], "class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#acfabf1d64175cf35c3ddc562d9921ac2":[2,0,0,20,4], +"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ad28ce245f32ae9de24542789d8727005":[1,0,0,20,11], +"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ad28ce245f32ae9de24542789d8727005":[2,0,0,20,11], "class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ae8d8cb10996c1c2294a0169f9dbbed93":[1,0,0,20,1], "class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ae8d8cb10996c1c2294a0169f9dbbed93":[2,0,0,20,1], -"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aec8a8636e131eb2746311426dacb7490":[1,0,0,20,15], -"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aec8a8636e131eb2746311426dacb7490":[2,0,0,20,15], +"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aec8a8636e131eb2746311426dacb7490":[1,0,0,20,21], +"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aec8a8636e131eb2746311426dacb7490":[2,0,0,20,21], +"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#af10b109e87b2ba4599da6c84e65931c3":[1,0,0,20,18], +"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#af10b109e87b2ba4599da6c84e65931c3":[2,0,0,20,18], +"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#afff94fad479eda85f2c93d35187221c0":[1,0,0,20,6], +"class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#afff94fad479eda85f2c93d35187221c0":[2,0,0,20,6], "class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html":[1,0,0,22], "class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html":[2,0,0,22], -"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a0b1ea98a55b2871d5b21c3d85d811baf":[1,0,0,22,7], -"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a0b1ea98a55b2871d5b21c3d85d811baf":[2,0,0,22,7], -"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a1ead27747d4dc9a932bc7957de036a6c":[1,0,0,22,9], -"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a1ead27747d4dc9a932bc7957de036a6c":[2,0,0,22,9], -"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a20e9f7755ba4b19fb12988da5f8fe6f7":[1,0,0,22,14], -"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a20e9f7755ba4b19fb12988da5f8fe6f7":[2,0,0,22,14], -"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a24c3b8b9fd284963b56d32b2aeaf5bd1":[1,0,0,22,12], -"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a24c3b8b9fd284963b56d32b2aeaf5bd1":[2,0,0,22,12], -"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a2f80842f6fce3a49b26fd09d5f0ed283":[1,0,0,22,13], -"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a2f80842f6fce3a49b26fd09d5f0ed283":[2,0,0,22,13], -"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a3cb42151d01cc03b45f2248fc513d847":[1,0,0,22,17], -"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a3cb42151d01cc03b45f2248fc513d847":[2,0,0,22,17], -"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a3e831f0389d2ddfa37c5c6a24f145dd4":[1,0,0,22,6], -"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a3e831f0389d2ddfa37c5c6a24f145dd4":[2,0,0,22,6], -"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a4f336c0ec1773959bdc114685a493ac3":[1,0,0,22,15], -"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a4f336c0ec1773959bdc114685a493ac3":[2,0,0,22,15], +"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a0b1ea98a55b2871d5b21c3d85d811baf":[1,0,0,22,10], +"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a0b1ea98a55b2871d5b21c3d85d811baf":[2,0,0,22,10], +"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a1880c4ca2f5e3e182533fa68e6522f23":[1,0,0,22,5], +"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a1880c4ca2f5e3e182533fa68e6522f23":[2,0,0,22,5], +"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a1ead27747d4dc9a932bc7957de036a6c":[1,0,0,22,13], +"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a1ead27747d4dc9a932bc7957de036a6c":[2,0,0,22,13], +"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a20e9f7755ba4b19fb12988da5f8fe6f7":[1,0,0,22,20], +"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a20e9f7755ba4b19fb12988da5f8fe6f7":[2,0,0,22,20], +"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a24c3b8b9fd284963b56d32b2aeaf5bd1":[1,0,0,22,16], +"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a24c3b8b9fd284963b56d32b2aeaf5bd1":[2,0,0,22,16], +"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a2f80842f6fce3a49b26fd09d5f0ed283":[1,0,0,22,19], +"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a2f80842f6fce3a49b26fd09d5f0ed283":[2,0,0,22,19], +"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a3cb42151d01cc03b45f2248fc513d847":[1,0,0,22,23], +"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a3cb42151d01cc03b45f2248fc513d847":[2,0,0,22,23], +"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a3e831f0389d2ddfa37c5c6a24f145dd4":[1,0,0,22,9], +"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a3e831f0389d2ddfa37c5c6a24f145dd4":[2,0,0,22,9], +"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a48971ab5284449ef2402b65922187238":[1,0,0,22,18], +"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a48971ab5284449ef2402b65922187238":[2,0,0,22,18], +"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a4c6ecc8941ffa3e74bc21bebc94f8c6d":[1,0,0,22,11], +"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a4c6ecc8941ffa3e74bc21bebc94f8c6d":[2,0,0,22,11], +"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a4f336c0ec1773959bdc114685a493ac3":[1,0,0,22,21], +"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a4f336c0ec1773959bdc114685a493ac3":[2,0,0,22,21], "class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a4f8262576388c8627661815107ec1120":[1,0,0,22,3], "class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a4f8262576388c8627661815107ec1120":[2,0,0,22,3], -"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a6e96e0302225e7c2df7bd2daca5a6d26":[1,0,0,22,19], -"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a6e96e0302225e7c2df7bd2daca5a6d26":[2,0,0,22,19], -"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a8291fb2c29ace6e80959768d7e614e13":[1,0,0,22,10], -"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a8291fb2c29ace6e80959768d7e614e13":[2,0,0,22,10], -"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a93fccd873d370ab1c6ce08a8d731a85e":[1,0,0,22,8], -"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a93fccd873d370ab1c6ce08a8d731a85e":[2,0,0,22,8], -"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a9c9a5f01b71911ff87ce41da11d9bd76":[1,0,0,22,5], -"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a9c9a5f01b71911ff87ce41da11d9bd76":[2,0,0,22,5], +"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a6e96e0302225e7c2df7bd2daca5a6d26":[1,0,0,22,25], +"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a6e96e0302225e7c2df7bd2daca5a6d26":[2,0,0,22,25], +"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a8291fb2c29ace6e80959768d7e614e13":[1,0,0,22,14], +"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a8291fb2c29ace6e80959768d7e614e13":[2,0,0,22,14], +"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a93fccd873d370ab1c6ce08a8d731a85e":[1,0,0,22,12], +"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a93fccd873d370ab1c6ce08a8d731a85e":[2,0,0,22,12], +"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a9c9a5f01b71911ff87ce41da11d9bd76":[1,0,0,22,8], +"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a9c9a5f01b71911ff87ce41da11d9bd76":[2,0,0,22,8], "class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a9ff5f9090f4df372ec92efa8e452a3aa":[1,0,0,22,0], "class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a9ff5f9090f4df372ec92efa8e452a3aa":[2,0,0,22,0], "class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aaecfde6d367d64edd65e8e5c0fbe394a":[1,0,0,22,4], "class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aaecfde6d367d64edd65e8e5c0fbe394a":[2,0,0,22,4], "class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ab3d84f71ed07cd925656df197dc15f28":[1,0,0,22,1], "class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ab3d84f71ed07cd925656df197dc15f28":[2,0,0,22,1], -"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ab9b6a5c6f42ee235c731de9d6df23ece":[1,0,0,22,20], -"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ab9b6a5c6f42ee235c731de9d6df23ece":[2,0,0,22,20], -"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ad077b1a6778b6ece6558d425c44a8b5f":[1,0,0,22,18], -"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ad077b1a6778b6ece6558d425c44a8b5f":[2,0,0,22,18], +"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ab9b6a5c6f42ee235c731de9d6df23ece":[1,0,0,22,26], +"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ab9b6a5c6f42ee235c731de9d6df23ece":[2,0,0,22,26], +"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ad077b1a6778b6ece6558d425c44a8b5f":[1,0,0,22,24], +"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ad077b1a6778b6ece6558d425c44a8b5f":[2,0,0,22,24], "class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ad39ce01bd33617cb77b82ab93dc9284a":[1,0,0,22,2], "class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ad39ce01bd33617cb77b82ab93dc9284a":[2,0,0,22,2], -"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ae14cab8e15a5b33521f4a4e54a8fcdce":[1,0,0,22,16], -"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ae14cab8e15a5b33521f4a4e54a8fcdce":[2,0,0,22,16], -"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#af52d71df3cdb3d55a49e725b63a19d25":[1,0,0,22,11], -"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#af52d71df3cdb3d55a49e725b63a19d25":[2,0,0,22,11], -"class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html":[1,0,0,24], -"class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html":[2,0,0,24], -"class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a030851905e967595316455be555e2837":[1,0,0,24,8], -"class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a030851905e967595316455be555e2837":[2,0,0,24,8], -"class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a0464754344807471b4a4b96ac4622006":[1,0,0,24,15], -"class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a0464754344807471b4a4b96ac4622006":[2,0,0,24,15], -"class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a13b7d137db69a41e83da14c9b4f2fb06":[1,0,0,24,18], -"class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a13b7d137db69a41e83da14c9b4f2fb06":[2,0,0,24,18], -"class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a1441cf9d3f8294e73138f88ec0296749":[1,0,0,24,5], -"class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a1441cf9d3f8294e73138f88ec0296749":[2,0,0,24,5], -"class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a195d4972634b9dfc1a87590de1eedee8":[1,0,0,24,9], -"class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a195d4972634b9dfc1a87590de1eedee8":[2,0,0,24,9], -"class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a1a96cd942064f5d6b68ad6dedd0213d1":[1,0,0,24,13], -"class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a1a96cd942064f5d6b68ad6dedd0213d1":[2,0,0,24,13], -"class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a39411e3d1ce79d3998abbfb8f8594ea0":[1,0,0,24,1], -"class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a39411e3d1ce79d3998abbfb8f8594ea0":[2,0,0,24,1], -"class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a4954075a9bcc8e94918034d957c4dc65":[1,0,0,24,0], -"class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a4954075a9bcc8e94918034d957c4dc65":[2,0,0,24,0], -"class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a5159e7d96232836114759797744dd933":[1,0,0,24,14], -"class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a5159e7d96232836114759797744dd933":[2,0,0,24,14], -"class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a59cd7235ba47985fddfe207a077da59b":[1,0,0,24,4], -"class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a59cd7235ba47985fddfe207a077da59b":[2,0,0,24,4], -"class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a84b41deebe247220c51d751acb069dce":[1,0,0,24,10], -"class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a84b41deebe247220c51d751acb069dce":[2,0,0,24,10], -"class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a9030c87d5c2a045761694e1699829a09":[1,0,0,24,17], -"class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a9030c87d5c2a045761694e1699829a09":[2,0,0,24,17], -"class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aa7471802b453627af7ec648b138e902b":[1,0,0,24,3], -"class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aa7471802b453627af7ec648b138e902b":[2,0,0,24,3], -"class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ab0cbc1c7a24738c53121efa1149e24f2":[1,0,0,24,7], -"class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ab0cbc1c7a24738c53121efa1149e24f2":[2,0,0,24,7], -"class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ab8bc747498a19e4ca3ba9d3cccb756fa":[1,0,0,24,19], -"class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ab8bc747498a19e4ca3ba9d3cccb756fa":[2,0,0,24,19], -"class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ac4c0324e61517044e73fe94ec8595b3f":[1,0,0,24,16], -"class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ac4c0324e61517044e73fe94ec8595b3f":[2,0,0,24,16], -"class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ac6acec090724fa4e992c05f70f4ac7f6":[1,0,0,24,11], -"class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ac6acec090724fa4e992c05f70f4ac7f6":[2,0,0,24,11], -"class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ae43267049d569b72b2f1c96db7ffa582":[1,0,0,24,2], -"class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ae43267049d569b72b2f1c96db7ffa582":[2,0,0,24,2], -"class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aeb180dc37eff3728a18b178154c892d8":[1,0,0,24,12], -"class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aeb180dc37eff3728a18b178154c892d8":[2,0,0,24,12], -"class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aec2c3e4602c84a524c72e6f0833170e3":[1,0,0,24,6], -"class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aec2c3e4602c84a524c72e6f0833170e3":[2,0,0,24,6], -"class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html":[1,0,0,26], -"class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html":[2,0,0,26], -"class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a0415b2d8187f48557166d43ee5746b8e":[1,0,0,26,6], -"class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a0415b2d8187f48557166d43ee5746b8e":[2,0,0,26,6], -"class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a05f0450821590a09623dc84c0e8ba0a5":[1,0,0,26,4], -"class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a05f0450821590a09623dc84c0e8ba0a5":[2,0,0,26,4], -"class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a20c4516e4e96bdf99ce34dbd433bb7ed":[1,0,0,26,2], -"class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a20c4516e4e96bdf99ce34dbd433bb7ed":[2,0,0,26,2], -"class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a21431c52f8e2a17316aa2a97e0e23cc2":[1,0,0,26,21], -"class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a21431c52f8e2a17316aa2a97e0e23cc2":[2,0,0,26,21], -"class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a2402ad65efec989ec7d9bc671ec066ae":[1,0,0,26,14], -"class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a2402ad65efec989ec7d9bc671ec066ae":[2,0,0,26,14], -"class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a2be69705010b23423760a63822b2f408":[1,0,0,26,17], -"class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a2be69705010b23423760a63822b2f408":[2,0,0,26,17], -"class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a2d0dde29df4be4db2480ccd419f6cbed":[1,0,0,26,9], -"class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a2d0dde29df4be4db2480ccd419f6cbed":[2,0,0,26,9], -"class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a469f4b8d8536cfc049d4767fffdd3a15":[1,0,0,26,15], -"class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a469f4b8d8536cfc049d4767fffdd3a15":[2,0,0,26,15], -"class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a4a810a41f439b74a0bcbaaf8dd7eb07e":[1,0,0,26,12], -"class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a4a810a41f439b74a0bcbaaf8dd7eb07e":[2,0,0,26,12], -"class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a4aae9e2e271efa00a60d6f6c61d454ec":[1,0,0,26,7], -"class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a4aae9e2e271efa00a60d6f6c61d454ec":[2,0,0,26,7] +"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ada8b19fb76daac6e38fc5684a8217112":[1,0,0,22,6], +"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ada8b19fb76daac6e38fc5684a8217112":[2,0,0,22,6], +"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ae14cab8e15a5b33521f4a4e54a8fcdce":[1,0,0,22,22], +"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ae14cab8e15a5b33521f4a4e54a8fcdce":[2,0,0,22,22], +"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ae7a040c2bec3f07797b19a6de8481a7f":[1,0,0,22,17], +"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ae7a040c2bec3f07797b19a6de8481a7f":[2,0,0,22,17], +"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#af52d71df3cdb3d55a49e725b63a19d25":[1,0,0,22,15], +"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#af52d71df3cdb3d55a49e725b63a19d25":[2,0,0,22,15], +"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#afe99f7555a4c36ba95a08267bf5bb85d":[1,0,0,22,7], +"class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#afe99f7555a4c36ba95a08267bf5bb85d":[2,0,0,22,7], +"class_delegate_lib_1_1_delegate_msg.html":[1,0,0,23], +"class_delegate_lib_1_1_delegate_msg.html":[2,0,0,23], +"class_delegate_lib_1_1_delegate_msg.html#a61f5dfba67aa879a51239f6c1edbd446":[1,0,0,23,2], +"class_delegate_lib_1_1_delegate_msg.html#a61f5dfba67aa879a51239f6c1edbd446":[2,0,0,23,2], +"class_delegate_lib_1_1_delegate_msg.html#a67c68e6b2805c427afee8e8b4e846aac":[1,0,0,23,1], +"class_delegate_lib_1_1_delegate_msg.html#a67c68e6b2805c427afee8e8b4e846aac":[2,0,0,23,1], +"class_delegate_lib_1_1_delegate_msg.html#ad0ce3c1203f3f485d18b2be60f8bf703":[1,0,0,23,0], +"class_delegate_lib_1_1_delegate_msg.html#ad0ce3c1203f3f485d18b2be60f8bf703":[2,0,0,23,0], +"class_delegate_lib_1_1_delegate_thread.html":[1,0,0,24], +"class_delegate_lib_1_1_delegate_thread.html":[2,0,0,24], +"class_delegate_lib_1_1_delegate_thread.html#a37d3e15bf942d92da6dbdf21820c5101":[1,0,0,24,0], +"class_delegate_lib_1_1_delegate_thread.html#a37d3e15bf942d92da6dbdf21820c5101":[2,0,0,24,0], +"class_delegate_lib_1_1_delegate_thread.html#a9a69145597e92bd096062489b14560ad":[1,0,0,24,1], +"class_delegate_lib_1_1_delegate_thread.html#a9a69145597e92bd096062489b14560ad":[2,0,0,24,1], +"class_delegate_lib_1_1_i_delegate_invoker.html":[1,0,0,29], +"class_delegate_lib_1_1_i_delegate_invoker.html":[2,0,0,29], +"class_delegate_lib_1_1_i_delegate_invoker.html#a1386e5a1c2650fb1e5511a16cbb5b1f6":[1,0,0,29,0], +"class_delegate_lib_1_1_i_delegate_invoker.html#a1386e5a1c2650fb1e5511a16cbb5b1f6":[2,0,0,29,0], +"class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html":[1,0,0,37], +"class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html":[2,0,0,37], +"class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a30edf6d7c3ed0db8904a7e58293cc062":[1,0,0,37,7], +"class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a30edf6d7c3ed0db8904a7e58293cc062":[2,0,0,37,7], +"class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a33bcb6658cd012ab8801963f73a13fe9":[1,0,0,37,4], +"class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a33bcb6658cd012ab8801963f73a13fe9":[2,0,0,37,4], +"class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a7fce77ea8bc22493fed312e7b44108ea":[1,0,0,37,1], +"class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a7fce77ea8bc22493fed312e7b44108ea":[2,0,0,37,1] }; diff --git a/doxygen/html/navtreeindex2.js b/doxygen/html/navtreeindex2.js index 5b04341..9d6ff87 100644 --- a/doxygen/html/navtreeindex2.js +++ b/doxygen/html/navtreeindex2.js @@ -1,179 +1,85 @@ var NAVTREEINDEX2 = { -"class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a6563fdeb2a74bdfc8fd7aabe3dd38a43":[1,0,0,26,18], -"class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a6563fdeb2a74bdfc8fd7aabe3dd38a43":[2,0,0,26,18], -"class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a6cef069e1ec3020064447a453c3aa91b":[1,0,0,26,20], -"class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a6cef069e1ec3020064447a453c3aa91b":[2,0,0,26,20], -"class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a8fa9581587b6d143a9149168eae1855d":[1,0,0,26,11], -"class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a8fa9581587b6d143a9149168eae1855d":[2,0,0,26,11], -"class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a95abbb7549ad531efec4a5fe629ca925":[1,0,0,26,8], -"class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a95abbb7549ad531efec4a5fe629ca925":[2,0,0,26,8], -"class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a99e94121177fbf8f9229a3781f500232":[1,0,0,26,3], -"class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a99e94121177fbf8f9229a3781f500232":[2,0,0,26,3], -"class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a9d842c5708e3ea00df399c46a6e0afdc":[1,0,0,26,0], -"class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a9d842c5708e3ea00df399c46a6e0afdc":[2,0,0,26,0], -"class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aa1b8f9b21955f6d398fab9ad1153f940":[1,0,0,26,10], -"class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aa1b8f9b21955f6d398fab9ad1153f940":[2,0,0,26,10], -"class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#abb7c35431237278eb15b6af710193a11":[1,0,0,26,1], -"class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#abb7c35431237278eb15b6af710193a11":[2,0,0,26,1], -"class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ac13850e9003f5cd8cb81077b6011b76a":[1,0,0,26,5], -"class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ac13850e9003f5cd8cb81077b6011b76a":[2,0,0,26,5], -"class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#adb92f14347b35af2b3154103b1793196":[1,0,0,26,19], -"class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#adb92f14347b35af2b3154103b1793196":[2,0,0,26,19], -"class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ae2028e6668b1e1f4ab8538d9e4be230a":[1,0,0,26,16], -"class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ae2028e6668b1e1f4ab8538d9e4be230a":[2,0,0,26,16], -"class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#af3bd3f99355e53854fc17d086a7a95c9":[1,0,0,26,13], -"class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#af3bd3f99355e53854fc17d086a7a95c9":[2,0,0,26,13], -"class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html":[1,0,0,28], -"class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html":[2,0,0,28], -"class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a19b1d7c2f6892cd6dd6dd25182e9d07d":[1,0,0,28,18], -"class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a19b1d7c2f6892cd6dd6dd25182e9d07d":[2,0,0,28,18], -"class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a1f1804370de4dfc3353ad5f9324b1b3b":[1,0,0,28,1], -"class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a1f1804370de4dfc3353ad5f9324b1b3b":[2,0,0,28,1], -"class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a248c7fbf1212c7debba5c30e8a84fa80":[1,0,0,28,9], -"class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a248c7fbf1212c7debba5c30e8a84fa80":[2,0,0,28,9], -"class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a37cb6e6d0db0f7f7beb011064e92804c":[1,0,0,28,2], -"class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a37cb6e6d0db0f7f7beb011064e92804c":[2,0,0,28,2], -"class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a48f5e788dd4b24f822155f2c825ae4eb":[1,0,0,28,4], -"class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a48f5e788dd4b24f822155f2c825ae4eb":[2,0,0,28,4], -"class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a4ab380c00f346e894c9f27658d512bb4":[1,0,0,28,15], -"class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a4ab380c00f346e894c9f27658d512bb4":[2,0,0,28,15], -"class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a55976c43517ad73fded1eead86ee7d7a":[1,0,0,28,3], -"class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a55976c43517ad73fded1eead86ee7d7a":[2,0,0,28,3], -"class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a5e7bbce4e16c5045380edf7003f0493d":[1,0,0,28,11], -"class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a5e7bbce4e16c5045380edf7003f0493d":[2,0,0,28,11], -"class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a5f4fd75f158b4553776e2d62f31cd326":[1,0,0,28,10], -"class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a5f4fd75f158b4553776e2d62f31cd326":[2,0,0,28,10], -"class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a6d24d274b5686a6cfda2255f2c6049de":[1,0,0,28,19], -"class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a6d24d274b5686a6cfda2255f2c6049de":[2,0,0,28,19], -"class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a6e64aa7476c1cc451d8ac21f660953a8":[1,0,0,28,7], -"class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a6e64aa7476c1cc451d8ac21f660953a8":[2,0,0,28,7], -"class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a89a54b3aa7333005761c42b4335d728a":[1,0,0,28,14], -"class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a89a54b3aa7333005761c42b4335d728a":[2,0,0,28,14], -"class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a8b5495da7bbed3d691b5b7881c495018":[1,0,0,28,6], -"class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a8b5495da7bbed3d691b5b7881c495018":[2,0,0,28,6], -"class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a9da9fefa1174dd4d2c5f8eb398a9ea97":[1,0,0,28,5], -"class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a9da9fefa1174dd4d2c5f8eb398a9ea97":[2,0,0,28,5], -"class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aa513bda0b439e89c7c4149a56bc10a10":[1,0,0,28,12], -"class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aa513bda0b439e89c7c4149a56bc10a10":[2,0,0,28,12], -"class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aad11185618821cd2a0cfa68dc2af1e25":[1,0,0,28,8], -"class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aad11185618821cd2a0cfa68dc2af1e25":[2,0,0,28,8], -"class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aafbb90f4eb5ec2fcc05456fe139a6cee":[1,0,0,28,20], -"class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aafbb90f4eb5ec2fcc05456fe139a6cee":[2,0,0,28,20], -"class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ac10dd9cc4d129cae578c2be36b5300e2":[1,0,0,28,0], -"class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ac10dd9cc4d129cae578c2be36b5300e2":[2,0,0,28,0], -"class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ac1e27a71399c2444f302bfec7c21ae44":[1,0,0,28,13], -"class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ac1e27a71399c2444f302bfec7c21ae44":[2,0,0,28,13], -"class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aedbf462168487ee92af82d8a672f3cbc":[1,0,0,28,17], -"class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aedbf462168487ee92af82d8a672f3cbc":[2,0,0,28,17], -"class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#af04d07b743e8adb23111a837dea21185":[1,0,0,28,16], -"class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#af04d07b743e8adb23111a837dea21185":[2,0,0,28,16], -"class_delegate_lib_1_1_delegate_msg.html":[1,0,0,29], -"class_delegate_lib_1_1_delegate_msg.html":[2,0,0,29], -"class_delegate_lib_1_1_delegate_msg.html#a61f5dfba67aa879a51239f6c1edbd446":[1,0,0,29,2], -"class_delegate_lib_1_1_delegate_msg.html#a61f5dfba67aa879a51239f6c1edbd446":[2,0,0,29,2], -"class_delegate_lib_1_1_delegate_msg.html#a67c68e6b2805c427afee8e8b4e846aac":[1,0,0,29,1], -"class_delegate_lib_1_1_delegate_msg.html#a67c68e6b2805c427afee8e8b4e846aac":[2,0,0,29,1], -"class_delegate_lib_1_1_delegate_msg.html#ad0ce3c1203f3f485d18b2be60f8bf703":[1,0,0,29,0], -"class_delegate_lib_1_1_delegate_msg.html#ad0ce3c1203f3f485d18b2be60f8bf703":[2,0,0,29,0], -"class_delegate_lib_1_1_delegate_thread.html":[1,0,0,30], -"class_delegate_lib_1_1_delegate_thread.html":[2,0,0,30], -"class_delegate_lib_1_1_delegate_thread.html#a37d3e15bf942d92da6dbdf21820c5101":[1,0,0,30,0], -"class_delegate_lib_1_1_delegate_thread.html#a37d3e15bf942d92da6dbdf21820c5101":[2,0,0,30,0], -"class_delegate_lib_1_1_delegate_thread.html#a9a69145597e92bd096062489b14560ad":[1,0,0,30,1], -"class_delegate_lib_1_1_delegate_thread.html#a9a69145597e92bd096062489b14560ad":[2,0,0,30,1], -"class_delegate_lib_1_1_i_delegate_invoker.html":[1,0,0,35], -"class_delegate_lib_1_1_i_delegate_invoker.html":[2,0,0,35], -"class_delegate_lib_1_1_i_delegate_invoker.html#a1386e5a1c2650fb1e5511a16cbb5b1f6":[1,0,0,35,0], -"class_delegate_lib_1_1_i_delegate_invoker.html#a1386e5a1c2650fb1e5511a16cbb5b1f6":[2,0,0,35,0], -"class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html":[1,0,0,43], -"class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html":[2,0,0,43], -"class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a30edf6d7c3ed0db8904a7e58293cc062":[1,0,0,43,7], -"class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a30edf6d7c3ed0db8904a7e58293cc062":[2,0,0,43,7], -"class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a33bcb6658cd012ab8801963f73a13fe9":[1,0,0,43,4], -"class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a33bcb6658cd012ab8801963f73a13fe9":[2,0,0,43,4], -"class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a7fce77ea8bc22493fed312e7b44108ea":[1,0,0,43,1], -"class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a7fce77ea8bc22493fed312e7b44108ea":[2,0,0,43,1], -"class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a8273659a7d2a5febd0e1e3ce8c7fe6b7":[1,0,0,43,5], -"class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a8273659a7d2a5febd0e1e3ce8c7fe6b7":[2,0,0,43,5], -"class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a9148f413c457f0ab63e2f613a6289f66":[1,0,0,43,0], -"class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a9148f413c457f0ab63e2f613a6289f66":[2,0,0,43,0], -"class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a917bc9736e4e72769a4f883228e6ff91":[1,0,0,43,8], -"class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a917bc9736e4e72769a4f883228e6ff91":[2,0,0,43,8], -"class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#acbfa6d7a2393fb734d3ba38b794809b7":[1,0,0,43,2], -"class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#acbfa6d7a2393fb734d3ba38b794809b7":[2,0,0,43,2], -"class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#aecd5f8e6240ee6a7bc748162ef9e46cd":[1,0,0,43,3], -"class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#aecd5f8e6240ee6a7bc748162ef9e46cd":[2,0,0,43,3], -"class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#afc6074436f261bcdff69bb4b241e7597":[1,0,0,43,6], -"class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#afc6074436f261bcdff69bb4b241e7597":[2,0,0,43,6], -"class_delegate_lib_1_1_multicast_delegate_safe_3_01_ret_type_07_args_8_8_8_08_4.html":[1,0,0,45], -"class_delegate_lib_1_1_multicast_delegate_safe_3_01_ret_type_07_args_8_8_8_08_4.html":[2,0,0,45], -"class_delegate_lib_1_1_multicast_delegate_safe_3_01_ret_type_07_args_8_8_8_08_4.html#a084351c99acfba753f96b3b366522adb":[1,0,0,45,5], -"class_delegate_lib_1_1_multicast_delegate_safe_3_01_ret_type_07_args_8_8_8_08_4.html#a084351c99acfba753f96b3b366522adb":[2,0,0,45,5], -"class_delegate_lib_1_1_multicast_delegate_safe_3_01_ret_type_07_args_8_8_8_08_4.html#a2da23ad790c9b462beb7a5d3bff788dd":[1,0,0,45,4], -"class_delegate_lib_1_1_multicast_delegate_safe_3_01_ret_type_07_args_8_8_8_08_4.html#a2da23ad790c9b462beb7a5d3bff788dd":[2,0,0,45,4], -"class_delegate_lib_1_1_multicast_delegate_safe_3_01_ret_type_07_args_8_8_8_08_4.html#a4ff20ed5d4dd2387e250ec44ada98c36":[1,0,0,45,0], -"class_delegate_lib_1_1_multicast_delegate_safe_3_01_ret_type_07_args_8_8_8_08_4.html#a4ff20ed5d4dd2387e250ec44ada98c36":[2,0,0,45,0], -"class_delegate_lib_1_1_multicast_delegate_safe_3_01_ret_type_07_args_8_8_8_08_4.html#a74ddb360c1f0a668b416551d16c5d7cc":[1,0,0,45,6], -"class_delegate_lib_1_1_multicast_delegate_safe_3_01_ret_type_07_args_8_8_8_08_4.html#a74ddb360c1f0a668b416551d16c5d7cc":[2,0,0,45,6], -"class_delegate_lib_1_1_multicast_delegate_safe_3_01_ret_type_07_args_8_8_8_08_4.html#a78372ba84274c90fa065ad0e1131388d":[1,0,0,45,1], -"class_delegate_lib_1_1_multicast_delegate_safe_3_01_ret_type_07_args_8_8_8_08_4.html#a78372ba84274c90fa065ad0e1131388d":[2,0,0,45,1], -"class_delegate_lib_1_1_multicast_delegate_safe_3_01_ret_type_07_args_8_8_8_08_4.html#a83fd07966d22b666e67c9b4e2f2a3913":[1,0,0,45,7], -"class_delegate_lib_1_1_multicast_delegate_safe_3_01_ret_type_07_args_8_8_8_08_4.html#a83fd07966d22b666e67c9b4e2f2a3913":[2,0,0,45,7], -"class_delegate_lib_1_1_multicast_delegate_safe_3_01_ret_type_07_args_8_8_8_08_4.html#a9732c67d0b37b2418fc776a4a6d5c26d":[1,0,0,45,2], -"class_delegate_lib_1_1_multicast_delegate_safe_3_01_ret_type_07_args_8_8_8_08_4.html#a9732c67d0b37b2418fc776a4a6d5c26d":[2,0,0,45,2], -"class_delegate_lib_1_1_multicast_delegate_safe_3_01_ret_type_07_args_8_8_8_08_4.html#aafcf6d25ef4c29c27fcffc7d1c56075c":[1,0,0,45,3], -"class_delegate_lib_1_1_multicast_delegate_safe_3_01_ret_type_07_args_8_8_8_08_4.html#aafcf6d25ef4c29c27fcffc7d1c56075c":[2,0,0,45,3], -"class_delegate_lib_1_1_semaphore.html":[1,0,0,46], -"class_delegate_lib_1_1_semaphore.html":[2,0,0,46], -"class_delegate_lib_1_1_semaphore.html#a031954138f0b60dd1f23b8c47ab16442":[1,0,0,46,3], -"class_delegate_lib_1_1_semaphore.html#a031954138f0b60dd1f23b8c47ab16442":[2,0,0,46,3], -"class_delegate_lib_1_1_semaphore.html#a3dc5373d7acc1b2b23b4c8db04287747":[1,0,0,46,1], -"class_delegate_lib_1_1_semaphore.html#a3dc5373d7acc1b2b23b4c8db04287747":[2,0,0,46,1], -"class_delegate_lib_1_1_semaphore.html#a649aa0bb36a4f94d15ead412d02f0a24":[1,0,0,46,2], -"class_delegate_lib_1_1_semaphore.html#a649aa0bb36a4f94d15ead412d02f0a24":[2,0,0,46,2], -"class_delegate_lib_1_1_semaphore.html#ab598fb67f4b8ccabd6e86f449ee95f95":[1,0,0,46,0], -"class_delegate_lib_1_1_semaphore.html#ab598fb67f4b8ccabd6e86f449ee95f95":[2,0,0,46,0], -"class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html":[1,0,0,48], -"class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html":[2,0,0,48], -"class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a0bfbe2a3d03ee9e494fe58ba35c953fd":[1,0,0,48,7], -"class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a0bfbe2a3d03ee9e494fe58ba35c953fd":[2,0,0,48,7], -"class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a208278e04273a67747e38c1b40187700":[1,0,0,48,1], -"class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a208278e04273a67747e38c1b40187700":[2,0,0,48,1], -"class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a29fd174ba1060d37e164e45ed3e9b383":[1,0,0,48,5], -"class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a29fd174ba1060d37e164e45ed3e9b383":[2,0,0,48,5], -"class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a2cee3825995b4400eb0924c3bc54b382":[1,0,0,48,3], -"class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a2cee3825995b4400eb0924c3bc54b382":[2,0,0,48,3], -"class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#aa56a7da61e752491b338442d83156e1a":[1,0,0,48,0], -"class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#aa56a7da61e752491b338442d83156e1a":[2,0,0,48,0], -"class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#aa9da380779be0a93c208f17ec0bb5e83":[1,0,0,48,6], -"class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#aa9da380779be0a93c208f17ec0bb5e83":[2,0,0,48,6], -"class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#aee196f10c4064cd51da5625678248388":[1,0,0,48,4], -"class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#aee196f10c4064cd51da5625678248388":[2,0,0,48,4], -"class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#af44894cbde71e2cae0687381f5e07eff":[1,0,0,48,2], -"class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#af44894cbde71e2cae0687381f5e07eff":[2,0,0,48,2], -"class_delegate_lib_1_1heap__arg__deleter.html":[1,0,0,31], -"class_delegate_lib_1_1heap__arg__deleter.html":[2,0,0,31], -"class_delegate_lib_1_1heap__arg__deleter.html#a3013b01fb9e034d4e97c947a40cb6b29":[1,0,0,31,0], -"class_delegate_lib_1_1heap__arg__deleter.html#a3013b01fb9e034d4e97c947a40cb6b29":[2,0,0,31,0], -"class_delegate_lib_1_1heap__arg__deleter.html#ac10f9aac0fb5f6da4eaaca2061d87507":[1,0,0,31,1], -"class_delegate_lib_1_1heap__arg__deleter.html#ac10f9aac0fb5f6da4eaaca2061d87507":[2,0,0,31,1], -"class_delegate_lib_1_1heap__arg__deleter_3_01_t_01_5_01_4.html":[1,0,0,32], -"class_delegate_lib_1_1heap__arg__deleter_3_01_t_01_5_01_4.html":[2,0,0,32], -"class_delegate_lib_1_1heap__arg__deleter_3_01_t_01_5_01_4.html#a31ac1274500603c1eaf159e77027cbc0":[1,0,0,32,0], -"class_delegate_lib_1_1heap__arg__deleter_3_01_t_01_5_01_4.html#a31ac1274500603c1eaf159e77027cbc0":[2,0,0,32,0], -"class_delegate_lib_1_1heap__arg__deleter_3_01_t_01_5_01_4.html#a9dc4e9eacbbb291544c88d6c3fef40a0":[1,0,0,32,1], -"class_delegate_lib_1_1heap__arg__deleter_3_01_t_01_5_01_4.html#a9dc4e9eacbbb291544c88d6c3fef40a0":[2,0,0,32,1], -"class_delegate_lib_1_1heap__arg__deleter_3_01_t_01_5_5_01_4.html":[1,0,0,33], -"class_delegate_lib_1_1heap__arg__deleter_3_01_t_01_5_5_01_4.html":[2,0,0,33], -"class_delegate_lib_1_1heap__arg__deleter_3_01_t_01_5_5_01_4.html#a3f3aee9e49ddb8f51cfce56d570862d1":[1,0,0,33,1], -"class_delegate_lib_1_1heap__arg__deleter_3_01_t_01_5_5_01_4.html#a3f3aee9e49ddb8f51cfce56d570862d1":[2,0,0,33,1], -"class_delegate_lib_1_1heap__arg__deleter_3_01_t_01_5_5_01_4.html#a9ad3898d1d415f962b3423f8df7e5ac6":[1,0,0,33,0], -"class_delegate_lib_1_1heap__arg__deleter_3_01_t_01_5_5_01_4.html#a9ad3898d1d415f962b3423f8df7e5ac6":[2,0,0,33,0], -"class_delegate_lib_1_1heap__arg__deleter__base.html":[1,0,0,34], -"class_delegate_lib_1_1heap__arg__deleter__base.html":[2,0,0,34], -"class_delegate_lib_1_1heap__arg__deleter__base.html#a169eb4e354c3d2085813a357fb8923eb":[1,0,0,34,0], -"class_delegate_lib_1_1heap__arg__deleter__base.html#a169eb4e354c3d2085813a357fb8923eb":[2,0,0,34,0], +"class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a8273659a7d2a5febd0e1e3ce8c7fe6b7":[1,0,0,37,5], +"class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a8273659a7d2a5febd0e1e3ce8c7fe6b7":[2,0,0,37,5], +"class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a9148f413c457f0ab63e2f613a6289f66":[1,0,0,37,0], +"class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a9148f413c457f0ab63e2f613a6289f66":[2,0,0,37,0], +"class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a917bc9736e4e72769a4f883228e6ff91":[1,0,0,37,8], +"class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a917bc9736e4e72769a4f883228e6ff91":[2,0,0,37,8], +"class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#acbfa6d7a2393fb734d3ba38b794809b7":[1,0,0,37,2], +"class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#acbfa6d7a2393fb734d3ba38b794809b7":[2,0,0,37,2], +"class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#aecd5f8e6240ee6a7bc748162ef9e46cd":[1,0,0,37,3], +"class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#aecd5f8e6240ee6a7bc748162ef9e46cd":[2,0,0,37,3], +"class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#afc6074436f261bcdff69bb4b241e7597":[1,0,0,37,6], +"class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#afc6074436f261bcdff69bb4b241e7597":[2,0,0,37,6], +"class_delegate_lib_1_1_multicast_delegate_safe_3_01_ret_type_07_args_8_8_8_08_4.html":[1,0,0,39], +"class_delegate_lib_1_1_multicast_delegate_safe_3_01_ret_type_07_args_8_8_8_08_4.html":[2,0,0,39], +"class_delegate_lib_1_1_multicast_delegate_safe_3_01_ret_type_07_args_8_8_8_08_4.html#a084351c99acfba753f96b3b366522adb":[1,0,0,39,5], +"class_delegate_lib_1_1_multicast_delegate_safe_3_01_ret_type_07_args_8_8_8_08_4.html#a084351c99acfba753f96b3b366522adb":[2,0,0,39,5], +"class_delegate_lib_1_1_multicast_delegate_safe_3_01_ret_type_07_args_8_8_8_08_4.html#a2da23ad790c9b462beb7a5d3bff788dd":[1,0,0,39,4], +"class_delegate_lib_1_1_multicast_delegate_safe_3_01_ret_type_07_args_8_8_8_08_4.html#a2da23ad790c9b462beb7a5d3bff788dd":[2,0,0,39,4], +"class_delegate_lib_1_1_multicast_delegate_safe_3_01_ret_type_07_args_8_8_8_08_4.html#a4ff20ed5d4dd2387e250ec44ada98c36":[1,0,0,39,0], +"class_delegate_lib_1_1_multicast_delegate_safe_3_01_ret_type_07_args_8_8_8_08_4.html#a4ff20ed5d4dd2387e250ec44ada98c36":[2,0,0,39,0], +"class_delegate_lib_1_1_multicast_delegate_safe_3_01_ret_type_07_args_8_8_8_08_4.html#a74ddb360c1f0a668b416551d16c5d7cc":[1,0,0,39,6], +"class_delegate_lib_1_1_multicast_delegate_safe_3_01_ret_type_07_args_8_8_8_08_4.html#a74ddb360c1f0a668b416551d16c5d7cc":[2,0,0,39,6], +"class_delegate_lib_1_1_multicast_delegate_safe_3_01_ret_type_07_args_8_8_8_08_4.html#a78372ba84274c90fa065ad0e1131388d":[1,0,0,39,1], +"class_delegate_lib_1_1_multicast_delegate_safe_3_01_ret_type_07_args_8_8_8_08_4.html#a78372ba84274c90fa065ad0e1131388d":[2,0,0,39,1], +"class_delegate_lib_1_1_multicast_delegate_safe_3_01_ret_type_07_args_8_8_8_08_4.html#a83fd07966d22b666e67c9b4e2f2a3913":[1,0,0,39,7], +"class_delegate_lib_1_1_multicast_delegate_safe_3_01_ret_type_07_args_8_8_8_08_4.html#a83fd07966d22b666e67c9b4e2f2a3913":[2,0,0,39,7], +"class_delegate_lib_1_1_multicast_delegate_safe_3_01_ret_type_07_args_8_8_8_08_4.html#a9732c67d0b37b2418fc776a4a6d5c26d":[1,0,0,39,2], +"class_delegate_lib_1_1_multicast_delegate_safe_3_01_ret_type_07_args_8_8_8_08_4.html#a9732c67d0b37b2418fc776a4a6d5c26d":[2,0,0,39,2], +"class_delegate_lib_1_1_multicast_delegate_safe_3_01_ret_type_07_args_8_8_8_08_4.html#aafcf6d25ef4c29c27fcffc7d1c56075c":[1,0,0,39,3], +"class_delegate_lib_1_1_multicast_delegate_safe_3_01_ret_type_07_args_8_8_8_08_4.html#aafcf6d25ef4c29c27fcffc7d1c56075c":[2,0,0,39,3], +"class_delegate_lib_1_1_semaphore.html":[1,0,0,40], +"class_delegate_lib_1_1_semaphore.html":[2,0,0,40], +"class_delegate_lib_1_1_semaphore.html#a031954138f0b60dd1f23b8c47ab16442":[1,0,0,40,3], +"class_delegate_lib_1_1_semaphore.html#a031954138f0b60dd1f23b8c47ab16442":[2,0,0,40,3], +"class_delegate_lib_1_1_semaphore.html#a3dc5373d7acc1b2b23b4c8db04287747":[1,0,0,40,1], +"class_delegate_lib_1_1_semaphore.html#a3dc5373d7acc1b2b23b4c8db04287747":[2,0,0,40,1], +"class_delegate_lib_1_1_semaphore.html#a649aa0bb36a4f94d15ead412d02f0a24":[1,0,0,40,2], +"class_delegate_lib_1_1_semaphore.html#a649aa0bb36a4f94d15ead412d02f0a24":[2,0,0,40,2], +"class_delegate_lib_1_1_semaphore.html#ab598fb67f4b8ccabd6e86f449ee95f95":[1,0,0,40,0], +"class_delegate_lib_1_1_semaphore.html#ab598fb67f4b8ccabd6e86f449ee95f95":[2,0,0,40,0], +"class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html":[1,0,0,42], +"class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html":[2,0,0,42], +"class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a0bfbe2a3d03ee9e494fe58ba35c953fd":[1,0,0,42,7], +"class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a0bfbe2a3d03ee9e494fe58ba35c953fd":[2,0,0,42,7], +"class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a208278e04273a67747e38c1b40187700":[1,0,0,42,1], +"class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a208278e04273a67747e38c1b40187700":[2,0,0,42,1], +"class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a29fd174ba1060d37e164e45ed3e9b383":[1,0,0,42,5], +"class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a29fd174ba1060d37e164e45ed3e9b383":[2,0,0,42,5], +"class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a2cee3825995b4400eb0924c3bc54b382":[1,0,0,42,3], +"class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a2cee3825995b4400eb0924c3bc54b382":[2,0,0,42,3], +"class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#aa56a7da61e752491b338442d83156e1a":[1,0,0,42,0], +"class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#aa56a7da61e752491b338442d83156e1a":[2,0,0,42,0], +"class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#aa9da380779be0a93c208f17ec0bb5e83":[1,0,0,42,6], +"class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#aa9da380779be0a93c208f17ec0bb5e83":[2,0,0,42,6], +"class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#aee196f10c4064cd51da5625678248388":[1,0,0,42,4], +"class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#aee196f10c4064cd51da5625678248388":[2,0,0,42,4], +"class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#af44894cbde71e2cae0687381f5e07eff":[1,0,0,42,2], +"class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#af44894cbde71e2cae0687381f5e07eff":[2,0,0,42,2], +"class_delegate_lib_1_1heap__arg__deleter.html":[1,0,0,25], +"class_delegate_lib_1_1heap__arg__deleter.html":[2,0,0,25], +"class_delegate_lib_1_1heap__arg__deleter.html#a3013b01fb9e034d4e97c947a40cb6b29":[1,0,0,25,0], +"class_delegate_lib_1_1heap__arg__deleter.html#a3013b01fb9e034d4e97c947a40cb6b29":[2,0,0,25,0], +"class_delegate_lib_1_1heap__arg__deleter.html#ac10f9aac0fb5f6da4eaaca2061d87507":[1,0,0,25,1], +"class_delegate_lib_1_1heap__arg__deleter.html#ac10f9aac0fb5f6da4eaaca2061d87507":[2,0,0,25,1], +"class_delegate_lib_1_1heap__arg__deleter_3_01_t_01_5_01_4.html":[1,0,0,26], +"class_delegate_lib_1_1heap__arg__deleter_3_01_t_01_5_01_4.html":[2,0,0,26], +"class_delegate_lib_1_1heap__arg__deleter_3_01_t_01_5_01_4.html#a31ac1274500603c1eaf159e77027cbc0":[1,0,0,26,0], +"class_delegate_lib_1_1heap__arg__deleter_3_01_t_01_5_01_4.html#a31ac1274500603c1eaf159e77027cbc0":[2,0,0,26,0], +"class_delegate_lib_1_1heap__arg__deleter_3_01_t_01_5_01_4.html#a9dc4e9eacbbb291544c88d6c3fef40a0":[1,0,0,26,1], +"class_delegate_lib_1_1heap__arg__deleter_3_01_t_01_5_01_4.html#a9dc4e9eacbbb291544c88d6c3fef40a0":[2,0,0,26,1], +"class_delegate_lib_1_1heap__arg__deleter_3_01_t_01_5_5_01_4.html":[1,0,0,27], +"class_delegate_lib_1_1heap__arg__deleter_3_01_t_01_5_5_01_4.html":[2,0,0,27], +"class_delegate_lib_1_1heap__arg__deleter_3_01_t_01_5_5_01_4.html#a3f3aee9e49ddb8f51cfce56d570862d1":[1,0,0,27,1], +"class_delegate_lib_1_1heap__arg__deleter_3_01_t_01_5_5_01_4.html#a3f3aee9e49ddb8f51cfce56d570862d1":[2,0,0,27,1], +"class_delegate_lib_1_1heap__arg__deleter_3_01_t_01_5_5_01_4.html#a9ad3898d1d415f962b3423f8df7e5ac6":[1,0,0,27,0], +"class_delegate_lib_1_1heap__arg__deleter_3_01_t_01_5_5_01_4.html#a9ad3898d1d415f962b3423f8df7e5ac6":[2,0,0,27,0], +"class_delegate_lib_1_1heap__arg__deleter__base.html":[1,0,0,28], +"class_delegate_lib_1_1heap__arg__deleter__base.html":[2,0,0,28], +"class_delegate_lib_1_1heap__arg__deleter__base.html#a169eb4e354c3d2085813a357fb8923eb":[1,0,0,28,0], +"class_delegate_lib_1_1heap__arg__deleter__base.html#a169eb4e354c3d2085813a357fb8923eb":[2,0,0,28,0], "classes.html":[2,1], "dir_68267d1309a1af8e8297ef4c3efbcdba.html":[3,0,0], "dir_c8f7ce7d27485c8a429378cb6f706f6b.html":[3,0,0,0], @@ -222,24 +128,24 @@ var NAVTREEINDEX2 = "make__tuple__heap_8h.html#acd191a94679356fb915612440acf7a52":[3,0,0,0,8,13], "make__tuple__heap_8h_source.html":[3,0,0,0,8], "namespace_delegate_lib.html":[1,0,0], -"namespace_delegate_lib.html#a12cd186bad0206967705aa560e8e21a6":[1,0,0,58], -"namespace_delegate_lib.html#a15fcbaa212ec2fe7f7b523323b760d07":[1,0,0,63], -"namespace_delegate_lib.html#a18a52212b54b5a8994f32fae6d19ec4f":[1,0,0,59], -"namespace_delegate_lib.html#a23f0516caa72547787911fd0f0fc9c1b":[1,0,0,57], -"namespace_delegate_lib.html#a2fe15d9d206f30899ed86ed0a117217b":[1,0,0,53], -"namespace_delegate_lib.html#a388d9eb1fda04113138b8be61dc94650":[1,0,0,60], -"namespace_delegate_lib.html#a501fbd3f7de67128ab8cc37154f34cb5":[1,0,0,50], -"namespace_delegate_lib.html#a577444f047f613a4869e76fad9064f05":[1,0,0,52], -"namespace_delegate_lib.html#a5db76998112ee428868ac9edfc89b4aa":[1,0,0,62], -"namespace_delegate_lib.html#a659fef98325fece927482806f9d58c98":[1,0,0,65], -"namespace_delegate_lib.html#a684f519f3b774007ab1d8b81e32fc647":[1,0,0,56], -"namespace_delegate_lib.html#a75ff1e13f1cb691402002bfccaf9d1b2":[1,0,0,51], -"namespace_delegate_lib.html#a7616e4b38fca0742748de407497d12c6":[1,0,0,54], -"namespace_delegate_lib.html#a8f614eab3c1d9527a3b3c1b006b4d6ee":[1,0,0,55], -"namespace_delegate_lib.html#aa0e7491d38d4053d6218bf874d56e868":[1,0,0,66], -"namespace_delegate_lib.html#aaec1863ccd49b0020b485d9755ab4705":[1,0,0,49], -"namespace_delegate_lib.html#acd191a94679356fb915612440acf7a52":[1,0,0,64], -"namespace_delegate_lib.html#ad93c07a649cc918a05b19e8b351add0d":[1,0,0,61], +"namespace_delegate_lib.html#a15fcbaa212ec2fe7f7b523323b760d07":[1,0,0,57], +"namespace_delegate_lib.html#a2ec853f3e1fa47faba54b04fb3c5232d":[1,0,0,53], +"namespace_delegate_lib.html#a2fe15d9d206f30899ed86ed0a117217b":[1,0,0,47], +"namespace_delegate_lib.html#a388d9eb1fda04113138b8be61dc94650":[1,0,0,54], +"namespace_delegate_lib.html#a501fbd3f7de67128ab8cc37154f34cb5":[1,0,0,44], +"namespace_delegate_lib.html#a577444f047f613a4869e76fad9064f05":[1,0,0,46], +"namespace_delegate_lib.html#a5cc5695faac26dd65571b4ee1121b06c":[1,0,0,52], +"namespace_delegate_lib.html#a5db76998112ee428868ac9edfc89b4aa":[1,0,0,56], +"namespace_delegate_lib.html#a659fef98325fece927482806f9d58c98":[1,0,0,59], +"namespace_delegate_lib.html#a684f519f3b774007ab1d8b81e32fc647":[1,0,0,50], +"namespace_delegate_lib.html#a739d90362b129b98ba2c5a626d655c6a":[1,0,0,51], +"namespace_delegate_lib.html#a75ff1e13f1cb691402002bfccaf9d1b2":[1,0,0,45], +"namespace_delegate_lib.html#a7616e4b38fca0742748de407497d12c6":[1,0,0,48], +"namespace_delegate_lib.html#a8f614eab3c1d9527a3b3c1b006b4d6ee":[1,0,0,49], +"namespace_delegate_lib.html#aa0e7491d38d4053d6218bf874d56e868":[1,0,0,60], +"namespace_delegate_lib.html#aaec1863ccd49b0020b485d9755ab4705":[1,0,0,43], +"namespace_delegate_lib.html#acd191a94679356fb915612440acf7a52":[1,0,0,58], +"namespace_delegate_lib.html#ad93c07a649cc918a05b19e8b351add0d":[1,0,0,55], "namespacemembers.html":[1,1,0], "namespacemembers_func.html":[1,1,1], "namespacemembers_vars.html":[1,1,2], @@ -249,5 +155,44 @@ var NAVTREEINDEX2 = "namespacesrc__dup.html#a1f3a18a8b0b09a4da5e264a3322d1b08":[1,0,1,1], "namespacesrc__dup.html#afc752b49e0a83100098f19079eaafef1":[1,0,1,0], "pages.html":[], -"src__dup_8py.html":[3,0,0,0,13] +"src__dup_8py.html":[3,0,0,0,13], +"src__dup_8py.html#a15dd702d0fd7d58585504fa19b49623d":[3,0,0,0,13,2], +"src__dup_8py.html#a1f3a18a8b0b09a4da5e264a3322d1b08":[3,0,0,0,13,1], +"src__dup_8py.html#afc752b49e0a83100098f19079eaafef1":[3,0,0,0,13,0], +"struct_delegate_lib_1_1_delegate.html":[1,0,0,0], +"struct_delegate_lib_1_1_delegate.html":[2,0,0,0], +"struct_delegate_lib_1_1_delegate_free.html":[1,0,0,5], +"struct_delegate_lib_1_1_delegate_free.html":[2,0,0,5], +"struct_delegate_lib_1_1_delegate_free_async.html":[1,0,0,7], +"struct_delegate_lib_1_1_delegate_free_async.html":[2,0,0,7], +"struct_delegate_lib_1_1_delegate_free_async_wait.html":[1,0,0,9], +"struct_delegate_lib_1_1_delegate_free_async_wait.html":[2,0,0,9], +"struct_delegate_lib_1_1_delegate_function_async.html":[1,0,0,13], +"struct_delegate_lib_1_1_delegate_function_async.html":[2,0,0,13], +"struct_delegate_lib_1_1_delegate_function_async_wait.html":[1,0,0,15], +"struct_delegate_lib_1_1_delegate_function_async_wait.html":[2,0,0,15], +"struct_delegate_lib_1_1_delegate_member.html":[1,0,0,17], +"struct_delegate_lib_1_1_delegate_member.html":[2,0,0,17], +"struct_delegate_lib_1_1_delegate_member_async.html":[1,0,0,19], +"struct_delegate_lib_1_1_delegate_member_async.html":[2,0,0,19], +"struct_delegate_lib_1_1_delegate_member_async_wait.html":[1,0,0,21], +"struct_delegate_lib_1_1_delegate_member_async_wait.html":[2,0,0,21], +"struct_delegate_lib_1_1_multicast_delegate.html":[1,0,0,36], +"struct_delegate_lib_1_1_multicast_delegate.html":[2,0,0,36], +"struct_delegate_lib_1_1_multicast_delegate_safe.html":[1,0,0,38], +"struct_delegate_lib_1_1_multicast_delegate_safe.html":[2,0,0,38], +"struct_delegate_lib_1_1_singlecast_delegate.html":[1,0,0,41], +"struct_delegate_lib_1_1_singlecast_delegate.html":[2,0,0,41], +"struct_delegate_lib_1_1is__shared__ptr.html":[1,0,0,30], +"struct_delegate_lib_1_1is__shared__ptr.html":[2,0,0,30], +"struct_delegate_lib_1_1is__shared__ptr_3_01const_01std_1_1shared__ptr_3_01_t_01_4_01_5_01_4.html":[1,0,0,32], +"struct_delegate_lib_1_1is__shared__ptr_3_01const_01std_1_1shared__ptr_3_01_t_01_4_01_5_01_4.html":[2,0,0,32], +"struct_delegate_lib_1_1is__shared__ptr_3_01const_01std_1_1shared__ptr_3_01_t_01_4_01_6_01_4.html":[1,0,0,31], +"struct_delegate_lib_1_1is__shared__ptr_3_01const_01std_1_1shared__ptr_3_01_t_01_4_01_6_01_4.html":[2,0,0,31], +"struct_delegate_lib_1_1is__shared__ptr_3_01std_1_1shared__ptr_3_01_t_01_4_01_4.html":[1,0,0,35], +"struct_delegate_lib_1_1is__shared__ptr_3_01std_1_1shared__ptr_3_01_t_01_4_01_4.html":[2,0,0,35], +"struct_delegate_lib_1_1is__shared__ptr_3_01std_1_1shared__ptr_3_01_t_01_4_01_5_01_4.html":[1,0,0,34], +"struct_delegate_lib_1_1is__shared__ptr_3_01std_1_1shared__ptr_3_01_t_01_4_01_5_01_4.html":[2,0,0,34], +"struct_delegate_lib_1_1is__shared__ptr_3_01std_1_1shared__ptr_3_01_t_01_4_01_6_01_4.html":[1,0,0,33], +"struct_delegate_lib_1_1is__shared__ptr_3_01std_1_1shared__ptr_3_01_t_01_4_01_6_01_4.html":[2,0,0,33] }; diff --git a/doxygen/html/search/all_0.js b/doxygen/html/search/all_0.js index a151aa2..b7a6724 100644 --- a/doxygen/html/search/all_0.js +++ b/doxygen/html/search/all_0.js @@ -1,5 +1,5 @@ var searchData= [ - ['assign_0',['Assign',['../class_delegate_lib_1_1_delegate_free_3_01_ret_type_07_args_8_8_8_08_4.html#ad50bc3385f014ff12cf61c16c030f9c0',1,'DelegateLib::DelegateFree< RetType(Args...)>::Assign()'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aa837983f1f9c0a2f8b35fb0ea4704e5b',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::Assign()'],['../class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a195d4972634b9dfc1a87590de1eedee8',1,'DelegateLib::DelegateMemberSp< TClass, RetType(Args...)>::Assign()'],['../class_delegate_lib_1_1_delegate_function_3_01_ret_type_07_args_8_8_8_08_4.html#a813f00fad959f24480192a5a44b12cdc',1,'DelegateLib::DelegateFunction< RetType(Args...)>::Assign()'],['../class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#a98d999c16d8eff2e9967d0a4c25b9d41',1,'DelegateLib::DelegateFreeAsync< RetType(Args...)>::Assign()'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#abe340362fa1daacc9e1d0b58428506e5',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::Assign()'],['../class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a2d0dde29df4be4db2480ccd419f6cbed',1,'DelegateLib::DelegateMemberSpAsync< TClass, RetType(Args...)>::Assign()'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#ae51e00822c91e01e7041be385ac38c76',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::Assign()'],['../class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#ae495a55e908778e619d186eb9afb9ecc',1,'DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>::Assign()'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a1ead27747d4dc9a932bc7957de036a6c',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::Assign()'],['../class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a248c7fbf1212c7debba5c30e8a84fa80',1,'DelegateLib::DelegateMemberSpAsyncWait< TClass, RetType(Args...)>::Assign()'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a06a1f3a07b3b85f30d1d149a8ce7694d',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::Assign()']]], - ['asyncinvoke_1',['AsyncInvoke',['../class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#a2f0ac18839223393d6c8a76beb971478',1,'DelegateLib::DelegateFreeAsync< RetType(Args...)>::AsyncInvoke()'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a66a4e60715f3379696d120cbfd0d0010',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::AsyncInvoke()'],['../class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aa1b8f9b21955f6d398fab9ad1153f940',1,'DelegateLib::DelegateMemberSpAsync< TClass, RetType(Args...)>::AsyncInvoke()'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a5c0e0c2591b0b02feec73b501325fcb6',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::AsyncInvoke()'],['../class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#acca23e7595f55d4509625332f650de8f',1,'DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>::AsyncInvoke()'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a8291fb2c29ace6e80959768d7e614e13',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::AsyncInvoke()'],['../class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a5f4fd75f158b4553776e2d62f31cd326',1,'DelegateLib::DelegateMemberSpAsyncWait< TClass, RetType(Args...)>::AsyncInvoke()'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a1c4342829881ac285f0d839906c9f930',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::AsyncInvoke()']]] + ['assign_0',['Assign',['../class_delegate_lib_1_1_delegate_free_3_01_ret_type_07_args_8_8_8_08_4.html#ad50bc3385f014ff12cf61c16c030f9c0',1,'DelegateLib::DelegateFree< RetType(Args...)>::Assign()'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aa837983f1f9c0a2f8b35fb0ea4704e5b',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::Assign()'],['../class_delegate_lib_1_1_delegate_function_3_01_ret_type_07_args_8_8_8_08_4.html#a813f00fad959f24480192a5a44b12cdc',1,'DelegateLib::DelegateFunction< RetType(Args...)>::Assign()'],['../class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#a98d999c16d8eff2e9967d0a4c25b9d41',1,'DelegateLib::DelegateFreeAsync< RetType(Args...)>::Assign()'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#abe340362fa1daacc9e1d0b58428506e5',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::Assign()'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#ae51e00822c91e01e7041be385ac38c76',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::Assign()'],['../class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#ae495a55e908778e619d186eb9afb9ecc',1,'DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>::Assign()'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a1ead27747d4dc9a932bc7957de036a6c',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::Assign()'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a06a1f3a07b3b85f30d1d149a8ce7694d',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::Assign()']]], + ['asyncinvoke_1',['AsyncInvoke',['../class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#a2f0ac18839223393d6c8a76beb971478',1,'DelegateLib::DelegateFreeAsync< RetType(Args...)>::AsyncInvoke()'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a66a4e60715f3379696d120cbfd0d0010',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::AsyncInvoke()'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a5c0e0c2591b0b02feec73b501325fcb6',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::AsyncInvoke()'],['../class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#acca23e7595f55d4509625332f650de8f',1,'DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>::AsyncInvoke()'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a8291fb2c29ace6e80959768d7e614e13',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::AsyncInvoke()'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a1c4342829881ac285f0d839906c9f930',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::AsyncInvoke()']]] ]; diff --git a/doxygen/html/search/all_1.js b/doxygen/html/search/all_1.js index cf16499..683de24 100644 --- a/doxygen/html/search/all_1.js +++ b/doxygen/html/search/all_1.js @@ -1,5 +1,5 @@ var searchData= [ - ['basetype_0',['BaseType',['../class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#a1539d9effc50d7af8624b05b3ec37139',1,'DelegateLib::DelegateFreeAsync< RetType(Args...)>::BaseType'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a2de0939ea659fe15cc57ec93ec2d8d12',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::BaseType'],['../class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a9d842c5708e3ea00df399c46a6e0afdc',1,'DelegateLib::DelegateMemberSpAsync< TClass, RetType(Args...)>::BaseType'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a2a303bc469c86c9f50979caae34f2d51',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::BaseType'],['../class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#aa0a82c2354b7c9f26c88330ba55fd488',1,'DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>::BaseType'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a9ff5f9090f4df372ec92efa8e452a3aa',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::BaseType'],['../class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ac10dd9cc4d129cae578c2be36b5300e2',1,'DelegateLib::DelegateMemberSpAsyncWait< TClass, RetType(Args...)>::BaseType'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a8aacf1bb9e50e7f05526aef37343e241',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::BaseType']]], - ['bind_1',['Bind',['../class_delegate_lib_1_1_delegate_free_3_01_ret_type_07_args_8_8_8_08_4.html#a73c64a35a3d0cbae23a6779a6a53aa19',1,'DelegateLib::DelegateFree< RetType(Args...)>::Bind()'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a2a695e30c79885ec8394cd049301fe24',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::Bind(ObjectPtr object, MemberFunc func)'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a2dcf47b856e718a305b49107349e1d23',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::Bind(ObjectPtr object, ConstMemberFunc func)'],['../class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ac6acec090724fa4e992c05f70f4ac7f6',1,'DelegateLib::DelegateMemberSp< TClass, RetType(Args...)>::Bind(ObjectPtr object, MemberFunc func)'],['../class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a84b41deebe247220c51d751acb069dce',1,'DelegateLib::DelegateMemberSp< TClass, RetType(Args...)>::Bind(ObjectPtr object, ConstMemberFunc func)'],['../class_delegate_lib_1_1_delegate_function_3_01_ret_type_07_args_8_8_8_08_4.html#ae08b89338a2ebf38fe31af77c5f9b400',1,'DelegateLib::DelegateFunction< RetType(Args...)>::Bind()'],['../class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#aba44cf5c963b9b7667cc1ea70023e343',1,'DelegateLib::DelegateFreeAsync< RetType(Args...)>::Bind()'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aaa1df37c6b1b6f9549de0daa981fafcf',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::Bind(ObjectPtr object, MemberFunc func, DelegateThread &thread)'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a00787579ccdcf94fea924f2aa3b05cde',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::Bind(ObjectPtr object, ConstMemberFunc func, DelegateThread &thread)'],['../class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a4a810a41f439b74a0bcbaaf8dd7eb07e',1,'DelegateLib::DelegateMemberSpAsync< TClass, RetType(Args...)>::Bind(ObjectPtr object, MemberFunc func, DelegateThread &thread)'],['../class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a8fa9581587b6d143a9149168eae1855d',1,'DelegateLib::DelegateMemberSpAsync< TClass, RetType(Args...)>::Bind(ObjectPtr object, ConstMemberFunc func, DelegateThread &thread)'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a56758d6e931fbff1cfc3ea97151fd6b5',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::Bind()'],['../class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a8e036665e5b6f1ef58e7fc745d7a9542',1,'DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>::Bind()'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a24c3b8b9fd284963b56d32b2aeaf5bd1',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::Bind(ObjectPtr object, MemberFunc func, DelegateThread &thread)'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#af52d71df3cdb3d55a49e725b63a19d25',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::Bind(ObjectPtr object, ConstMemberFunc func, DelegateThread &thread)'],['../class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aa513bda0b439e89c7c4149a56bc10a10',1,'DelegateLib::DelegateMemberSpAsyncWait< TClass, RetType(Args...)>::Bind(ObjectPtr object, MemberFunc func, DelegateThread &thread)'],['../class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a5e7bbce4e16c5045380edf7003f0493d',1,'DelegateLib::DelegateMemberSpAsyncWait< TClass, RetType(Args...)>::Bind(ObjectPtr object, ConstMemberFunc func, DelegateThread &thread)'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a56245374ac83ac8ae2cb5ea0de8907f8',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::Bind()']]] + ['basetype_0',['BaseType',['../class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#a1539d9effc50d7af8624b05b3ec37139',1,'DelegateLib::DelegateFreeAsync< RetType(Args...)>::BaseType'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a2de0939ea659fe15cc57ec93ec2d8d12',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::BaseType'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a2a303bc469c86c9f50979caae34f2d51',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::BaseType'],['../class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#aa0a82c2354b7c9f26c88330ba55fd488',1,'DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>::BaseType'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a9ff5f9090f4df372ec92efa8e452a3aa',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::BaseType'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a8aacf1bb9e50e7f05526aef37343e241',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::BaseType']]], + ['bind_1',['Bind',['../class_delegate_lib_1_1_delegate_free_3_01_ret_type_07_args_8_8_8_08_4.html#a73c64a35a3d0cbae23a6779a6a53aa19',1,'DelegateLib::DelegateFree< RetType(Args...)>::Bind()'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a9c24220b7f1ef4f21ba66c7c9ef5086b',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::Bind(SharedPtr object, MemberFunc func)'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a6397270ea2b42e123a8ff20d7d5cf7a0',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::Bind(SharedPtr object, ConstMemberFunc func)'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a2a695e30c79885ec8394cd049301fe24',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::Bind(ObjectPtr object, MemberFunc func)'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a2dcf47b856e718a305b49107349e1d23',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::Bind(ObjectPtr object, ConstMemberFunc func)'],['../class_delegate_lib_1_1_delegate_function_3_01_ret_type_07_args_8_8_8_08_4.html#ae08b89338a2ebf38fe31af77c5f9b400',1,'DelegateLib::DelegateFunction< RetType(Args...)>::Bind()'],['../class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#aba44cf5c963b9b7667cc1ea70023e343',1,'DelegateLib::DelegateFreeAsync< RetType(Args...)>::Bind()'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#af10b109e87b2ba4599da6c84e65931c3',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::Bind(SharedPtr object, MemberFunc func, DelegateThread &thread)'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#acc96893f7caf4881d2b3f647465745f4',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::Bind(SharedPtr object, ConstMemberFunc func, DelegateThread &thread)'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aaa1df37c6b1b6f9549de0daa981fafcf',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::Bind(ObjectPtr object, MemberFunc func, DelegateThread &thread)'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a00787579ccdcf94fea924f2aa3b05cde',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::Bind(ObjectPtr object, ConstMemberFunc func, DelegateThread &thread)'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a56758d6e931fbff1cfc3ea97151fd6b5',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::Bind()'],['../class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a8e036665e5b6f1ef58e7fc745d7a9542',1,'DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>::Bind()'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a48971ab5284449ef2402b65922187238',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::Bind(SharedPtr object, MemberFunc func, DelegateThread &thread)'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ae7a040c2bec3f07797b19a6de8481a7f',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::Bind(SharedPtr object, ConstMemberFunc func, DelegateThread &thread)'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a24c3b8b9fd284963b56d32b2aeaf5bd1',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::Bind(ObjectPtr object, MemberFunc func, DelegateThread &thread)'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#af52d71df3cdb3d55a49e725b63a19d25',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::Bind(ObjectPtr object, ConstMemberFunc func, DelegateThread &thread)'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a56245374ac83ac8ae2cb5ea0de8907f8',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::Bind()']]] ]; diff --git a/doxygen/html/search/all_2.js b/doxygen/html/search/all_2.js index 6cf39c9..c729621 100644 --- a/doxygen/html/search/all_2.js +++ b/doxygen/html/search/all_2.js @@ -1,9 +1,9 @@ var searchData= [ ['c_20delegate_20library_20documentation_0',['C++ Delegate Library Documentation',['../index.html',1,'']]], - ['classtype_1',['ClassType',['../class_delegate_lib_1_1_delegate_free_3_01_ret_type_07_args_8_8_8_08_4.html#a683744d6fe8b0318323e70a1e2bd7f92',1,'DelegateLib::DelegateFree< RetType(Args...)>::ClassType'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ac6d4fe0918756c689831ce0651da67e5',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::ClassType'],['../class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a4954075a9bcc8e94918034d957c4dc65',1,'DelegateLib::DelegateMemberSp< TClass, RetType(Args...)>::ClassType'],['../class_delegate_lib_1_1_delegate_function_3_01_ret_type_07_args_8_8_8_08_4.html#a50a948c89c10c03e795303f752c828c7',1,'DelegateLib::DelegateFunction< RetType(Args...)>::ClassType'],['../class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#afb756c92300682fb9c1fd29d74c06d4b',1,'DelegateLib::DelegateFreeAsync< RetType(Args...)>::ClassType'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ae8d8cb10996c1c2294a0169f9dbbed93',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::ClassType'],['../class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#abb7c35431237278eb15b6af710193a11',1,'DelegateLib::DelegateMemberSpAsync< TClass, RetType(Args...)>::ClassType'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a4e95505c52ba0355839a32e2cacc3480',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::ClassType'],['../class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a8ec67602063e92a1ecb98300fac2486c',1,'DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>::ClassType'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ab3d84f71ed07cd925656df197dc15f28',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::ClassType'],['../class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a1f1804370de4dfc3353ad5f9324b1b3b',1,'DelegateLib::DelegateMemberSpAsyncWait< TClass, RetType(Args...)>::ClassType'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#ab18be594adc125473e2967684953ac1c',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::ClassType']]], - ['clear_2',['Clear',['../class_delegate_lib_1_1_delegate_free_3_01_ret_type_07_args_8_8_8_08_4.html#a32daf44235f34ed06a33fb5cdf768842',1,'DelegateLib::DelegateFree< RetType(Args...)>::Clear()'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a94073c6581ff7739523e7c8bfe57caa0',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::Clear()'],['../class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aeb180dc37eff3728a18b178154c892d8',1,'DelegateLib::DelegateMemberSp< TClass, RetType(Args...)>::Clear()'],['../class_delegate_lib_1_1_delegate_function_3_01_ret_type_07_args_8_8_8_08_4.html#a63c632ed0a4fd7a40c27a8f05dbefa50',1,'DelegateLib::DelegateFunction< RetType(Args...)>::Clear()'],['../class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#acbfa6d7a2393fb734d3ba38b794809b7',1,'DelegateLib::MulticastDelegate< RetType(Args...)>::Clear()'],['../class_delegate_lib_1_1_multicast_delegate_safe_3_01_ret_type_07_args_8_8_8_08_4.html#a9732c67d0b37b2418fc776a4a6d5c26d',1,'DelegateLib::MulticastDelegateSafe< RetType(Args...)>::Clear()'],['../class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#af44894cbde71e2cae0687381f5e07eff',1,'DelegateLib::SinglecastDelegate< RetType(Args...)>::Clear()']]], - ['clone_3',['Clone',['../class_delegate_lib_1_1_delegate_base.html#a1167262e335827e9471abceba1321266',1,'DelegateLib::DelegateBase::Clone()'],['../class_delegate_lib_1_1_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a8ae51fd14e2d7f0193f394095c3f6ed0',1,'DelegateLib::Delegate< RetType(Args...)>::Clone()'],['../class_delegate_lib_1_1_delegate_free_3_01_ret_type_07_args_8_8_8_08_4.html#a6d5ded6c118f909f556b9596737a2347',1,'DelegateLib::DelegateFree< RetType(Args...)>::Clone()'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#af4eb4fba1da063063b5d4ba47de4299a',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::Clone()'],['../class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a1a96cd942064f5d6b68ad6dedd0213d1',1,'DelegateLib::DelegateMemberSp< TClass, RetType(Args...)>::Clone()'],['../class_delegate_lib_1_1_delegate_function_3_01_ret_type_07_args_8_8_8_08_4.html#aff35a45eb0c37f87d4a566c3fabd0850',1,'DelegateLib::DelegateFunction< RetType(Args...)>::Clone()'],['../class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#afe0877cb9e0d97f5b5ca408de1562b89',1,'DelegateLib::DelegateFreeAsync< RetType(Args...)>::Clone()'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#acbd04f7121278e2dae40311c4f303d9b',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::Clone()'],['../class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#af3bd3f99355e53854fc17d086a7a95c9',1,'DelegateLib::DelegateMemberSpAsync< TClass, RetType(Args...)>::Clone()'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a12be5d3ae814bea5de0df73d2807bedd',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::Clone()'],['../class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#ac4e2726464bd640ef6c7993afe95e1ca',1,'DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>::Clone()'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a2f80842f6fce3a49b26fd09d5f0ed283',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::Clone()'],['../class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ac1e27a71399c2444f302bfec7c21ae44',1,'DelegateLib::DelegateMemberSpAsyncWait< TClass, RetType(Args...)>::Clone()'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a06308fd077f75299814b78d042e52ac0',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::Clone()']]], - ['constmemberfunc_4',['ConstMemberFunc',['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ab639313353b5269e652b72883adc5c61',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::ConstMemberFunc'],['../class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a39411e3d1ce79d3998abbfb8f8594ea0',1,'DelegateLib::DelegateMemberSp< TClass, RetType(Args...)>::ConstMemberFunc'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a20a9019042525729f704966658bb17ce',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::ConstMemberFunc'],['../class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a20c4516e4e96bdf99ce34dbd433bb7ed',1,'DelegateLib::DelegateMemberSpAsync< TClass, RetType(Args...)>::ConstMemberFunc'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ad39ce01bd33617cb77b82ab93dc9284a',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::ConstMemberFunc'],['../class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a37cb6e6d0db0f7f7beb011064e92804c',1,'DelegateLib::DelegateMemberSpAsyncWait< TClass, RetType(Args...)>::ConstMemberFunc']]], + ['classtype_1',['ClassType',['../class_delegate_lib_1_1_delegate_free_3_01_ret_type_07_args_8_8_8_08_4.html#a683744d6fe8b0318323e70a1e2bd7f92',1,'DelegateLib::DelegateFree< RetType(Args...)>::ClassType'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ac6d4fe0918756c689831ce0651da67e5',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::ClassType'],['../class_delegate_lib_1_1_delegate_function_3_01_ret_type_07_args_8_8_8_08_4.html#a50a948c89c10c03e795303f752c828c7',1,'DelegateLib::DelegateFunction< RetType(Args...)>::ClassType'],['../class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#afb756c92300682fb9c1fd29d74c06d4b',1,'DelegateLib::DelegateFreeAsync< RetType(Args...)>::ClassType'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ae8d8cb10996c1c2294a0169f9dbbed93',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::ClassType'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a4e95505c52ba0355839a32e2cacc3480',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::ClassType'],['../class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a8ec67602063e92a1ecb98300fac2486c',1,'DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>::ClassType'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ab3d84f71ed07cd925656df197dc15f28',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::ClassType'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#ab18be594adc125473e2967684953ac1c',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::ClassType']]], + ['clear_2',['Clear',['../class_delegate_lib_1_1_delegate_free_3_01_ret_type_07_args_8_8_8_08_4.html#a32daf44235f34ed06a33fb5cdf768842',1,'DelegateLib::DelegateFree< RetType(Args...)>::Clear()'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a94073c6581ff7739523e7c8bfe57caa0',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::Clear()'],['../class_delegate_lib_1_1_delegate_function_3_01_ret_type_07_args_8_8_8_08_4.html#a63c632ed0a4fd7a40c27a8f05dbefa50',1,'DelegateLib::DelegateFunction< RetType(Args...)>::Clear()'],['../class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#acbfa6d7a2393fb734d3ba38b794809b7',1,'DelegateLib::MulticastDelegate< RetType(Args...)>::Clear()'],['../class_delegate_lib_1_1_multicast_delegate_safe_3_01_ret_type_07_args_8_8_8_08_4.html#a9732c67d0b37b2418fc776a4a6d5c26d',1,'DelegateLib::MulticastDelegateSafe< RetType(Args...)>::Clear()'],['../class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#af44894cbde71e2cae0687381f5e07eff',1,'DelegateLib::SinglecastDelegate< RetType(Args...)>::Clear()']]], + ['clone_3',['Clone',['../class_delegate_lib_1_1_delegate_base.html#a1167262e335827e9471abceba1321266',1,'DelegateLib::DelegateBase::Clone()'],['../class_delegate_lib_1_1_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a8ae51fd14e2d7f0193f394095c3f6ed0',1,'DelegateLib::Delegate< RetType(Args...)>::Clone()'],['../class_delegate_lib_1_1_delegate_free_3_01_ret_type_07_args_8_8_8_08_4.html#a6d5ded6c118f909f556b9596737a2347',1,'DelegateLib::DelegateFree< RetType(Args...)>::Clone()'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#af4eb4fba1da063063b5d4ba47de4299a',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::Clone()'],['../class_delegate_lib_1_1_delegate_function_3_01_ret_type_07_args_8_8_8_08_4.html#aff35a45eb0c37f87d4a566c3fabd0850',1,'DelegateLib::DelegateFunction< RetType(Args...)>::Clone()'],['../class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#afe0877cb9e0d97f5b5ca408de1562b89',1,'DelegateLib::DelegateFreeAsync< RetType(Args...)>::Clone()'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#acbd04f7121278e2dae40311c4f303d9b',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::Clone()'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a12be5d3ae814bea5de0df73d2807bedd',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::Clone()'],['../class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#ac4e2726464bd640ef6c7993afe95e1ca',1,'DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>::Clone()'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a2f80842f6fce3a49b26fd09d5f0ed283',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::Clone()'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a06308fd077f75299814b78d042e52ac0',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::Clone()']]], + ['constmemberfunc_4',['ConstMemberFunc',['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ab639313353b5269e652b72883adc5c61',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::ConstMemberFunc'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a20a9019042525729f704966658bb17ce',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::ConstMemberFunc'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ad39ce01bd33617cb77b82ab93dc9284a',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::ConstMemberFunc']]], ['copy_5fcommon_5fcode_5',['copy_common_code',['../namespacesrc__dup.html#afc752b49e0a83100098f19079eaafef1',1,'src_dup']]] ]; diff --git a/doxygen/html/search/all_3.js b/doxygen/html/search/all_3.js index 955e48a..2525973 100644 --- a/doxygen/html/search/all_3.js +++ b/doxygen/html/search/all_3.js @@ -17,31 +17,25 @@ var searchData= ['delegatefreeasyncwait_3c_20rettype_28args_2e_2e_2e_29_3e_14',['DelegateFreeAsyncWait< RetType(Args...)>',['../class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html',1,'DelegateLib']]], ['delegatefunction_15',['DelegateFunction',['../class_delegate_lib_1_1_delegate_function.html',1,'DelegateLib::DelegateFunction< R >'],['../class_delegate_lib_1_1_delegate_function_3_01_ret_type_07_args_8_8_8_08_4.html#a4f5654f2336389d28212ec1d38c7f56d',1,'DelegateLib::DelegateFunction< RetType(Args...)>::DelegateFunction(FunctionType func)'],['../class_delegate_lib_1_1_delegate_function_3_01_ret_type_07_args_8_8_8_08_4.html#a1a92291f285ef7ef68cdc61b2201c5b5',1,'DelegateLib::DelegateFunction< RetType(Args...)>::DelegateFunction(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_function_3_01_ret_type_07_args_8_8_8_08_4.html#ae75aab7b61893e8c842451491f72be23',1,'DelegateLib::DelegateFunction< RetType(Args...)>::DelegateFunction(ClassType &&rhs) noexcept'],['../class_delegate_lib_1_1_delegate_function_3_01_ret_type_07_args_8_8_8_08_4.html#a7080af7cb53567524dcfa05eb092c427',1,'DelegateLib::DelegateFunction< RetType(Args...)>::DelegateFunction()=default']]], ['delegatefunction_3c_20rettype_28args_2e_2e_2e_29_3e_16',['DelegateFunction< RetType(Args...)>',['../class_delegate_lib_1_1_delegate_function_3_01_ret_type_07_args_8_8_8_08_4.html',1,'DelegateLib']]], - ['delegatefunctionasync_17',['DelegateFunctionAsync',['../struct_delegate_lib_1_1_delegate_function_async.html',1,'DelegateLib::DelegateFunctionAsync< R >'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a46501e1a3392ed1d13e3f3cba8eb2df0',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::DelegateFunctionAsync(FunctionType func, DelegateThread &thread)'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a2fb983602c9e3fcecc54907f13b748ce',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::DelegateFunctionAsync(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#ae32a58387b3b00e002763f3244310fab',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::DelegateFunctionAsync()=delete']]], + ['delegatefunctionasync_17',['DelegateFunctionAsync',['../struct_delegate_lib_1_1_delegate_function_async.html',1,'DelegateLib::DelegateFunctionAsync< R >'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a46501e1a3392ed1d13e3f3cba8eb2df0',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::DelegateFunctionAsync(FunctionType func, DelegateThread &thread)'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a2fb983602c9e3fcecc54907f13b748ce',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::DelegateFunctionAsync(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#adeef2c1b2f887384a21024779b298445',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::DelegateFunctionAsync(ClassType &&rhs) noexcept'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#ae32a58387b3b00e002763f3244310fab',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::DelegateFunctionAsync()=delete']]], ['delegatefunctionasync_3c_20rettype_28args_2e_2e_2e_29_3e_18',['DelegateFunctionAsync< RetType(Args...)>',['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html',1,'DelegateLib']]], - ['delegatefunctionasyncwait_19',['DelegateFunctionAsyncWait',['../struct_delegate_lib_1_1_delegate_function_async_wait.html',1,'DelegateLib::DelegateFunctionAsyncWait< R >'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a12fee611f64b1ff921f144456f735c34',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::DelegateFunctionAsyncWait(FunctionType func, DelegateThread &thread, std::chrono::milliseconds timeout=WAIT_INFINITE)'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a49ee2d06133beb8f1f97d9435dd233d8',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::DelegateFunctionAsyncWait(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#afae9b073f590b47117d0ee00e100b7e2',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::DelegateFunctionAsyncWait()=delete']]], + ['delegatefunctionasyncwait_19',['DelegateFunctionAsyncWait',['../struct_delegate_lib_1_1_delegate_function_async_wait.html',1,'DelegateLib::DelegateFunctionAsyncWait< R >'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a12fee611f64b1ff921f144456f735c34',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::DelegateFunctionAsyncWait(FunctionType func, DelegateThread &thread, std::chrono::milliseconds timeout=WAIT_INFINITE)'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a49ee2d06133beb8f1f97d9435dd233d8',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::DelegateFunctionAsyncWait(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a61de38703ed39347662b0d523940751a',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::DelegateFunctionAsyncWait(ClassType &&rhs) noexcept'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#afae9b073f590b47117d0ee00e100b7e2',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::DelegateFunctionAsyncWait()=delete']]], ['delegatefunctionasyncwait_3c_20rettype_28args_2e_2e_2e_29_3e_20',['DelegateFunctionAsyncWait< RetType(Args...)>',['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html',1,'DelegateLib']]], - ['delegateinvoke_21',['DelegateInvoke',['../class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#a18d39e4e8e3e6906fd9c07ada1ac5bc6',1,'DelegateLib::DelegateFreeAsync< RetType(Args...)>::DelegateInvoke()'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a97ee00052f6de71e7910784dce3b0fa4',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::DelegateInvoke()'],['../class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a2402ad65efec989ec7d9bc671ec066ae',1,'DelegateLib::DelegateMemberSpAsync< TClass, RetType(Args...)>::DelegateInvoke()'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a56930924ffa7d6662874675263e89bc5',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::DelegateInvoke()'],['../class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#aeca8d0211d34404e9fd2ecb4d0d356b9',1,'DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>::DelegateInvoke()'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a20e9f7755ba4b19fb12988da5f8fe6f7',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::DelegateInvoke()'],['../class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a89a54b3aa7333005761c42b4335d728a',1,'DelegateLib::DelegateMemberSpAsyncWait< TClass, RetType(Args...)>::DelegateInvoke()'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a8a0cfe8f1e6f7bc06c161a1f210c6aa7',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::DelegateInvoke()'],['../class_delegate_lib_1_1_i_delegate_invoker.html#a1386e5a1c2650fb1e5511a16cbb5b1f6',1,'DelegateLib::IDelegateInvoker::DelegateInvoke()']]], + ['delegateinvoke_21',['DelegateInvoke',['../class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#a24785156e3b7888a423a9d4a71573e40',1,'DelegateLib::DelegateFreeAsync< RetType(Args...)>::DelegateInvoke()'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a470bad2bda18c47a169b88a923d06fa6',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::DelegateInvoke()'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a2091d50db4b3be6334c66dc8a5b8fddc',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::DelegateInvoke()'],['../class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#aeca8d0211d34404e9fd2ecb4d0d356b9',1,'DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>::DelegateInvoke()'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a20e9f7755ba4b19fb12988da5f8fe6f7',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::DelegateInvoke()'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a8a0cfe8f1e6f7bc06c161a1f210c6aa7',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::DelegateInvoke()'],['../class_delegate_lib_1_1_i_delegate_invoker.html#a1386e5a1c2650fb1e5511a16cbb5b1f6',1,'DelegateLib::IDelegateInvoker::DelegateInvoke()']]], ['delegateinvoker_2eh_22',['DelegateInvoker.h',['../_delegate_invoker_8h.html',1,'']]], ['delegatelib_23',['DelegateLib',['../namespace_delegate_lib.html',1,'']]], ['delegatelib_2eh_24',['DelegateLib.h',['../_delegate_lib_8h.html',1,'']]], - ['delegatemember_25',['DelegateMember',['../struct_delegate_lib_1_1_delegate_member.html',1,'DelegateLib::DelegateMember< C, R >'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ac0ebe807ef2e92dab70422a6f97a461f',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::DelegateMember(ObjectPtr object, MemberFunc func)'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ab772a635e195f3553f9c43f344b262df',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::DelegateMember(ObjectPtr object, ConstMemberFunc func)'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a322dd315ac65ec9fc88616913cf222c3',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::DelegateMember(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a5fc8a23d96dfd6c0fda2d7e9d73966a5',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::DelegateMember(ClassType &&rhs) noexcept'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a4ab91c91146c582b15ad0231b539323f',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::DelegateMember()=default']]], + ['delegatemember_25',['DelegateMember',['../struct_delegate_lib_1_1_delegate_member.html',1,'DelegateLib::DelegateMember< C, R >'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a39bb526ecf387e3ce23603c0ddab26ea',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::DelegateMember(SharedPtr object, MemberFunc func)'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a6ea857874b53a0a99a2cfe20ad31e266',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::DelegateMember(SharedPtr object, ConstMemberFunc func)'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ac0ebe807ef2e92dab70422a6f97a461f',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::DelegateMember(ObjectPtr object, MemberFunc func)'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ab772a635e195f3553f9c43f344b262df',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::DelegateMember(ObjectPtr object, ConstMemberFunc func)'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a322dd315ac65ec9fc88616913cf222c3',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::DelegateMember(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a5fc8a23d96dfd6c0fda2d7e9d73966a5',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::DelegateMember(ClassType &&rhs) noexcept'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a4ab91c91146c582b15ad0231b539323f',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::DelegateMember()=default']]], ['delegatemember_3c_20tclass_2c_20rettype_28args_2e_2e_2e_29_3e_26',['DelegateMember< TClass, RetType(Args...)>',['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html',1,'DelegateLib']]], - ['delegatememberasync_27',['DelegateMemberAsync',['../struct_delegate_lib_1_1_delegate_member_async.html',1,'DelegateLib::DelegateMemberAsync< C, R >'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a8fe4844542d5e2881cb85e7c5f8cc1c9',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::DelegateMemberAsync(ObjectPtr object, MemberFunc func, DelegateThread &thread)'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a797d31931f53b5c43c75b712e2c4acc1',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::DelegateMemberAsync(ObjectPtr object, ConstMemberFunc func, DelegateThread &thread)'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a222976657b434d64f0c3a6d5dc4426c4',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::DelegateMemberAsync(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a498aee49e9441a11f859ead02545b79c',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::DelegateMemberAsync()=delete']]], + ['delegatememberasync_27',['DelegateMemberAsync',['../struct_delegate_lib_1_1_delegate_member_async.html',1,'DelegateLib::DelegateMemberAsync< C, R >'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#afff94fad479eda85f2c93d35187221c0',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::DelegateMemberAsync(SharedPtr object, MemberFunc func, DelegateThread &thread)'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a4f4eceeb29f6e3f4afe18baeccb43e82',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::DelegateMemberAsync(SharedPtr object, ConstMemberFunc func, DelegateThread &thread)'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a8fe4844542d5e2881cb85e7c5f8cc1c9',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::DelegateMemberAsync(ObjectPtr object, MemberFunc func, DelegateThread &thread)'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a797d31931f53b5c43c75b712e2c4acc1',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::DelegateMemberAsync(ObjectPtr object, ConstMemberFunc func, DelegateThread &thread)'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a222976657b434d64f0c3a6d5dc4426c4',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::DelegateMemberAsync(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ad28ce245f32ae9de24542789d8727005',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::DelegateMemberAsync(ClassType &&rhs) noexcept'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a498aee49e9441a11f859ead02545b79c',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::DelegateMemberAsync()=delete']]], ['delegatememberasync_3c_20tclass_2c_20rettype_28args_2e_2e_2e_29_3e_28',['DelegateMemberAsync< TClass, RetType(Args...)>',['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html',1,'DelegateLib']]], - ['delegatememberasyncwait_29',['DelegateMemberAsyncWait',['../struct_delegate_lib_1_1_delegate_member_async_wait.html',1,'DelegateLib::DelegateMemberAsyncWait< C, R >'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a9c9a5f01b71911ff87ce41da11d9bd76',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::DelegateMemberAsyncWait(ObjectPtr object, MemberFunc func, DelegateThread &thread, std::chrono::milliseconds timeout=WAIT_INFINITE)'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a3e831f0389d2ddfa37c5c6a24f145dd4',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::DelegateMemberAsyncWait(ObjectPtr object, ConstMemberFunc func, DelegateThread &thread, std::chrono::milliseconds timeout)'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a0b1ea98a55b2871d5b21c3d85d811baf',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::DelegateMemberAsyncWait(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a93fccd873d370ab1c6ce08a8d731a85e',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::DelegateMemberAsyncWait()=delete']]], + ['delegatememberasyncwait_29',['DelegateMemberAsyncWait',['../struct_delegate_lib_1_1_delegate_member_async_wait.html',1,'DelegateLib::DelegateMemberAsyncWait< C, R >'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ada8b19fb76daac6e38fc5684a8217112',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::DelegateMemberAsyncWait(SharedPtr object, MemberFunc func, DelegateThread &thread, std::chrono::milliseconds timeout=WAIT_INFINITE)'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#afe99f7555a4c36ba95a08267bf5bb85d',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::DelegateMemberAsyncWait(SharedPtr object, ConstMemberFunc func, DelegateThread &thread, std::chrono::milliseconds timeout)'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a9c9a5f01b71911ff87ce41da11d9bd76',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::DelegateMemberAsyncWait(ObjectPtr object, MemberFunc func, DelegateThread &thread, std::chrono::milliseconds timeout=WAIT_INFINITE)'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a3e831f0389d2ddfa37c5c6a24f145dd4',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::DelegateMemberAsyncWait(ObjectPtr object, ConstMemberFunc func, DelegateThread &thread, std::chrono::milliseconds timeout)'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a0b1ea98a55b2871d5b21c3d85d811baf',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::DelegateMemberAsyncWait(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a4c6ecc8941ffa3e74bc21bebc94f8c6d',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::DelegateMemberAsyncWait(ClassType &&rhs) noexcept'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a93fccd873d370ab1c6ce08a8d731a85e',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::DelegateMemberAsyncWait()=delete']]], ['delegatememberasyncwait_3c_20tclass_2c_20rettype_28args_2e_2e_2e_29_3e_30',['DelegateMemberAsyncWait< TClass, RetType(Args...)>',['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html',1,'DelegateLib']]], - ['delegatemembersp_31',['DelegateMemberSp',['../struct_delegate_lib_1_1_delegate_member_sp.html',1,'DelegateLib::DelegateMemberSp< C, R >'],['../class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a59cd7235ba47985fddfe207a077da59b',1,'DelegateLib::DelegateMemberSp< TClass, RetType(Args...)>::DelegateMemberSp(ObjectPtr object, MemberFunc func)'],['../class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a1441cf9d3f8294e73138f88ec0296749',1,'DelegateLib::DelegateMemberSp< TClass, RetType(Args...)>::DelegateMemberSp(ObjectPtr object, ConstMemberFunc func)'],['../class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aec2c3e4602c84a524c72e6f0833170e3',1,'DelegateLib::DelegateMemberSp< TClass, RetType(Args...)>::DelegateMemberSp(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ab0cbc1c7a24738c53121efa1149e24f2',1,'DelegateLib::DelegateMemberSp< TClass, RetType(Args...)>::DelegateMemberSp(ClassType &&rhs) noexcept'],['../class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a030851905e967595316455be555e2837',1,'DelegateLib::DelegateMemberSp< TClass, RetType(Args...)>::DelegateMemberSp()=default']]], - ['delegatemembersp_3c_20tclass_2c_20rettype_28args_2e_2e_2e_29_3e_32',['DelegateMemberSp< TClass, RetType(Args...)>',['../class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html',1,'DelegateLib']]], - ['delegatememberspasync_33',['DelegateMemberSpAsync',['../struct_delegate_lib_1_1_delegate_member_sp_async.html',1,'DelegateLib::DelegateMemberSpAsync< C, R >'],['../class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ac13850e9003f5cd8cb81077b6011b76a',1,'DelegateLib::DelegateMemberSpAsync< TClass, RetType(Args...)>::DelegateMemberSpAsync(ObjectPtr object, MemberFunc func, DelegateThread &thread)'],['../class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a0415b2d8187f48557166d43ee5746b8e',1,'DelegateLib::DelegateMemberSpAsync< TClass, RetType(Args...)>::DelegateMemberSpAsync(ObjectPtr object, ConstMemberFunc func, DelegateThread &thread)'],['../class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a4aae9e2e271efa00a60d6f6c61d454ec',1,'DelegateLib::DelegateMemberSpAsync< TClass, RetType(Args...)>::DelegateMemberSpAsync(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a95abbb7549ad531efec4a5fe629ca925',1,'DelegateLib::DelegateMemberSpAsync< TClass, RetType(Args...)>::DelegateMemberSpAsync()=delete']]], - ['delegatememberspasync_3c_20tclass_2c_20rettype_28args_2e_2e_2e_29_3e_34',['DelegateMemberSpAsync< TClass, RetType(Args...)>',['../class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html',1,'DelegateLib']]], - ['delegatememberspasyncwait_35',['DelegateMemberSpAsyncWait',['../struct_delegate_lib_1_1_delegate_member_sp_async_wait.html',1,'DelegateLib::DelegateMemberSpAsyncWait< C, R >'],['../class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a9da9fefa1174dd4d2c5f8eb398a9ea97',1,'DelegateLib::DelegateMemberSpAsyncWait< TClass, RetType(Args...)>::DelegateMemberSpAsyncWait(ObjectPtr object, MemberFunc func, DelegateThread &thread, std::chrono::milliseconds timeout=WAIT_INFINITE)'],['../class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a8b5495da7bbed3d691b5b7881c495018',1,'DelegateLib::DelegateMemberSpAsyncWait< TClass, RetType(Args...)>::DelegateMemberSpAsyncWait(ObjectPtr object, ConstMemberFunc func, DelegateThread &thread, std::chrono::milliseconds timeout)'],['../class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a6e64aa7476c1cc451d8ac21f660953a8',1,'DelegateLib::DelegateMemberSpAsyncWait< TClass, RetType(Args...)>::DelegateMemberSpAsyncWait(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aad11185618821cd2a0cfa68dc2af1e25',1,'DelegateLib::DelegateMemberSpAsyncWait< TClass, RetType(Args...)>::DelegateMemberSpAsyncWait()=delete']]], - ['delegatememberspasyncwait_3c_20tclass_2c_20rettype_28args_2e_2e_2e_29_3e_36',['DelegateMemberSpAsyncWait< TClass, RetType(Args...)>',['../class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html',1,'DelegateLib']]], - ['delegatemsg_37',['DelegateMsg',['../class_delegate_lib_1_1_delegate_msg.html',1,'DelegateLib::DelegateMsg'],['../class_delegate_lib_1_1_delegate_msg.html#ad0ce3c1203f3f485d18b2be60f8bf703',1,'DelegateLib::DelegateMsg::DelegateMsg()']]], - ['delegatemsg_2eh_38',['DelegateMsg.h',['../_delegate_msg_8h.html',1,'']]], - ['delegateopt_2eh_39',['DelegateOpt.h',['../_delegate_opt_8h.html',1,'']]], - ['delegatethread_40',['DelegateThread',['../class_delegate_lib_1_1_delegate_thread.html',1,'DelegateLib']]], - ['delegatethread_2eh_41',['DelegateThread.h',['../_delegate_thread_8h.html',1,'']]], - ['dispatchdelegate_42',['DispatchDelegate',['../class_delegate_lib_1_1_delegate_thread.html#a9a69145597e92bd096062489b14560ad',1,'DelegateLib::DelegateThread']]], - ['documentation_43',['C++ Delegate Library Documentation',['../index.html',1,'']]] + ['delegatemsg_31',['DelegateMsg',['../class_delegate_lib_1_1_delegate_msg.html',1,'DelegateLib::DelegateMsg'],['../class_delegate_lib_1_1_delegate_msg.html#ad0ce3c1203f3f485d18b2be60f8bf703',1,'DelegateLib::DelegateMsg::DelegateMsg()']]], + ['delegatemsg_2eh_32',['DelegateMsg.h',['../_delegate_msg_8h.html',1,'']]], + ['delegateopt_2eh_33',['DelegateOpt.h',['../_delegate_opt_8h.html',1,'']]], + ['delegatethread_34',['DelegateThread',['../class_delegate_lib_1_1_delegate_thread.html',1,'DelegateLib']]], + ['delegatethread_2eh_35',['DelegateThread.h',['../_delegate_thread_8h.html',1,'']]], + ['dispatchdelegate_36',['DispatchDelegate',['../class_delegate_lib_1_1_delegate_thread.html#a9a69145597e92bd096062489b14560ad',1,'DelegateLib::DelegateThread']]], + ['documentation_37',['C++ Delegate Library Documentation',['../index.html',1,'']]] ]; diff --git a/doxygen/html/search/all_4.js b/doxygen/html/search/all_4.js index 35d8459..c470b51 100644 --- a/doxygen/html/search/all_4.js +++ b/doxygen/html/search/all_4.js @@ -1,4 +1,4 @@ var searchData= [ - ['empty_0',['Empty',['../class_delegate_lib_1_1_delegate_free_3_01_ret_type_07_args_8_8_8_08_4.html#af8f7c7ac3313f9d219d92272b104024a',1,'DelegateLib::DelegateFree< RetType(Args...)>::Empty()'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aa34f567d476fb8cba1d28d7ec664e3e2',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::Empty()'],['../class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a5159e7d96232836114759797744dd933',1,'DelegateLib::DelegateMemberSp< TClass, RetType(Args...)>::Empty()'],['../class_delegate_lib_1_1_delegate_function_3_01_ret_type_07_args_8_8_8_08_4.html#a957f06ccfe0a582b17c0e30edb3caff5',1,'DelegateLib::DelegateFunction< RetType(Args...)>::Empty()'],['../class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#aecd5f8e6240ee6a7bc748162ef9e46cd',1,'DelegateLib::MulticastDelegate< RetType(Args...)>::Empty()'],['../class_delegate_lib_1_1_multicast_delegate_safe_3_01_ret_type_07_args_8_8_8_08_4.html#aafcf6d25ef4c29c27fcffc7d1c56075c',1,'DelegateLib::MulticastDelegateSafe< RetType(Args...)>::Empty()'],['../class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a2cee3825995b4400eb0924c3bc54b382',1,'DelegateLib::SinglecastDelegate< RetType(Args...)>::Empty()']]] + ['empty_0',['Empty',['../class_delegate_lib_1_1_delegate_free_3_01_ret_type_07_args_8_8_8_08_4.html#af8f7c7ac3313f9d219d92272b104024a',1,'DelegateLib::DelegateFree< RetType(Args...)>::Empty()'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aa34f567d476fb8cba1d28d7ec664e3e2',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::Empty()'],['../class_delegate_lib_1_1_delegate_function_3_01_ret_type_07_args_8_8_8_08_4.html#a957f06ccfe0a582b17c0e30edb3caff5',1,'DelegateLib::DelegateFunction< RetType(Args...)>::Empty()'],['../class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#aecd5f8e6240ee6a7bc748162ef9e46cd',1,'DelegateLib::MulticastDelegate< RetType(Args...)>::Empty()'],['../class_delegate_lib_1_1_multicast_delegate_safe_3_01_ret_type_07_args_8_8_8_08_4.html#aafcf6d25ef4c29c27fcffc7d1c56075c',1,'DelegateLib::MulticastDelegateSafe< RetType(Args...)>::Empty()'],['../class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a2cee3825995b4400eb0924c3bc54b382',1,'DelegateLib::SinglecastDelegate< RetType(Args...)>::Empty()']]] ]; diff --git a/doxygen/html/search/all_6.js b/doxygen/html/search/all_6.js index 5c25dcb..8ffb1ef 100644 --- a/doxygen/html/search/all_6.js +++ b/doxygen/html/search/all_6.js @@ -4,8 +4,8 @@ var searchData= ['getdelegateinvoker_1',['GetDelegateInvoker',['../class_delegate_lib_1_1_delegate_msg.html#a61f5dfba67aa879a51239f6c1edbd446',1,'DelegateLib::DelegateMsg']]], ['getinvokerwaiting_2',['GetInvokerWaiting',['../class_delegate_lib_1_1_delegate_async_wait_msg.html#ae36cc3b75be6d2698213ef25c43ad390',1,'DelegateLib::DelegateAsyncWaitMsg']]], ['getlock_3',['GetLock',['../class_delegate_lib_1_1_delegate_async_wait_msg.html#ac8ca2d43973ccf4141747494448cd930',1,'DelegateLib::DelegateAsyncWaitMsg']]], - ['getretval_4',['GetRetVal',['../class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a1c22a234daf732b6818127a5311572f4',1,'DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>::GetRetVal()'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a4f336c0ec1773959bdc114685a493ac3',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::GetRetVal()'],['../class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a4ab380c00f346e894c9f27658d512bb4',1,'DelegateLib::DelegateMemberSpAsyncWait< TClass, RetType(Args...)>::GetRetVal()'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a19e32658a811a5b584436505c46d8cf7',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::GetRetVal()']]], + ['getretval_4',['GetRetVal',['../class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a1c22a234daf732b6818127a5311572f4',1,'DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>::GetRetVal()'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a4f336c0ec1773959bdc114685a493ac3',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::GetRetVal()'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a19e32658a811a5b584436505c46d8cf7',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::GetRetVal()']]], ['getsema_5',['GetSema',['../class_delegate_lib_1_1_delegate_async_wait_msg.html#a6730a8609639d49721dbe2389971e3bb',1,'DelegateLib::DelegateAsyncWaitMsg']]], - ['getsync_6',['GetSync',['../class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#a73fa99c10f6b68b771bb8e83adffc444',1,'DelegateLib::DelegateFreeAsync< RetType(Args...)>::GetSync()'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aec8a8636e131eb2746311426dacb7490',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::GetSync()'],['../class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a469f4b8d8536cfc049d4767fffdd3a15',1,'DelegateLib::DelegateMemberSpAsync< TClass, RetType(Args...)>::GetSync()'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a24d22901f60ab741597e253b7f02c174',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::GetSync()']]], - ['getthread_7',['GetThread',['../class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#ad5e3487debe918c8c62d23a94bd9aac8',1,'DelegateLib::DelegateFreeAsync< RetType(Args...)>::GetThread()'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aca30b381dee966dc0dab34e41080af4e',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::GetThread()'],['../class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ae2028e6668b1e1f4ab8538d9e4be230a',1,'DelegateLib::DelegateMemberSpAsync< TClass, RetType(Args...)>::GetThread()'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#aeafdaa26caccb52408afe591e5c54aca',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::GetThread()']]] + ['getsync_6',['GetSync',['../class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#a73fa99c10f6b68b771bb8e83adffc444',1,'DelegateLib::DelegateFreeAsync< RetType(Args...)>::GetSync()'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aec8a8636e131eb2746311426dacb7490',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::GetSync()'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a24d22901f60ab741597e253b7f02c174',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::GetSync()']]], + ['getthread_7',['GetThread',['../class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#ad5e3487debe918c8c62d23a94bd9aac8',1,'DelegateLib::DelegateFreeAsync< RetType(Args...)>::GetThread()'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aca30b381dee966dc0dab34e41080af4e',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::GetThread()'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#aeafdaa26caccb52408afe591e5c54aca',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::GetThread()']]] ]; diff --git a/doxygen/html/search/all_8.js b/doxygen/html/search/all_8.js index 6340908..7d78749 100644 --- a/doxygen/html/search/all_8.js +++ b/doxygen/html/search/all_8.js @@ -8,5 +8,5 @@ var searchData= ['is_5fshared_5fptr_3c_20std_3a_3ashared_5fptr_3c_20t_20_3e_20_26_20_3e_5',['is_shared_ptr< std::shared_ptr< T > & >',['../struct_delegate_lib_1_1is__shared__ptr_3_01std_1_1shared__ptr_3_01_t_01_4_01_6_01_4.html',1,'DelegateLib']]], ['is_5fshared_5fptr_3c_20std_3a_3ashared_5fptr_3c_20t_20_3e_20_2a_20_3e_6',['is_shared_ptr< std::shared_ptr< T > * >',['../struct_delegate_lib_1_1is__shared__ptr_3_01std_1_1shared__ptr_3_01_t_01_4_01_5_01_4.html',1,'DelegateLib']]], ['is_5fshared_5fptr_3c_20std_3a_3ashared_5fptr_3c_20t_20_3e_20_3e_7',['is_shared_ptr< std::shared_ptr< T > >',['../struct_delegate_lib_1_1is__shared__ptr_3_01std_1_1shared__ptr_3_01_t_01_4_01_4.html',1,'DelegateLib']]], - ['issuccess_8',['IsSuccess',['../class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a14fd5bec6ca0f9a293d0aade1848ca32',1,'DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>::IsSuccess()'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ae14cab8e15a5b33521f4a4e54a8fcdce',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::IsSuccess()'],['../class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#af04d07b743e8adb23111a837dea21185',1,'DelegateLib::DelegateMemberSpAsyncWait< TClass, RetType(Args...)>::IsSuccess()'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a5e9ae067e7bc5c3621a6ad80d39cd0bc',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::IsSuccess()']]] + ['issuccess_8',['IsSuccess',['../class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a14fd5bec6ca0f9a293d0aade1848ca32',1,'DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>::IsSuccess()'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ae14cab8e15a5b33521f4a4e54a8fcdce',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::IsSuccess()'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a5e9ae067e7bc5c3621a6ad80d39cd0bc',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::IsSuccess()']]] ]; diff --git a/doxygen/html/search/all_a.js b/doxygen/html/search/all_a.js index cc336ac..ae35c7a 100644 --- a/doxygen/html/search/all_a.js +++ b/doxygen/html/search/all_a.js @@ -2,8 +2,8 @@ var searchData= [ ['make_5ftuple_5fheap_0',['make_tuple_heap',['../namespace_delegate_lib.html#aaec1863ccd49b0020b485d9755ab4705',1,'DelegateLib::make_tuple_heap(xlist< std::shared_ptr< heap_arg_deleter_base > > &heapArgs, std::tuple< Ts... > tup)'],['../namespace_delegate_lib.html#a501fbd3f7de67128ab8cc37154f34cb5',1,'DelegateLib::make_tuple_heap(xlist< std::shared_ptr< heap_arg_deleter_base > > &heapArgs, std::tuple< Ts... > tup, Arg1 arg1, Args... args)']]], ['make_5ftuple_5fheap_2eh_1',['make_tuple_heap.h',['../make__tuple__heap_8h.html',1,'']]], - ['makedelegate_2',['MakeDelegate',['../namespace_delegate_lib.html#a75ff1e13f1cb691402002bfccaf9d1b2',1,'DelegateLib::MakeDelegate(RetType(*func)(Args... args))'],['../namespace_delegate_lib.html#a388d9eb1fda04113138b8be61dc94650',1,'DelegateLib::MakeDelegate(TClass *object, RetType(TClass::*func)(Args... args))'],['../namespace_delegate_lib.html#a23f0516caa72547787911fd0f0fc9c1b',1,'DelegateLib::MakeDelegate(std::shared_ptr< TClass > object, RetType(TClass::*func)(Args... args))'],['../namespace_delegate_lib.html#a7616e4b38fca0742748de407497d12c6',1,'DelegateLib::MakeDelegate(std::function< RetType(Args...)> func)'],['../namespace_delegate_lib.html#a577444f047f613a4869e76fad9064f05',1,'DelegateLib::MakeDelegate(RetType(*func)(Args... args), DelegateThread &thread)'],['../namespace_delegate_lib.html#ad93c07a649cc918a05b19e8b351add0d',1,'DelegateLib::MakeDelegate(TClass *object, RetType(TClass::*func)(Args... args), DelegateThread &thread)'],['../namespace_delegate_lib.html#a12cd186bad0206967705aa560e8e21a6',1,'DelegateLib::MakeDelegate(std::shared_ptr< TClass > object, RetVal(TClass::*func)(Args... args), DelegateThread &thread)'],['../namespace_delegate_lib.html#a8f614eab3c1d9527a3b3c1b006b4d6ee',1,'DelegateLib::MakeDelegate(std::function< RetType(Args...)> func, DelegateThread &thread)'],['../namespace_delegate_lib.html#a2fe15d9d206f30899ed86ed0a117217b',1,'DelegateLib::MakeDelegate(RetType(*func)(Args... args), DelegateThread &thread, std::chrono::milliseconds timeout)'],['../namespace_delegate_lib.html#a5db76998112ee428868ac9edfc89b4aa',1,'DelegateLib::MakeDelegate(TClass *object, RetType(TClass::*func)(Args... args), DelegateThread &thread, std::chrono::milliseconds timeout)'],['../namespace_delegate_lib.html#a18a52212b54b5a8994f32fae6d19ec4f',1,'DelegateLib::MakeDelegate(std::shared_ptr< TClass > object, RetVal(TClass::*func)(Args... args), DelegateThread &thread, std::chrono::milliseconds timeout)'],['../namespace_delegate_lib.html#a684f519f3b774007ab1d8b81e32fc647',1,'DelegateLib::MakeDelegate(std::function< RetType(Args...)> func, DelegateThread &thread, std::chrono::milliseconds timeout)']]], - ['memberfunc_3',['MemberFunc',['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aa8e6bc2879f78d50ac63ac5cc730b755',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::MemberFunc'],['../class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ae43267049d569b72b2f1c96db7ffa582',1,'DelegateLib::DelegateMemberSp< TClass, RetType(Args...)>::MemberFunc'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aaf196667f048fb72dfd430bd12a9f8b1',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::MemberFunc'],['../class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a99e94121177fbf8f9229a3781f500232',1,'DelegateLib::DelegateMemberSpAsync< TClass, RetType(Args...)>::MemberFunc'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a4f8262576388c8627661815107ec1120',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::MemberFunc'],['../class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a55976c43517ad73fded1eead86ee7d7a',1,'DelegateLib::DelegateMemberSpAsyncWait< TClass, RetType(Args...)>::MemberFunc']]], + ['makedelegate_2',['MakeDelegate',['../namespace_delegate_lib.html#a75ff1e13f1cb691402002bfccaf9d1b2',1,'DelegateLib::MakeDelegate(RetType(*func)(Args... args))'],['../namespace_delegate_lib.html#a388d9eb1fda04113138b8be61dc94650',1,'DelegateLib::MakeDelegate(TClass *object, RetType(TClass::*func)(Args... args))'],['../namespace_delegate_lib.html#a739d90362b129b98ba2c5a626d655c6a',1,'DelegateLib::MakeDelegate(std::shared_ptr< TClass > object, RetType(TClass::*func)(Args... args))'],['../namespace_delegate_lib.html#a7616e4b38fca0742748de407497d12c6',1,'DelegateLib::MakeDelegate(std::function< RetType(Args...)> func)'],['../namespace_delegate_lib.html#a577444f047f613a4869e76fad9064f05',1,'DelegateLib::MakeDelegate(RetType(*func)(Args... args), DelegateThread &thread)'],['../namespace_delegate_lib.html#ad93c07a649cc918a05b19e8b351add0d',1,'DelegateLib::MakeDelegate(TClass *object, RetType(TClass::*func)(Args... args), DelegateThread &thread)'],['../namespace_delegate_lib.html#a5cc5695faac26dd65571b4ee1121b06c',1,'DelegateLib::MakeDelegate(std::shared_ptr< TClass > object, RetVal(TClass::*func)(Args... args), DelegateThread &thread)'],['../namespace_delegate_lib.html#a8f614eab3c1d9527a3b3c1b006b4d6ee',1,'DelegateLib::MakeDelegate(std::function< RetType(Args...)> func, DelegateThread &thread)'],['../namespace_delegate_lib.html#a2fe15d9d206f30899ed86ed0a117217b',1,'DelegateLib::MakeDelegate(RetType(*func)(Args... args), DelegateThread &thread, std::chrono::milliseconds timeout)'],['../namespace_delegate_lib.html#a5db76998112ee428868ac9edfc89b4aa',1,'DelegateLib::MakeDelegate(TClass *object, RetType(TClass::*func)(Args... args), DelegateThread &thread, std::chrono::milliseconds timeout)'],['../namespace_delegate_lib.html#a2ec853f3e1fa47faba54b04fb3c5232d',1,'DelegateLib::MakeDelegate(std::shared_ptr< TClass > object, RetVal(TClass::*func)(Args... args), DelegateThread &thread, std::chrono::milliseconds timeout)'],['../namespace_delegate_lib.html#a684f519f3b774007ab1d8b81e32fc647',1,'DelegateLib::MakeDelegate(std::function< RetType(Args...)> func, DelegateThread &thread, std::chrono::milliseconds timeout)']]], + ['memberfunc_3',['MemberFunc',['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aa8e6bc2879f78d50ac63ac5cc730b755',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::MemberFunc'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aaf196667f048fb72dfd430bd12a9f8b1',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::MemberFunc'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a4f8262576388c8627661815107ec1120',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::MemberFunc']]], ['multicastdelegate_4',['MulticastDelegate',['../struct_delegate_lib_1_1_multicast_delegate.html',1,'DelegateLib::MulticastDelegate< R >'],['../class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a9148f413c457f0ab63e2f613a6289f66',1,'DelegateLib::MulticastDelegate< RetType(Args...)>::MulticastDelegate()']]], ['multicastdelegate_2eh_5',['MulticastDelegate.h',['../_multicast_delegate_8h.html',1,'']]], ['multicastdelegate_3c_20rettype_28args_2e_2e_2e_29_3e_6',['MulticastDelegate< RetType(Args...)>',['../class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html',1,'DelegateLib']]], diff --git a/doxygen/html/search/all_b.js b/doxygen/html/search/all_b.js index bd9c35b..9999386 100644 --- a/doxygen/html/search/all_b.js +++ b/doxygen/html/search/all_b.js @@ -1,11 +1,11 @@ var searchData= [ - ['objectptr_0',['ObjectPtr',['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aeb119acb465b89f74f158f6e3d0c6c3d',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::ObjectPtr'],['../class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aa7471802b453627af7ec648b138e902b',1,'DelegateLib::DelegateMemberSp< TClass, RetType(Args...)>::ObjectPtr'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#acfabf1d64175cf35c3ddc562d9921ac2',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::ObjectPtr'],['../class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a05f0450821590a09623dc84c0e8ba0a5',1,'DelegateLib::DelegateMemberSpAsync< TClass, RetType(Args...)>::ObjectPtr'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aaecfde6d367d64edd65e8e5c0fbe394a',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::ObjectPtr'],['../class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a48f5e788dd4b24f822155f2c825ae4eb',1,'DelegateLib::DelegateMemberSpAsyncWait< TClass, RetType(Args...)>::ObjectPtr']]], - ['operator_20bool_1',['operator bool',['../class_delegate_lib_1_1_delegate_free_3_01_ret_type_07_args_8_8_8_08_4.html#a7ded9bcd5b51d3d15d9470c9f21af216',1,'DelegateLib::DelegateFree< RetType(Args...)>::operator bool()'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a412150bb991a3941c45353e4d20303ec',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::operator bool()'],['../class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a0464754344807471b4a4b96ac4622006',1,'DelegateLib::DelegateMemberSp< TClass, RetType(Args...)>::operator bool()'],['../class_delegate_lib_1_1_delegate_function_3_01_ret_type_07_args_8_8_8_08_4.html#a95342174adf1cc93cea485abcc74b49b',1,'DelegateLib::DelegateFunction< RetType(Args...)>::operator bool()'],['../class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a33bcb6658cd012ab8801963f73a13fe9',1,'DelegateLib::MulticastDelegate< RetType(Args...)>::operator bool()'],['../class_delegate_lib_1_1_multicast_delegate_safe_3_01_ret_type_07_args_8_8_8_08_4.html#a2da23ad790c9b462beb7a5d3bff788dd',1,'DelegateLib::MulticastDelegateSafe< RetType(Args...)>::operator bool()'],['../class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#aee196f10c4064cd51da5625678248388',1,'DelegateLib::SinglecastDelegate< RetType(Args...)>::operator bool()']]], + ['objectptr_0',['ObjectPtr',['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aeb119acb465b89f74f158f6e3d0c6c3d',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::ObjectPtr'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#acfabf1d64175cf35c3ddc562d9921ac2',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::ObjectPtr'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aaecfde6d367d64edd65e8e5c0fbe394a',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::ObjectPtr']]], + ['operator_20bool_1',['operator bool',['../class_delegate_lib_1_1_delegate_free_3_01_ret_type_07_args_8_8_8_08_4.html#a7ded9bcd5b51d3d15d9470c9f21af216',1,'DelegateLib::DelegateFree< RetType(Args...)>::operator bool()'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a412150bb991a3941c45353e4d20303ec',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::operator bool()'],['../class_delegate_lib_1_1_delegate_function_3_01_ret_type_07_args_8_8_8_08_4.html#a95342174adf1cc93cea485abcc74b49b',1,'DelegateLib::DelegateFunction< RetType(Args...)>::operator bool()'],['../class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a33bcb6658cd012ab8801963f73a13fe9',1,'DelegateLib::MulticastDelegate< RetType(Args...)>::operator bool()'],['../class_delegate_lib_1_1_multicast_delegate_safe_3_01_ret_type_07_args_8_8_8_08_4.html#a2da23ad790c9b462beb7a5d3bff788dd',1,'DelegateLib::MulticastDelegateSafe< RetType(Args...)>::operator bool()'],['../class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#aee196f10c4064cd51da5625678248388',1,'DelegateLib::SinglecastDelegate< RetType(Args...)>::operator bool()']]], ['operator_21_3d_2',['operator!=',['../class_delegate_lib_1_1_delegate_base.html#a6e908a657cd3651bf4e833a0b79e1564',1,'DelegateLib::DelegateBase']]], - ['operator_28_29_3',['operator()',['../class_delegate_lib_1_1_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a12b1e716158f0f205bcf3b6d576b35cf',1,'DelegateLib::Delegate< RetType(Args...)>::operator()()'],['../class_delegate_lib_1_1_delegate_free_3_01_ret_type_07_args_8_8_8_08_4.html#a3e31fdd4391c352138672960a50e973d',1,'DelegateLib::DelegateFree< RetType(Args...)>::operator()()'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ac37f599bb6493c11c88a015c877b1530',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::operator()()'],['../class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ac4c0324e61517044e73fe94ec8595b3f',1,'DelegateLib::DelegateMemberSp< TClass, RetType(Args...)>::operator()()'],['../class_delegate_lib_1_1_delegate_function_3_01_ret_type_07_args_8_8_8_08_4.html#a782bbda436c2de4749fc8c098dd75945',1,'DelegateLib::DelegateFunction< RetType(Args...)>::operator()()'],['../class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#a8d6f10d5f2c1b9215b59946a77edf6f6',1,'DelegateLib::DelegateFreeAsync< RetType(Args...)>::operator()()'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aa73f04631d245b5bf76b6e3025a0b5e5',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::operator()()'],['../class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a2be69705010b23423760a63822b2f408',1,'DelegateLib::DelegateMemberSpAsync< TClass, RetType(Args...)>::operator()()'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a1e6153da03f3d607b1e18deb391c04a4',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::operator()()'],['../class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a79322ee2599e067f1be1ed9f803bb211',1,'DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>::operator()()'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a3cb42151d01cc03b45f2248fc513d847',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::operator()()'],['../class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aedbf462168487ee92af82d8a672f3cbc',1,'DelegateLib::DelegateMemberSpAsyncWait< TClass, RetType(Args...)>::operator()()'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#abe10c60e4a83a5611e0b9bc9ed6e05e1',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::operator()()'],['../class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a8273659a7d2a5febd0e1e3ce8c7fe6b7',1,'DelegateLib::MulticastDelegate< RetType(Args...)>::operator()()'],['../class_delegate_lib_1_1_multicast_delegate_safe_3_01_ret_type_07_args_8_8_8_08_4.html#a084351c99acfba753f96b3b366522adb',1,'DelegateLib::MulticastDelegateSafe< RetType(Args...)>::operator()()'],['../class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a29fd174ba1060d37e164e45ed3e9b383',1,'DelegateLib::SinglecastDelegate< RetType(Args...)>::operator()()']]], + ['operator_28_29_3',['operator()',['../class_delegate_lib_1_1_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a12b1e716158f0f205bcf3b6d576b35cf',1,'DelegateLib::Delegate< RetType(Args...)>::operator()()'],['../class_delegate_lib_1_1_delegate_free_3_01_ret_type_07_args_8_8_8_08_4.html#a3e31fdd4391c352138672960a50e973d',1,'DelegateLib::DelegateFree< RetType(Args...)>::operator()()'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ac37f599bb6493c11c88a015c877b1530',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::operator()()'],['../class_delegate_lib_1_1_delegate_function_3_01_ret_type_07_args_8_8_8_08_4.html#a782bbda436c2de4749fc8c098dd75945',1,'DelegateLib::DelegateFunction< RetType(Args...)>::operator()()'],['../class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#a8d6f10d5f2c1b9215b59946a77edf6f6',1,'DelegateLib::DelegateFreeAsync< RetType(Args...)>::operator()()'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aa73f04631d245b5bf76b6e3025a0b5e5',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::operator()()'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a1e6153da03f3d607b1e18deb391c04a4',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::operator()()'],['../class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a79322ee2599e067f1be1ed9f803bb211',1,'DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>::operator()()'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a3cb42151d01cc03b45f2248fc513d847',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::operator()()'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#abe10c60e4a83a5611e0b9bc9ed6e05e1',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::operator()()'],['../class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a8273659a7d2a5febd0e1e3ce8c7fe6b7',1,'DelegateLib::MulticastDelegate< RetType(Args...)>::operator()()'],['../class_delegate_lib_1_1_multicast_delegate_safe_3_01_ret_type_07_args_8_8_8_08_4.html#a084351c99acfba753f96b3b366522adb',1,'DelegateLib::MulticastDelegateSafe< RetType(Args...)>::operator()()'],['../class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a29fd174ba1060d37e164e45ed3e9b383',1,'DelegateLib::SinglecastDelegate< RetType(Args...)>::operator()()']]], ['operator_2b_3d_4',['operator+=',['../class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#afc6074436f261bcdff69bb4b241e7597',1,'DelegateLib::MulticastDelegate< RetType(Args...)>::operator+=()'],['../class_delegate_lib_1_1_multicast_delegate_safe_3_01_ret_type_07_args_8_8_8_08_4.html#a74ddb360c1f0a668b416551d16c5d7cc',1,'DelegateLib::MulticastDelegateSafe< RetType(Args...)>::operator+=()']]], ['operator_2d_3d_5',['operator-=',['../class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a30edf6d7c3ed0db8904a7e58293cc062',1,'DelegateLib::MulticastDelegate< RetType(Args...)>::operator-=()'],['../class_delegate_lib_1_1_multicast_delegate_safe_3_01_ret_type_07_args_8_8_8_08_4.html#a83fd07966d22b666e67c9b4e2f2a3913',1,'DelegateLib::MulticastDelegateSafe< RetType(Args...)>::operator-=()']]], - ['operator_3d_6',['operator=',['../class_delegate_lib_1_1_delegate_free_3_01_ret_type_07_args_8_8_8_08_4.html#aa4a27109dccd3bdeb31cdee5107b6137',1,'DelegateLib::DelegateFree< RetType(Args...)>::operator=(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_free_3_01_ret_type_07_args_8_8_8_08_4.html#aeaff06f2a709a7602af82cb936e68bbf',1,'DelegateLib::DelegateFree< RetType(Args...)>::operator=(ClassType &&rhs) noexcept'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ad06b7ee91cc4f40440a2841a2fe2ec83',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::operator=(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ae31b9598c8f3e72d2adcbd9c0a1269e1',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::operator=(ClassType &&rhs) noexcept'],['../class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a13b7d137db69a41e83da14c9b4f2fb06',1,'DelegateLib::DelegateMemberSp< TClass, RetType(Args...)>::operator=(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a9030c87d5c2a045761694e1699829a09',1,'DelegateLib::DelegateMemberSp< TClass, RetType(Args...)>::operator=(ClassType &&rhs) noexcept'],['../class_delegate_lib_1_1_delegate_function_3_01_ret_type_07_args_8_8_8_08_4.html#abd264e188f728eb9ef1ca60a33000881',1,'DelegateLib::DelegateFunction< RetType(Args...)>::operator=(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_function_3_01_ret_type_07_args_8_8_8_08_4.html#a59314657e3dfd95c0cfcff23e0356e56',1,'DelegateLib::DelegateFunction< RetType(Args...)>::operator=(ClassType &&rhs) noexcept'],['../class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#a681a97f01b1b14b4149cd82e3269ddb4',1,'DelegateLib::DelegateFreeAsync< RetType(Args...)>::operator=(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#aec5509934f475c10b4eee26512a08c33',1,'DelegateLib::DelegateFreeAsync< RetType(Args...)>::operator=(ClassType &&rhs) noexcept'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a46343959b0ea03ef02f1ebe3f8182814',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::operator=(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a9cd118df91aa22e6c3d4885b1e39329c',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::operator=(ClassType &&rhs) noexcept'],['../class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#adb92f14347b35af2b3154103b1793196',1,'DelegateLib::DelegateMemberSpAsync< TClass, RetType(Args...)>::operator=(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a6563fdeb2a74bdfc8fd7aabe3dd38a43',1,'DelegateLib::DelegateMemberSpAsync< TClass, RetType(Args...)>::operator=(ClassType &&rhs) noexcept'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a203dd774ded780851f79cac05c4c719b',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::operator=(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#ac677a19f9c6ed6f0d5be06e8b1733d37',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::operator=(ClassType &&rhs) noexcept'],['../class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#ad01b49b6d7d19754b2baf7690fae8820',1,'DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>::operator=(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#abdbb3701f55d5d075ea044fbe8f9c6d3',1,'DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>::operator=(ClassType &&rhs) noexcept'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a6e96e0302225e7c2df7bd2daca5a6d26',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::operator=(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ad077b1a6778b6ece6558d425c44a8b5f',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::operator=(ClassType &&rhs) noexcept'],['../class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a6d24d274b5686a6cfda2255f2c6049de',1,'DelegateLib::DelegateMemberSpAsyncWait< TClass, RetType(Args...)>::operator=(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a19b1d7c2f6892cd6dd6dd25182e9d07d',1,'DelegateLib::DelegateMemberSpAsyncWait< TClass, RetType(Args...)>::operator=(ClassType &&rhs) noexcept'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a6c3628f557fdff90db3bf3f7df4f28f1',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::operator=(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#aeb01775a1f4fbf735e16aca245fc08b8',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::operator=(ClassType &&rhs) noexcept'],['../class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#aa9da380779be0a93c208f17ec0bb5e83',1,'DelegateLib::SinglecastDelegate< RetType(Args...)>::operator=(const Delegate< RetType(Args...)> &delegate)'],['../class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a0bfbe2a3d03ee9e494fe58ba35c953fd',1,'DelegateLib::SinglecastDelegate< RetType(Args...)>::operator=(const Delegate< RetType(Args...)> *delegate)']]], - ['operator_3d_3d_7',['operator==',['../class_delegate_lib_1_1_delegate_base.html#aa77532684ca24f7924662c1f6e2f3bce',1,'DelegateLib::DelegateBase::operator==()'],['../class_delegate_lib_1_1_delegate_free_3_01_ret_type_07_args_8_8_8_08_4.html#a487de94ebd8c683330785e755a6539c2',1,'DelegateLib::DelegateFree< RetType(Args...)>::operator==()'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a90f7904623f6945bd232747a207ef5a7',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::operator==()'],['../class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ab8bc747498a19e4ca3ba9d3cccb756fa',1,'DelegateLib::DelegateMemberSp< TClass, RetType(Args...)>::operator==()'],['../class_delegate_lib_1_1_delegate_function_3_01_ret_type_07_args_8_8_8_08_4.html#a318105c4baad7edc3ab08154aced10cc',1,'DelegateLib::DelegateFunction< RetType(Args...)>::operator==()'],['../class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#a9ef5e4510f2f3378d0dd0c3ff714e3bf',1,'DelegateLib::DelegateFreeAsync< RetType(Args...)>::operator==()'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a367221c5c3b36d7aae675cadaa2c27ba',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::operator==()'],['../class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a6cef069e1ec3020064447a453c3aa91b',1,'DelegateLib::DelegateMemberSpAsync< TClass, RetType(Args...)>::operator==()'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a642fc55c2dfa6f7eb29f016a7194af9a',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::operator==()'],['../class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#ae92c9a822eb76f710468e400d22847c9',1,'DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>::operator==()'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ab9b6a5c6f42ee235c731de9d6df23ece',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::operator==()'],['../class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aafbb90f4eb5ec2fcc05456fe139a6cee',1,'DelegateLib::DelegateMemberSpAsyncWait< TClass, RetType(Args...)>::operator==()'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a0cc272f27fb57a62d2c762f74f032eb2',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::operator==()']]] + ['operator_3d_6',['operator=',['../class_delegate_lib_1_1_delegate_free_3_01_ret_type_07_args_8_8_8_08_4.html#aa4a27109dccd3bdeb31cdee5107b6137',1,'DelegateLib::DelegateFree< RetType(Args...)>::operator=(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_free_3_01_ret_type_07_args_8_8_8_08_4.html#aeaff06f2a709a7602af82cb936e68bbf',1,'DelegateLib::DelegateFree< RetType(Args...)>::operator=(ClassType &&rhs) noexcept'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ad06b7ee91cc4f40440a2841a2fe2ec83',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::operator=(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ae31b9598c8f3e72d2adcbd9c0a1269e1',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::operator=(ClassType &&rhs) noexcept'],['../class_delegate_lib_1_1_delegate_function_3_01_ret_type_07_args_8_8_8_08_4.html#abd264e188f728eb9ef1ca60a33000881',1,'DelegateLib::DelegateFunction< RetType(Args...)>::operator=(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_function_3_01_ret_type_07_args_8_8_8_08_4.html#a59314657e3dfd95c0cfcff23e0356e56',1,'DelegateLib::DelegateFunction< RetType(Args...)>::operator=(ClassType &&rhs) noexcept'],['../class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#a681a97f01b1b14b4149cd82e3269ddb4',1,'DelegateLib::DelegateFreeAsync< RetType(Args...)>::operator=(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#aec5509934f475c10b4eee26512a08c33',1,'DelegateLib::DelegateFreeAsync< RetType(Args...)>::operator=(ClassType &&rhs) noexcept'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a46343959b0ea03ef02f1ebe3f8182814',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::operator=(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a9cd118df91aa22e6c3d4885b1e39329c',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::operator=(ClassType &&rhs) noexcept'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a203dd774ded780851f79cac05c4c719b',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::operator=(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#ac677a19f9c6ed6f0d5be06e8b1733d37',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::operator=(ClassType &&rhs) noexcept'],['../class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#ad01b49b6d7d19754b2baf7690fae8820',1,'DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>::operator=(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#abdbb3701f55d5d075ea044fbe8f9c6d3',1,'DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>::operator=(ClassType &&rhs) noexcept'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a6e96e0302225e7c2df7bd2daca5a6d26',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::operator=(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ad077b1a6778b6ece6558d425c44a8b5f',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::operator=(ClassType &&rhs) noexcept'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a6c3628f557fdff90db3bf3f7df4f28f1',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::operator=(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#aeb01775a1f4fbf735e16aca245fc08b8',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::operator=(ClassType &&rhs) noexcept'],['../class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#aa9da380779be0a93c208f17ec0bb5e83',1,'DelegateLib::SinglecastDelegate< RetType(Args...)>::operator=(const Delegate< RetType(Args...)> &delegate)'],['../class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a0bfbe2a3d03ee9e494fe58ba35c953fd',1,'DelegateLib::SinglecastDelegate< RetType(Args...)>::operator=(const Delegate< RetType(Args...)> *delegate)']]], + ['operator_3d_3d_7',['operator==',['../class_delegate_lib_1_1_delegate_base.html#aa77532684ca24f7924662c1f6e2f3bce',1,'DelegateLib::DelegateBase::operator==()'],['../class_delegate_lib_1_1_delegate_free_3_01_ret_type_07_args_8_8_8_08_4.html#a487de94ebd8c683330785e755a6539c2',1,'DelegateLib::DelegateFree< RetType(Args...)>::operator==()'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a90f7904623f6945bd232747a207ef5a7',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::operator==()'],['../class_delegate_lib_1_1_delegate_function_3_01_ret_type_07_args_8_8_8_08_4.html#a318105c4baad7edc3ab08154aced10cc',1,'DelegateLib::DelegateFunction< RetType(Args...)>::operator==()'],['../class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#a9ef5e4510f2f3378d0dd0c3ff714e3bf',1,'DelegateLib::DelegateFreeAsync< RetType(Args...)>::operator==()'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a367221c5c3b36d7aae675cadaa2c27ba',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::operator==()'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a642fc55c2dfa6f7eb29f016a7194af9a',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::operator==()'],['../class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#ae92c9a822eb76f710468e400d22847c9',1,'DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>::operator==()'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ab9b6a5c6f42ee235c731de9d6df23ece',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::operator==()'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a0cc272f27fb57a62d2c762f74f032eb2',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::operator==()']]] ]; diff --git a/doxygen/html/search/all_d.js b/doxygen/html/search/all_d.js index 38e98dd..b76ea74 100644 --- a/doxygen/html/search/all_d.js +++ b/doxygen/html/search/all_d.js @@ -3,12 +3,13 @@ var searchData= ['semaphore_0',['Semaphore',['../class_delegate_lib_1_1_semaphore.html',1,'DelegateLib::Semaphore'],['../class_delegate_lib_1_1_semaphore.html#ab598fb67f4b8ccabd6e86f449ee95f95',1,'DelegateLib::Semaphore::Semaphore()']]], ['semaphore_2eh_1',['Semaphore.h',['../_semaphore_8h.html',1,'']]], ['setinvokerwaiting_2',['SetInvokerWaiting',['../class_delegate_lib_1_1_delegate_async_wait_msg.html#a9a8287c553329db52f3710863a318023',1,'DelegateLib::DelegateAsyncWaitMsg']]], - ['setsync_3',['SetSync',['../class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#ae1af8ea348c4121033e815ffb91ffc7f',1,'DelegateLib::DelegateFreeAsync< RetType(Args...)>::SetSync()'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a93e6a8587d6f62f39f9dcf6e0c016d9b',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::SetSync()'],['../class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a21431c52f8e2a17316aa2a97e0e23cc2',1,'DelegateLib::DelegateMemberSpAsync< TClass, RetType(Args...)>::SetSync()'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#acf44f40ff48ec3f1481b6dca4e08c352',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::SetSync()']]], - ['signal_4',['Signal',['../class_delegate_lib_1_1_semaphore.html#a649aa0bb36a4f94d15ead412d02f0a24',1,'DelegateLib::Semaphore']]], - ['singlecastdelegate_5',['SinglecastDelegate',['../struct_delegate_lib_1_1_singlecast_delegate.html',1,'DelegateLib::SinglecastDelegate< R >'],['../class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#aa56a7da61e752491b338442d83156e1a',1,'DelegateLib::SinglecastDelegate< RetType(Args...)>::SinglecastDelegate()']]], - ['singlecastdelegate_2eh_6',['SinglecastDelegate.h',['../_singlecast_delegate_8h.html',1,'']]], - ['singlecastdelegate_3c_20rettype_28args_2e_2e_2e_29_3e_7',['SinglecastDelegate< RetType(Args...)>',['../class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html',1,'DelegateLib']]], - ['size_8',['Size',['../class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a917bc9736e4e72769a4f883228e6ff91',1,'DelegateLib::MulticastDelegate< RetType(Args...)>']]], - ['src_5fdup_9',['src_dup',['../namespacesrc__dup.html',1,'']]], - ['src_5fdup_2epy_10',['src_dup.py',['../src__dup_8py.html',1,'']]] + ['setsync_3',['SetSync',['../class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#ae1af8ea348c4121033e815ffb91ffc7f',1,'DelegateLib::DelegateFreeAsync< RetType(Args...)>::SetSync()'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a93e6a8587d6f62f39f9dcf6e0c016d9b',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::SetSync()'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#acf44f40ff48ec3f1481b6dca4e08c352',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::SetSync()']]], + ['sharedptr_4',['SharedPtr',['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a845057cf22b42ddccfa44228e530529e',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::SharedPtr'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ab269a84c9fb2b4d30d47e7cb5ca7bbc2',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::SharedPtr'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a1880c4ca2f5e3e182533fa68e6522f23',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::SharedPtr']]], + ['signal_5',['Signal',['../class_delegate_lib_1_1_semaphore.html#a649aa0bb36a4f94d15ead412d02f0a24',1,'DelegateLib::Semaphore']]], + ['singlecastdelegate_6',['SinglecastDelegate',['../struct_delegate_lib_1_1_singlecast_delegate.html',1,'DelegateLib::SinglecastDelegate< R >'],['../class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#aa56a7da61e752491b338442d83156e1a',1,'DelegateLib::SinglecastDelegate< RetType(Args...)>::SinglecastDelegate()']]], + ['singlecastdelegate_2eh_7',['SinglecastDelegate.h',['../_singlecast_delegate_8h.html',1,'']]], + ['singlecastdelegate_3c_20rettype_28args_2e_2e_2e_29_3e_8',['SinglecastDelegate< RetType(Args...)>',['../class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html',1,'DelegateLib']]], + ['size_9',['Size',['../class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a917bc9736e4e72769a4f883228e6ff91',1,'DelegateLib::MulticastDelegate< RetType(Args...)>']]], + ['src_5fdup_10',['src_dup',['../namespacesrc__dup.html',1,'']]], + ['src_5fdup_2epy_11',['src_dup.py',['../src__dup_8py.html',1,'']]] ]; diff --git a/doxygen/html/search/classes_0.js b/doxygen/html/search/classes_0.js index 8edb1e4..83a8a69 100644 --- a/doxygen/html/search/classes_0.js +++ b/doxygen/html/search/classes_0.js @@ -23,12 +23,6 @@ var searchData= ['delegatememberasync_3c_20tclass_2c_20rettype_28args_2e_2e_2e_29_3e_20',['DelegateMemberAsync< TClass, RetType(Args...)>',['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html',1,'DelegateLib']]], ['delegatememberasyncwait_21',['DelegateMemberAsyncWait',['../struct_delegate_lib_1_1_delegate_member_async_wait.html',1,'DelegateLib']]], ['delegatememberasyncwait_3c_20tclass_2c_20rettype_28args_2e_2e_2e_29_3e_22',['DelegateMemberAsyncWait< TClass, RetType(Args...)>',['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html',1,'DelegateLib']]], - ['delegatemembersp_23',['DelegateMemberSp',['../struct_delegate_lib_1_1_delegate_member_sp.html',1,'DelegateLib']]], - ['delegatemembersp_3c_20tclass_2c_20rettype_28args_2e_2e_2e_29_3e_24',['DelegateMemberSp< TClass, RetType(Args...)>',['../class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html',1,'DelegateLib']]], - ['delegatememberspasync_25',['DelegateMemberSpAsync',['../struct_delegate_lib_1_1_delegate_member_sp_async.html',1,'DelegateLib']]], - ['delegatememberspasync_3c_20tclass_2c_20rettype_28args_2e_2e_2e_29_3e_26',['DelegateMemberSpAsync< TClass, RetType(Args...)>',['../class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html',1,'DelegateLib']]], - ['delegatememberspasyncwait_27',['DelegateMemberSpAsyncWait',['../struct_delegate_lib_1_1_delegate_member_sp_async_wait.html',1,'DelegateLib']]], - ['delegatememberspasyncwait_3c_20tclass_2c_20rettype_28args_2e_2e_2e_29_3e_28',['DelegateMemberSpAsyncWait< TClass, RetType(Args...)>',['../class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html',1,'DelegateLib']]], - ['delegatemsg_29',['DelegateMsg',['../class_delegate_lib_1_1_delegate_msg.html',1,'DelegateLib']]], - ['delegatethread_30',['DelegateThread',['../class_delegate_lib_1_1_delegate_thread.html',1,'DelegateLib']]] + ['delegatemsg_23',['DelegateMsg',['../class_delegate_lib_1_1_delegate_msg.html',1,'DelegateLib']]], + ['delegatethread_24',['DelegateThread',['../class_delegate_lib_1_1_delegate_thread.html',1,'DelegateLib']]] ]; diff --git a/doxygen/html/search/functions_0.js b/doxygen/html/search/functions_0.js index a151aa2..b7a6724 100644 --- a/doxygen/html/search/functions_0.js +++ b/doxygen/html/search/functions_0.js @@ -1,5 +1,5 @@ var searchData= [ - ['assign_0',['Assign',['../class_delegate_lib_1_1_delegate_free_3_01_ret_type_07_args_8_8_8_08_4.html#ad50bc3385f014ff12cf61c16c030f9c0',1,'DelegateLib::DelegateFree< RetType(Args...)>::Assign()'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aa837983f1f9c0a2f8b35fb0ea4704e5b',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::Assign()'],['../class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a195d4972634b9dfc1a87590de1eedee8',1,'DelegateLib::DelegateMemberSp< TClass, RetType(Args...)>::Assign()'],['../class_delegate_lib_1_1_delegate_function_3_01_ret_type_07_args_8_8_8_08_4.html#a813f00fad959f24480192a5a44b12cdc',1,'DelegateLib::DelegateFunction< RetType(Args...)>::Assign()'],['../class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#a98d999c16d8eff2e9967d0a4c25b9d41',1,'DelegateLib::DelegateFreeAsync< RetType(Args...)>::Assign()'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#abe340362fa1daacc9e1d0b58428506e5',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::Assign()'],['../class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a2d0dde29df4be4db2480ccd419f6cbed',1,'DelegateLib::DelegateMemberSpAsync< TClass, RetType(Args...)>::Assign()'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#ae51e00822c91e01e7041be385ac38c76',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::Assign()'],['../class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#ae495a55e908778e619d186eb9afb9ecc',1,'DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>::Assign()'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a1ead27747d4dc9a932bc7957de036a6c',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::Assign()'],['../class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a248c7fbf1212c7debba5c30e8a84fa80',1,'DelegateLib::DelegateMemberSpAsyncWait< TClass, RetType(Args...)>::Assign()'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a06a1f3a07b3b85f30d1d149a8ce7694d',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::Assign()']]], - ['asyncinvoke_1',['AsyncInvoke',['../class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#a2f0ac18839223393d6c8a76beb971478',1,'DelegateLib::DelegateFreeAsync< RetType(Args...)>::AsyncInvoke()'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a66a4e60715f3379696d120cbfd0d0010',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::AsyncInvoke()'],['../class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aa1b8f9b21955f6d398fab9ad1153f940',1,'DelegateLib::DelegateMemberSpAsync< TClass, RetType(Args...)>::AsyncInvoke()'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a5c0e0c2591b0b02feec73b501325fcb6',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::AsyncInvoke()'],['../class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#acca23e7595f55d4509625332f650de8f',1,'DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>::AsyncInvoke()'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a8291fb2c29ace6e80959768d7e614e13',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::AsyncInvoke()'],['../class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a5f4fd75f158b4553776e2d62f31cd326',1,'DelegateLib::DelegateMemberSpAsyncWait< TClass, RetType(Args...)>::AsyncInvoke()'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a1c4342829881ac285f0d839906c9f930',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::AsyncInvoke()']]] + ['assign_0',['Assign',['../class_delegate_lib_1_1_delegate_free_3_01_ret_type_07_args_8_8_8_08_4.html#ad50bc3385f014ff12cf61c16c030f9c0',1,'DelegateLib::DelegateFree< RetType(Args...)>::Assign()'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aa837983f1f9c0a2f8b35fb0ea4704e5b',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::Assign()'],['../class_delegate_lib_1_1_delegate_function_3_01_ret_type_07_args_8_8_8_08_4.html#a813f00fad959f24480192a5a44b12cdc',1,'DelegateLib::DelegateFunction< RetType(Args...)>::Assign()'],['../class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#a98d999c16d8eff2e9967d0a4c25b9d41',1,'DelegateLib::DelegateFreeAsync< RetType(Args...)>::Assign()'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#abe340362fa1daacc9e1d0b58428506e5',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::Assign()'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#ae51e00822c91e01e7041be385ac38c76',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::Assign()'],['../class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#ae495a55e908778e619d186eb9afb9ecc',1,'DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>::Assign()'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a1ead27747d4dc9a932bc7957de036a6c',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::Assign()'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a06a1f3a07b3b85f30d1d149a8ce7694d',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::Assign()']]], + ['asyncinvoke_1',['AsyncInvoke',['../class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#a2f0ac18839223393d6c8a76beb971478',1,'DelegateLib::DelegateFreeAsync< RetType(Args...)>::AsyncInvoke()'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a66a4e60715f3379696d120cbfd0d0010',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::AsyncInvoke()'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a5c0e0c2591b0b02feec73b501325fcb6',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::AsyncInvoke()'],['../class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#acca23e7595f55d4509625332f650de8f',1,'DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>::AsyncInvoke()'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a8291fb2c29ace6e80959768d7e614e13',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::AsyncInvoke()'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a1c4342829881ac285f0d839906c9f930',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::AsyncInvoke()']]] ]; diff --git a/doxygen/html/search/functions_1.js b/doxygen/html/search/functions_1.js index eb70e5e..907f329 100644 --- a/doxygen/html/search/functions_1.js +++ b/doxygen/html/search/functions_1.js @@ -1,4 +1,4 @@ var searchData= [ - ['bind_0',['Bind',['../class_delegate_lib_1_1_delegate_free_3_01_ret_type_07_args_8_8_8_08_4.html#a73c64a35a3d0cbae23a6779a6a53aa19',1,'DelegateLib::DelegateFree< RetType(Args...)>::Bind()'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a2a695e30c79885ec8394cd049301fe24',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::Bind(ObjectPtr object, MemberFunc func)'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a2dcf47b856e718a305b49107349e1d23',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::Bind(ObjectPtr object, ConstMemberFunc func)'],['../class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ac6acec090724fa4e992c05f70f4ac7f6',1,'DelegateLib::DelegateMemberSp< TClass, RetType(Args...)>::Bind(ObjectPtr object, MemberFunc func)'],['../class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a84b41deebe247220c51d751acb069dce',1,'DelegateLib::DelegateMemberSp< TClass, RetType(Args...)>::Bind(ObjectPtr object, ConstMemberFunc func)'],['../class_delegate_lib_1_1_delegate_function_3_01_ret_type_07_args_8_8_8_08_4.html#ae08b89338a2ebf38fe31af77c5f9b400',1,'DelegateLib::DelegateFunction< RetType(Args...)>::Bind()'],['../class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#aba44cf5c963b9b7667cc1ea70023e343',1,'DelegateLib::DelegateFreeAsync< RetType(Args...)>::Bind()'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aaa1df37c6b1b6f9549de0daa981fafcf',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::Bind(ObjectPtr object, MemberFunc func, DelegateThread &thread)'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a00787579ccdcf94fea924f2aa3b05cde',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::Bind(ObjectPtr object, ConstMemberFunc func, DelegateThread &thread)'],['../class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a4a810a41f439b74a0bcbaaf8dd7eb07e',1,'DelegateLib::DelegateMemberSpAsync< TClass, RetType(Args...)>::Bind(ObjectPtr object, MemberFunc func, DelegateThread &thread)'],['../class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a8fa9581587b6d143a9149168eae1855d',1,'DelegateLib::DelegateMemberSpAsync< TClass, RetType(Args...)>::Bind(ObjectPtr object, ConstMemberFunc func, DelegateThread &thread)'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a56758d6e931fbff1cfc3ea97151fd6b5',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::Bind()'],['../class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a8e036665e5b6f1ef58e7fc745d7a9542',1,'DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>::Bind()'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a24c3b8b9fd284963b56d32b2aeaf5bd1',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::Bind(ObjectPtr object, MemberFunc func, DelegateThread &thread)'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#af52d71df3cdb3d55a49e725b63a19d25',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::Bind(ObjectPtr object, ConstMemberFunc func, DelegateThread &thread)'],['../class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aa513bda0b439e89c7c4149a56bc10a10',1,'DelegateLib::DelegateMemberSpAsyncWait< TClass, RetType(Args...)>::Bind(ObjectPtr object, MemberFunc func, DelegateThread &thread)'],['../class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a5e7bbce4e16c5045380edf7003f0493d',1,'DelegateLib::DelegateMemberSpAsyncWait< TClass, RetType(Args...)>::Bind(ObjectPtr object, ConstMemberFunc func, DelegateThread &thread)'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a56245374ac83ac8ae2cb5ea0de8907f8',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::Bind()']]] + ['bind_0',['Bind',['../class_delegate_lib_1_1_delegate_free_3_01_ret_type_07_args_8_8_8_08_4.html#a73c64a35a3d0cbae23a6779a6a53aa19',1,'DelegateLib::DelegateFree< RetType(Args...)>::Bind()'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a9c24220b7f1ef4f21ba66c7c9ef5086b',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::Bind(SharedPtr object, MemberFunc func)'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a6397270ea2b42e123a8ff20d7d5cf7a0',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::Bind(SharedPtr object, ConstMemberFunc func)'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a2a695e30c79885ec8394cd049301fe24',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::Bind(ObjectPtr object, MemberFunc func)'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a2dcf47b856e718a305b49107349e1d23',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::Bind(ObjectPtr object, ConstMemberFunc func)'],['../class_delegate_lib_1_1_delegate_function_3_01_ret_type_07_args_8_8_8_08_4.html#ae08b89338a2ebf38fe31af77c5f9b400',1,'DelegateLib::DelegateFunction< RetType(Args...)>::Bind()'],['../class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#aba44cf5c963b9b7667cc1ea70023e343',1,'DelegateLib::DelegateFreeAsync< RetType(Args...)>::Bind()'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#af10b109e87b2ba4599da6c84e65931c3',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::Bind(SharedPtr object, MemberFunc func, DelegateThread &thread)'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#acc96893f7caf4881d2b3f647465745f4',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::Bind(SharedPtr object, ConstMemberFunc func, DelegateThread &thread)'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aaa1df37c6b1b6f9549de0daa981fafcf',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::Bind(ObjectPtr object, MemberFunc func, DelegateThread &thread)'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a00787579ccdcf94fea924f2aa3b05cde',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::Bind(ObjectPtr object, ConstMemberFunc func, DelegateThread &thread)'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a56758d6e931fbff1cfc3ea97151fd6b5',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::Bind()'],['../class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a8e036665e5b6f1ef58e7fc745d7a9542',1,'DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>::Bind()'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a48971ab5284449ef2402b65922187238',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::Bind(SharedPtr object, MemberFunc func, DelegateThread &thread)'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ae7a040c2bec3f07797b19a6de8481a7f',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::Bind(SharedPtr object, ConstMemberFunc func, DelegateThread &thread)'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a24c3b8b9fd284963b56d32b2aeaf5bd1',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::Bind(ObjectPtr object, MemberFunc func, DelegateThread &thread)'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#af52d71df3cdb3d55a49e725b63a19d25',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::Bind(ObjectPtr object, ConstMemberFunc func, DelegateThread &thread)'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a56245374ac83ac8ae2cb5ea0de8907f8',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::Bind()']]] ]; diff --git a/doxygen/html/search/functions_2.js b/doxygen/html/search/functions_2.js index 6d8784a..97888ed 100644 --- a/doxygen/html/search/functions_2.js +++ b/doxygen/html/search/functions_2.js @@ -1,6 +1,6 @@ var searchData= [ - ['clear_0',['Clear',['../class_delegate_lib_1_1_delegate_free_3_01_ret_type_07_args_8_8_8_08_4.html#a32daf44235f34ed06a33fb5cdf768842',1,'DelegateLib::DelegateFree< RetType(Args...)>::Clear()'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a94073c6581ff7739523e7c8bfe57caa0',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::Clear()'],['../class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aeb180dc37eff3728a18b178154c892d8',1,'DelegateLib::DelegateMemberSp< TClass, RetType(Args...)>::Clear()'],['../class_delegate_lib_1_1_delegate_function_3_01_ret_type_07_args_8_8_8_08_4.html#a63c632ed0a4fd7a40c27a8f05dbefa50',1,'DelegateLib::DelegateFunction< RetType(Args...)>::Clear()'],['../class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#acbfa6d7a2393fb734d3ba38b794809b7',1,'DelegateLib::MulticastDelegate< RetType(Args...)>::Clear()'],['../class_delegate_lib_1_1_multicast_delegate_safe_3_01_ret_type_07_args_8_8_8_08_4.html#a9732c67d0b37b2418fc776a4a6d5c26d',1,'DelegateLib::MulticastDelegateSafe< RetType(Args...)>::Clear()'],['../class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#af44894cbde71e2cae0687381f5e07eff',1,'DelegateLib::SinglecastDelegate< RetType(Args...)>::Clear()']]], - ['clone_1',['Clone',['../class_delegate_lib_1_1_delegate_base.html#a1167262e335827e9471abceba1321266',1,'DelegateLib::DelegateBase::Clone()'],['../class_delegate_lib_1_1_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a8ae51fd14e2d7f0193f394095c3f6ed0',1,'DelegateLib::Delegate< RetType(Args...)>::Clone()'],['../class_delegate_lib_1_1_delegate_free_3_01_ret_type_07_args_8_8_8_08_4.html#a6d5ded6c118f909f556b9596737a2347',1,'DelegateLib::DelegateFree< RetType(Args...)>::Clone()'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#af4eb4fba1da063063b5d4ba47de4299a',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::Clone()'],['../class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a1a96cd942064f5d6b68ad6dedd0213d1',1,'DelegateLib::DelegateMemberSp< TClass, RetType(Args...)>::Clone()'],['../class_delegate_lib_1_1_delegate_function_3_01_ret_type_07_args_8_8_8_08_4.html#aff35a45eb0c37f87d4a566c3fabd0850',1,'DelegateLib::DelegateFunction< RetType(Args...)>::Clone()'],['../class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#afe0877cb9e0d97f5b5ca408de1562b89',1,'DelegateLib::DelegateFreeAsync< RetType(Args...)>::Clone()'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#acbd04f7121278e2dae40311c4f303d9b',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::Clone()'],['../class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#af3bd3f99355e53854fc17d086a7a95c9',1,'DelegateLib::DelegateMemberSpAsync< TClass, RetType(Args...)>::Clone()'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a12be5d3ae814bea5de0df73d2807bedd',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::Clone()'],['../class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#ac4e2726464bd640ef6c7993afe95e1ca',1,'DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>::Clone()'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a2f80842f6fce3a49b26fd09d5f0ed283',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::Clone()'],['../class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ac1e27a71399c2444f302bfec7c21ae44',1,'DelegateLib::DelegateMemberSpAsyncWait< TClass, RetType(Args...)>::Clone()'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a06308fd077f75299814b78d042e52ac0',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::Clone()']]], + ['clear_0',['Clear',['../class_delegate_lib_1_1_delegate_free_3_01_ret_type_07_args_8_8_8_08_4.html#a32daf44235f34ed06a33fb5cdf768842',1,'DelegateLib::DelegateFree< RetType(Args...)>::Clear()'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a94073c6581ff7739523e7c8bfe57caa0',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::Clear()'],['../class_delegate_lib_1_1_delegate_function_3_01_ret_type_07_args_8_8_8_08_4.html#a63c632ed0a4fd7a40c27a8f05dbefa50',1,'DelegateLib::DelegateFunction< RetType(Args...)>::Clear()'],['../class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#acbfa6d7a2393fb734d3ba38b794809b7',1,'DelegateLib::MulticastDelegate< RetType(Args...)>::Clear()'],['../class_delegate_lib_1_1_multicast_delegate_safe_3_01_ret_type_07_args_8_8_8_08_4.html#a9732c67d0b37b2418fc776a4a6d5c26d',1,'DelegateLib::MulticastDelegateSafe< RetType(Args...)>::Clear()'],['../class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#af44894cbde71e2cae0687381f5e07eff',1,'DelegateLib::SinglecastDelegate< RetType(Args...)>::Clear()']]], + ['clone_1',['Clone',['../class_delegate_lib_1_1_delegate_base.html#a1167262e335827e9471abceba1321266',1,'DelegateLib::DelegateBase::Clone()'],['../class_delegate_lib_1_1_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a8ae51fd14e2d7f0193f394095c3f6ed0',1,'DelegateLib::Delegate< RetType(Args...)>::Clone()'],['../class_delegate_lib_1_1_delegate_free_3_01_ret_type_07_args_8_8_8_08_4.html#a6d5ded6c118f909f556b9596737a2347',1,'DelegateLib::DelegateFree< RetType(Args...)>::Clone()'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#af4eb4fba1da063063b5d4ba47de4299a',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::Clone()'],['../class_delegate_lib_1_1_delegate_function_3_01_ret_type_07_args_8_8_8_08_4.html#aff35a45eb0c37f87d4a566c3fabd0850',1,'DelegateLib::DelegateFunction< RetType(Args...)>::Clone()'],['../class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#afe0877cb9e0d97f5b5ca408de1562b89',1,'DelegateLib::DelegateFreeAsync< RetType(Args...)>::Clone()'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#acbd04f7121278e2dae40311c4f303d9b',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::Clone()'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a12be5d3ae814bea5de0df73d2807bedd',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::Clone()'],['../class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#ac4e2726464bd640ef6c7993afe95e1ca',1,'DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>::Clone()'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a2f80842f6fce3a49b26fd09d5f0ed283',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::Clone()'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a06308fd077f75299814b78d042e52ac0',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::Clone()']]], ['copy_5fcommon_5fcode_2',['copy_common_code',['../namespacesrc__dup.html#afc752b49e0a83100098f19079eaafef1',1,'src_dup']]] ]; diff --git a/doxygen/html/search/functions_3.js b/doxygen/html/search/functions_3.js index 533ab8f..f566899 100644 --- a/doxygen/html/search/functions_3.js +++ b/doxygen/html/search/functions_3.js @@ -7,15 +7,12 @@ var searchData= ['delegatefreeasync_4',['DelegateFreeAsync',['../class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#aa527333a1d851bf51a8805496983691a',1,'DelegateLib::DelegateFreeAsync< RetType(Args...)>::DelegateFreeAsync(FreeFunc func, DelegateThread &thread)'],['../class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#af28c5262b9be9417d3b40804b6d473d3',1,'DelegateLib::DelegateFreeAsync< RetType(Args...)>::DelegateFreeAsync(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#a8d63a381bb317b348715309c5e741a36',1,'DelegateLib::DelegateFreeAsync< RetType(Args...)>::DelegateFreeAsync(ClassType &&rhs) noexcept'],['../class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#a7e948b875da7fc4bafe5e6b74b47ecf4',1,'DelegateLib::DelegateFreeAsync< RetType(Args...)>::DelegateFreeAsync()=delete']]], ['delegatefreeasyncwait_5',['DelegateFreeAsyncWait',['../class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#ab6b9417906375d1e4b8db019f9a84193',1,'DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>::DelegateFreeAsyncWait(FreeFunc func, DelegateThread &thread, std::chrono::milliseconds timeout=WAIT_INFINITE)'],['../class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a0548bcb02ed5a326786b2ae237fedc3c',1,'DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>::DelegateFreeAsyncWait(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a09e05865191bc2cb92b27a1fc9a91304',1,'DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>::DelegateFreeAsyncWait(ClassType &&rhs) noexcept'],['../class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a1818f2fdb4605093b52d0d19b3aef5fa',1,'DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>::DelegateFreeAsyncWait()=delete']]], ['delegatefunction_6',['DelegateFunction',['../class_delegate_lib_1_1_delegate_function_3_01_ret_type_07_args_8_8_8_08_4.html#a4f5654f2336389d28212ec1d38c7f56d',1,'DelegateLib::DelegateFunction< RetType(Args...)>::DelegateFunction(FunctionType func)'],['../class_delegate_lib_1_1_delegate_function_3_01_ret_type_07_args_8_8_8_08_4.html#a1a92291f285ef7ef68cdc61b2201c5b5',1,'DelegateLib::DelegateFunction< RetType(Args...)>::DelegateFunction(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_function_3_01_ret_type_07_args_8_8_8_08_4.html#ae75aab7b61893e8c842451491f72be23',1,'DelegateLib::DelegateFunction< RetType(Args...)>::DelegateFunction(ClassType &&rhs) noexcept'],['../class_delegate_lib_1_1_delegate_function_3_01_ret_type_07_args_8_8_8_08_4.html#a7080af7cb53567524dcfa05eb092c427',1,'DelegateLib::DelegateFunction< RetType(Args...)>::DelegateFunction()=default']]], - ['delegatefunctionasync_7',['DelegateFunctionAsync',['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a46501e1a3392ed1d13e3f3cba8eb2df0',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::DelegateFunctionAsync(FunctionType func, DelegateThread &thread)'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a2fb983602c9e3fcecc54907f13b748ce',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::DelegateFunctionAsync(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#ae32a58387b3b00e002763f3244310fab',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::DelegateFunctionAsync()=delete']]], - ['delegatefunctionasyncwait_8',['DelegateFunctionAsyncWait',['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a12fee611f64b1ff921f144456f735c34',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::DelegateFunctionAsyncWait(FunctionType func, DelegateThread &thread, std::chrono::milliseconds timeout=WAIT_INFINITE)'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a49ee2d06133beb8f1f97d9435dd233d8',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::DelegateFunctionAsyncWait(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#afae9b073f590b47117d0ee00e100b7e2',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::DelegateFunctionAsyncWait()=delete']]], - ['delegateinvoke_9',['DelegateInvoke',['../class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#a18d39e4e8e3e6906fd9c07ada1ac5bc6',1,'DelegateLib::DelegateFreeAsync< RetType(Args...)>::DelegateInvoke()'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a97ee00052f6de71e7910784dce3b0fa4',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::DelegateInvoke()'],['../class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a2402ad65efec989ec7d9bc671ec066ae',1,'DelegateLib::DelegateMemberSpAsync< TClass, RetType(Args...)>::DelegateInvoke()'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a56930924ffa7d6662874675263e89bc5',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::DelegateInvoke()'],['../class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#aeca8d0211d34404e9fd2ecb4d0d356b9',1,'DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>::DelegateInvoke()'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a20e9f7755ba4b19fb12988da5f8fe6f7',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::DelegateInvoke()'],['../class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a89a54b3aa7333005761c42b4335d728a',1,'DelegateLib::DelegateMemberSpAsyncWait< TClass, RetType(Args...)>::DelegateInvoke()'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a8a0cfe8f1e6f7bc06c161a1f210c6aa7',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::DelegateInvoke()'],['../class_delegate_lib_1_1_i_delegate_invoker.html#a1386e5a1c2650fb1e5511a16cbb5b1f6',1,'DelegateLib::IDelegateInvoker::DelegateInvoke()']]], - ['delegatemember_10',['DelegateMember',['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ac0ebe807ef2e92dab70422a6f97a461f',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::DelegateMember(ObjectPtr object, MemberFunc func)'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ab772a635e195f3553f9c43f344b262df',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::DelegateMember(ObjectPtr object, ConstMemberFunc func)'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a322dd315ac65ec9fc88616913cf222c3',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::DelegateMember(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a5fc8a23d96dfd6c0fda2d7e9d73966a5',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::DelegateMember(ClassType &&rhs) noexcept'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a4ab91c91146c582b15ad0231b539323f',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::DelegateMember()=default']]], - ['delegatememberasync_11',['DelegateMemberAsync',['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a8fe4844542d5e2881cb85e7c5f8cc1c9',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::DelegateMemberAsync(ObjectPtr object, MemberFunc func, DelegateThread &thread)'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a797d31931f53b5c43c75b712e2c4acc1',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::DelegateMemberAsync(ObjectPtr object, ConstMemberFunc func, DelegateThread &thread)'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a222976657b434d64f0c3a6d5dc4426c4',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::DelegateMemberAsync(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a498aee49e9441a11f859ead02545b79c',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::DelegateMemberAsync()=delete']]], - ['delegatememberasyncwait_12',['DelegateMemberAsyncWait',['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a9c9a5f01b71911ff87ce41da11d9bd76',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::DelegateMemberAsyncWait(ObjectPtr object, MemberFunc func, DelegateThread &thread, std::chrono::milliseconds timeout=WAIT_INFINITE)'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a3e831f0389d2ddfa37c5c6a24f145dd4',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::DelegateMemberAsyncWait(ObjectPtr object, ConstMemberFunc func, DelegateThread &thread, std::chrono::milliseconds timeout)'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a0b1ea98a55b2871d5b21c3d85d811baf',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::DelegateMemberAsyncWait(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a93fccd873d370ab1c6ce08a8d731a85e',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::DelegateMemberAsyncWait()=delete']]], - ['delegatemembersp_13',['DelegateMemberSp',['../class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a59cd7235ba47985fddfe207a077da59b',1,'DelegateLib::DelegateMemberSp< TClass, RetType(Args...)>::DelegateMemberSp(ObjectPtr object, MemberFunc func)'],['../class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a1441cf9d3f8294e73138f88ec0296749',1,'DelegateLib::DelegateMemberSp< TClass, RetType(Args...)>::DelegateMemberSp(ObjectPtr object, ConstMemberFunc func)'],['../class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aec2c3e4602c84a524c72e6f0833170e3',1,'DelegateLib::DelegateMemberSp< TClass, RetType(Args...)>::DelegateMemberSp(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ab0cbc1c7a24738c53121efa1149e24f2',1,'DelegateLib::DelegateMemberSp< TClass, RetType(Args...)>::DelegateMemberSp(ClassType &&rhs) noexcept'],['../class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a030851905e967595316455be555e2837',1,'DelegateLib::DelegateMemberSp< TClass, RetType(Args...)>::DelegateMemberSp()=default']]], - ['delegatememberspasync_14',['DelegateMemberSpAsync',['../class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ac13850e9003f5cd8cb81077b6011b76a',1,'DelegateLib::DelegateMemberSpAsync< TClass, RetType(Args...)>::DelegateMemberSpAsync(ObjectPtr object, MemberFunc func, DelegateThread &thread)'],['../class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a0415b2d8187f48557166d43ee5746b8e',1,'DelegateLib::DelegateMemberSpAsync< TClass, RetType(Args...)>::DelegateMemberSpAsync(ObjectPtr object, ConstMemberFunc func, DelegateThread &thread)'],['../class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a4aae9e2e271efa00a60d6f6c61d454ec',1,'DelegateLib::DelegateMemberSpAsync< TClass, RetType(Args...)>::DelegateMemberSpAsync(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a95abbb7549ad531efec4a5fe629ca925',1,'DelegateLib::DelegateMemberSpAsync< TClass, RetType(Args...)>::DelegateMemberSpAsync()=delete']]], - ['delegatememberspasyncwait_15',['DelegateMemberSpAsyncWait',['../class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a9da9fefa1174dd4d2c5f8eb398a9ea97',1,'DelegateLib::DelegateMemberSpAsyncWait< TClass, RetType(Args...)>::DelegateMemberSpAsyncWait(ObjectPtr object, MemberFunc func, DelegateThread &thread, std::chrono::milliseconds timeout=WAIT_INFINITE)'],['../class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a8b5495da7bbed3d691b5b7881c495018',1,'DelegateLib::DelegateMemberSpAsyncWait< TClass, RetType(Args...)>::DelegateMemberSpAsyncWait(ObjectPtr object, ConstMemberFunc func, DelegateThread &thread, std::chrono::milliseconds timeout)'],['../class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a6e64aa7476c1cc451d8ac21f660953a8',1,'DelegateLib::DelegateMemberSpAsyncWait< TClass, RetType(Args...)>::DelegateMemberSpAsyncWait(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aad11185618821cd2a0cfa68dc2af1e25',1,'DelegateLib::DelegateMemberSpAsyncWait< TClass, RetType(Args...)>::DelegateMemberSpAsyncWait()=delete']]], - ['delegatemsg_16',['DelegateMsg',['../class_delegate_lib_1_1_delegate_msg.html#ad0ce3c1203f3f485d18b2be60f8bf703',1,'DelegateLib::DelegateMsg']]], - ['dispatchdelegate_17',['DispatchDelegate',['../class_delegate_lib_1_1_delegate_thread.html#a9a69145597e92bd096062489b14560ad',1,'DelegateLib::DelegateThread']]] + ['delegatefunctionasync_7',['DelegateFunctionAsync',['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a46501e1a3392ed1d13e3f3cba8eb2df0',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::DelegateFunctionAsync(FunctionType func, DelegateThread &thread)'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a2fb983602c9e3fcecc54907f13b748ce',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::DelegateFunctionAsync(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#adeef2c1b2f887384a21024779b298445',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::DelegateFunctionAsync(ClassType &&rhs) noexcept'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#ae32a58387b3b00e002763f3244310fab',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::DelegateFunctionAsync()=delete']]], + ['delegatefunctionasyncwait_8',['DelegateFunctionAsyncWait',['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a12fee611f64b1ff921f144456f735c34',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::DelegateFunctionAsyncWait(FunctionType func, DelegateThread &thread, std::chrono::milliseconds timeout=WAIT_INFINITE)'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a49ee2d06133beb8f1f97d9435dd233d8',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::DelegateFunctionAsyncWait(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a61de38703ed39347662b0d523940751a',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::DelegateFunctionAsyncWait(ClassType &&rhs) noexcept'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#afae9b073f590b47117d0ee00e100b7e2',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::DelegateFunctionAsyncWait()=delete']]], + ['delegateinvoke_9',['DelegateInvoke',['../class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#a24785156e3b7888a423a9d4a71573e40',1,'DelegateLib::DelegateFreeAsync< RetType(Args...)>::DelegateInvoke()'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a470bad2bda18c47a169b88a923d06fa6',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::DelegateInvoke()'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a2091d50db4b3be6334c66dc8a5b8fddc',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::DelegateInvoke()'],['../class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#aeca8d0211d34404e9fd2ecb4d0d356b9',1,'DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>::DelegateInvoke()'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a20e9f7755ba4b19fb12988da5f8fe6f7',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::DelegateInvoke()'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a8a0cfe8f1e6f7bc06c161a1f210c6aa7',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::DelegateInvoke()'],['../class_delegate_lib_1_1_i_delegate_invoker.html#a1386e5a1c2650fb1e5511a16cbb5b1f6',1,'DelegateLib::IDelegateInvoker::DelegateInvoke()']]], + ['delegatemember_10',['DelegateMember',['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a39bb526ecf387e3ce23603c0ddab26ea',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::DelegateMember(SharedPtr object, MemberFunc func)'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a6ea857874b53a0a99a2cfe20ad31e266',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::DelegateMember(SharedPtr object, ConstMemberFunc func)'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ac0ebe807ef2e92dab70422a6f97a461f',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::DelegateMember(ObjectPtr object, MemberFunc func)'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ab772a635e195f3553f9c43f344b262df',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::DelegateMember(ObjectPtr object, ConstMemberFunc func)'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a322dd315ac65ec9fc88616913cf222c3',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::DelegateMember(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a5fc8a23d96dfd6c0fda2d7e9d73966a5',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::DelegateMember(ClassType &&rhs) noexcept'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a4ab91c91146c582b15ad0231b539323f',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::DelegateMember()=default']]], + ['delegatememberasync_11',['DelegateMemberAsync',['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#afff94fad479eda85f2c93d35187221c0',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::DelegateMemberAsync(SharedPtr object, MemberFunc func, DelegateThread &thread)'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a4f4eceeb29f6e3f4afe18baeccb43e82',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::DelegateMemberAsync(SharedPtr object, ConstMemberFunc func, DelegateThread &thread)'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a8fe4844542d5e2881cb85e7c5f8cc1c9',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::DelegateMemberAsync(ObjectPtr object, MemberFunc func, DelegateThread &thread)'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a797d31931f53b5c43c75b712e2c4acc1',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::DelegateMemberAsync(ObjectPtr object, ConstMemberFunc func, DelegateThread &thread)'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a222976657b434d64f0c3a6d5dc4426c4',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::DelegateMemberAsync(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ad28ce245f32ae9de24542789d8727005',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::DelegateMemberAsync(ClassType &&rhs) noexcept'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a498aee49e9441a11f859ead02545b79c',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::DelegateMemberAsync()=delete']]], + ['delegatememberasyncwait_12',['DelegateMemberAsyncWait',['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ada8b19fb76daac6e38fc5684a8217112',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::DelegateMemberAsyncWait(SharedPtr object, MemberFunc func, DelegateThread &thread, std::chrono::milliseconds timeout=WAIT_INFINITE)'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#afe99f7555a4c36ba95a08267bf5bb85d',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::DelegateMemberAsyncWait(SharedPtr object, ConstMemberFunc func, DelegateThread &thread, std::chrono::milliseconds timeout)'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a9c9a5f01b71911ff87ce41da11d9bd76',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::DelegateMemberAsyncWait(ObjectPtr object, MemberFunc func, DelegateThread &thread, std::chrono::milliseconds timeout=WAIT_INFINITE)'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a3e831f0389d2ddfa37c5c6a24f145dd4',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::DelegateMemberAsyncWait(ObjectPtr object, ConstMemberFunc func, DelegateThread &thread, std::chrono::milliseconds timeout)'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a0b1ea98a55b2871d5b21c3d85d811baf',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::DelegateMemberAsyncWait(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a4c6ecc8941ffa3e74bc21bebc94f8c6d',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::DelegateMemberAsyncWait(ClassType &&rhs) noexcept'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a93fccd873d370ab1c6ce08a8d731a85e',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::DelegateMemberAsyncWait()=delete']]], + ['delegatemsg_13',['DelegateMsg',['../class_delegate_lib_1_1_delegate_msg.html#ad0ce3c1203f3f485d18b2be60f8bf703',1,'DelegateLib::DelegateMsg']]], + ['dispatchdelegate_14',['DispatchDelegate',['../class_delegate_lib_1_1_delegate_thread.html#a9a69145597e92bd096062489b14560ad',1,'DelegateLib::DelegateThread']]] ]; diff --git a/doxygen/html/search/functions_4.js b/doxygen/html/search/functions_4.js index 35d8459..c470b51 100644 --- a/doxygen/html/search/functions_4.js +++ b/doxygen/html/search/functions_4.js @@ -1,4 +1,4 @@ var searchData= [ - ['empty_0',['Empty',['../class_delegate_lib_1_1_delegate_free_3_01_ret_type_07_args_8_8_8_08_4.html#af8f7c7ac3313f9d219d92272b104024a',1,'DelegateLib::DelegateFree< RetType(Args...)>::Empty()'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aa34f567d476fb8cba1d28d7ec664e3e2',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::Empty()'],['../class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a5159e7d96232836114759797744dd933',1,'DelegateLib::DelegateMemberSp< TClass, RetType(Args...)>::Empty()'],['../class_delegate_lib_1_1_delegate_function_3_01_ret_type_07_args_8_8_8_08_4.html#a957f06ccfe0a582b17c0e30edb3caff5',1,'DelegateLib::DelegateFunction< RetType(Args...)>::Empty()'],['../class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#aecd5f8e6240ee6a7bc748162ef9e46cd',1,'DelegateLib::MulticastDelegate< RetType(Args...)>::Empty()'],['../class_delegate_lib_1_1_multicast_delegate_safe_3_01_ret_type_07_args_8_8_8_08_4.html#aafcf6d25ef4c29c27fcffc7d1c56075c',1,'DelegateLib::MulticastDelegateSafe< RetType(Args...)>::Empty()'],['../class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a2cee3825995b4400eb0924c3bc54b382',1,'DelegateLib::SinglecastDelegate< RetType(Args...)>::Empty()']]] + ['empty_0',['Empty',['../class_delegate_lib_1_1_delegate_free_3_01_ret_type_07_args_8_8_8_08_4.html#af8f7c7ac3313f9d219d92272b104024a',1,'DelegateLib::DelegateFree< RetType(Args...)>::Empty()'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aa34f567d476fb8cba1d28d7ec664e3e2',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::Empty()'],['../class_delegate_lib_1_1_delegate_function_3_01_ret_type_07_args_8_8_8_08_4.html#a957f06ccfe0a582b17c0e30edb3caff5',1,'DelegateLib::DelegateFunction< RetType(Args...)>::Empty()'],['../class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#aecd5f8e6240ee6a7bc748162ef9e46cd',1,'DelegateLib::MulticastDelegate< RetType(Args...)>::Empty()'],['../class_delegate_lib_1_1_multicast_delegate_safe_3_01_ret_type_07_args_8_8_8_08_4.html#aafcf6d25ef4c29c27fcffc7d1c56075c',1,'DelegateLib::MulticastDelegateSafe< RetType(Args...)>::Empty()'],['../class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a2cee3825995b4400eb0924c3bc54b382',1,'DelegateLib::SinglecastDelegate< RetType(Args...)>::Empty()']]] ]; diff --git a/doxygen/html/search/functions_5.js b/doxygen/html/search/functions_5.js index 5c25dcb..8ffb1ef 100644 --- a/doxygen/html/search/functions_5.js +++ b/doxygen/html/search/functions_5.js @@ -4,8 +4,8 @@ var searchData= ['getdelegateinvoker_1',['GetDelegateInvoker',['../class_delegate_lib_1_1_delegate_msg.html#a61f5dfba67aa879a51239f6c1edbd446',1,'DelegateLib::DelegateMsg']]], ['getinvokerwaiting_2',['GetInvokerWaiting',['../class_delegate_lib_1_1_delegate_async_wait_msg.html#ae36cc3b75be6d2698213ef25c43ad390',1,'DelegateLib::DelegateAsyncWaitMsg']]], ['getlock_3',['GetLock',['../class_delegate_lib_1_1_delegate_async_wait_msg.html#ac8ca2d43973ccf4141747494448cd930',1,'DelegateLib::DelegateAsyncWaitMsg']]], - ['getretval_4',['GetRetVal',['../class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a1c22a234daf732b6818127a5311572f4',1,'DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>::GetRetVal()'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a4f336c0ec1773959bdc114685a493ac3',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::GetRetVal()'],['../class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a4ab380c00f346e894c9f27658d512bb4',1,'DelegateLib::DelegateMemberSpAsyncWait< TClass, RetType(Args...)>::GetRetVal()'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a19e32658a811a5b584436505c46d8cf7',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::GetRetVal()']]], + ['getretval_4',['GetRetVal',['../class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a1c22a234daf732b6818127a5311572f4',1,'DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>::GetRetVal()'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a4f336c0ec1773959bdc114685a493ac3',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::GetRetVal()'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a19e32658a811a5b584436505c46d8cf7',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::GetRetVal()']]], ['getsema_5',['GetSema',['../class_delegate_lib_1_1_delegate_async_wait_msg.html#a6730a8609639d49721dbe2389971e3bb',1,'DelegateLib::DelegateAsyncWaitMsg']]], - ['getsync_6',['GetSync',['../class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#a73fa99c10f6b68b771bb8e83adffc444',1,'DelegateLib::DelegateFreeAsync< RetType(Args...)>::GetSync()'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aec8a8636e131eb2746311426dacb7490',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::GetSync()'],['../class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a469f4b8d8536cfc049d4767fffdd3a15',1,'DelegateLib::DelegateMemberSpAsync< TClass, RetType(Args...)>::GetSync()'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a24d22901f60ab741597e253b7f02c174',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::GetSync()']]], - ['getthread_7',['GetThread',['../class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#ad5e3487debe918c8c62d23a94bd9aac8',1,'DelegateLib::DelegateFreeAsync< RetType(Args...)>::GetThread()'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aca30b381dee966dc0dab34e41080af4e',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::GetThread()'],['../class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ae2028e6668b1e1f4ab8538d9e4be230a',1,'DelegateLib::DelegateMemberSpAsync< TClass, RetType(Args...)>::GetThread()'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#aeafdaa26caccb52408afe591e5c54aca',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::GetThread()']]] + ['getsync_6',['GetSync',['../class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#a73fa99c10f6b68b771bb8e83adffc444',1,'DelegateLib::DelegateFreeAsync< RetType(Args...)>::GetSync()'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aec8a8636e131eb2746311426dacb7490',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::GetSync()'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a24d22901f60ab741597e253b7f02c174',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::GetSync()']]], + ['getthread_7',['GetThread',['../class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#ad5e3487debe918c8c62d23a94bd9aac8',1,'DelegateLib::DelegateFreeAsync< RetType(Args...)>::GetThread()'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aca30b381dee966dc0dab34e41080af4e',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::GetThread()'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#aeafdaa26caccb52408afe591e5c54aca',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::GetThread()']]] ]; diff --git a/doxygen/html/search/functions_7.js b/doxygen/html/search/functions_7.js index f17b9a3..7f25df7 100644 --- a/doxygen/html/search/functions_7.js +++ b/doxygen/html/search/functions_7.js @@ -1,4 +1,4 @@ var searchData= [ - ['issuccess_0',['IsSuccess',['../class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a14fd5bec6ca0f9a293d0aade1848ca32',1,'DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>::IsSuccess()'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ae14cab8e15a5b33521f4a4e54a8fcdce',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::IsSuccess()'],['../class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#af04d07b743e8adb23111a837dea21185',1,'DelegateLib::DelegateMemberSpAsyncWait< TClass, RetType(Args...)>::IsSuccess()'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a5e9ae067e7bc5c3621a6ad80d39cd0bc',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::IsSuccess()']]] + ['issuccess_0',['IsSuccess',['../class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a14fd5bec6ca0f9a293d0aade1848ca32',1,'DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>::IsSuccess()'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ae14cab8e15a5b33521f4a4e54a8fcdce',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::IsSuccess()'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a5e9ae067e7bc5c3621a6ad80d39cd0bc',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::IsSuccess()']]] ]; diff --git a/doxygen/html/search/functions_8.js b/doxygen/html/search/functions_8.js index e8ada14..571d0e1 100644 --- a/doxygen/html/search/functions_8.js +++ b/doxygen/html/search/functions_8.js @@ -1,7 +1,7 @@ var searchData= [ ['make_5ftuple_5fheap_0',['make_tuple_heap',['../namespace_delegate_lib.html#aaec1863ccd49b0020b485d9755ab4705',1,'DelegateLib::make_tuple_heap(xlist< std::shared_ptr< heap_arg_deleter_base > > &heapArgs, std::tuple< Ts... > tup)'],['../namespace_delegate_lib.html#a501fbd3f7de67128ab8cc37154f34cb5',1,'DelegateLib::make_tuple_heap(xlist< std::shared_ptr< heap_arg_deleter_base > > &heapArgs, std::tuple< Ts... > tup, Arg1 arg1, Args... args)']]], - ['makedelegate_1',['MakeDelegate',['../namespace_delegate_lib.html#a75ff1e13f1cb691402002bfccaf9d1b2',1,'DelegateLib::MakeDelegate(RetType(*func)(Args... args))'],['../namespace_delegate_lib.html#a388d9eb1fda04113138b8be61dc94650',1,'DelegateLib::MakeDelegate(TClass *object, RetType(TClass::*func)(Args... args))'],['../namespace_delegate_lib.html#a23f0516caa72547787911fd0f0fc9c1b',1,'DelegateLib::MakeDelegate(std::shared_ptr< TClass > object, RetType(TClass::*func)(Args... args))'],['../namespace_delegate_lib.html#a7616e4b38fca0742748de407497d12c6',1,'DelegateLib::MakeDelegate(std::function< RetType(Args...)> func)'],['../namespace_delegate_lib.html#a577444f047f613a4869e76fad9064f05',1,'DelegateLib::MakeDelegate(RetType(*func)(Args... args), DelegateThread &thread)'],['../namespace_delegate_lib.html#ad93c07a649cc918a05b19e8b351add0d',1,'DelegateLib::MakeDelegate(TClass *object, RetType(TClass::*func)(Args... args), DelegateThread &thread)'],['../namespace_delegate_lib.html#a12cd186bad0206967705aa560e8e21a6',1,'DelegateLib::MakeDelegate(std::shared_ptr< TClass > object, RetVal(TClass::*func)(Args... args), DelegateThread &thread)'],['../namespace_delegate_lib.html#a8f614eab3c1d9527a3b3c1b006b4d6ee',1,'DelegateLib::MakeDelegate(std::function< RetType(Args...)> func, DelegateThread &thread)'],['../namespace_delegate_lib.html#a2fe15d9d206f30899ed86ed0a117217b',1,'DelegateLib::MakeDelegate(RetType(*func)(Args... args), DelegateThread &thread, std::chrono::milliseconds timeout)'],['../namespace_delegate_lib.html#a5db76998112ee428868ac9edfc89b4aa',1,'DelegateLib::MakeDelegate(TClass *object, RetType(TClass::*func)(Args... args), DelegateThread &thread, std::chrono::milliseconds timeout)'],['../namespace_delegate_lib.html#a18a52212b54b5a8994f32fae6d19ec4f',1,'DelegateLib::MakeDelegate(std::shared_ptr< TClass > object, RetVal(TClass::*func)(Args... args), DelegateThread &thread, std::chrono::milliseconds timeout)'],['../namespace_delegate_lib.html#a684f519f3b774007ab1d8b81e32fc647',1,'DelegateLib::MakeDelegate(std::function< RetType(Args...)> func, DelegateThread &thread, std::chrono::milliseconds timeout)']]], + ['makedelegate_1',['MakeDelegate',['../namespace_delegate_lib.html#a75ff1e13f1cb691402002bfccaf9d1b2',1,'DelegateLib::MakeDelegate(RetType(*func)(Args... args))'],['../namespace_delegate_lib.html#a388d9eb1fda04113138b8be61dc94650',1,'DelegateLib::MakeDelegate(TClass *object, RetType(TClass::*func)(Args... args))'],['../namespace_delegate_lib.html#a739d90362b129b98ba2c5a626d655c6a',1,'DelegateLib::MakeDelegate(std::shared_ptr< TClass > object, RetType(TClass::*func)(Args... args))'],['../namespace_delegate_lib.html#a7616e4b38fca0742748de407497d12c6',1,'DelegateLib::MakeDelegate(std::function< RetType(Args...)> func)'],['../namespace_delegate_lib.html#a577444f047f613a4869e76fad9064f05',1,'DelegateLib::MakeDelegate(RetType(*func)(Args... args), DelegateThread &thread)'],['../namespace_delegate_lib.html#ad93c07a649cc918a05b19e8b351add0d',1,'DelegateLib::MakeDelegate(TClass *object, RetType(TClass::*func)(Args... args), DelegateThread &thread)'],['../namespace_delegate_lib.html#a5cc5695faac26dd65571b4ee1121b06c',1,'DelegateLib::MakeDelegate(std::shared_ptr< TClass > object, RetVal(TClass::*func)(Args... args), DelegateThread &thread)'],['../namespace_delegate_lib.html#a8f614eab3c1d9527a3b3c1b006b4d6ee',1,'DelegateLib::MakeDelegate(std::function< RetType(Args...)> func, DelegateThread &thread)'],['../namespace_delegate_lib.html#a2fe15d9d206f30899ed86ed0a117217b',1,'DelegateLib::MakeDelegate(RetType(*func)(Args... args), DelegateThread &thread, std::chrono::milliseconds timeout)'],['../namespace_delegate_lib.html#a5db76998112ee428868ac9edfc89b4aa',1,'DelegateLib::MakeDelegate(TClass *object, RetType(TClass::*func)(Args... args), DelegateThread &thread, std::chrono::milliseconds timeout)'],['../namespace_delegate_lib.html#a2ec853f3e1fa47faba54b04fb3c5232d',1,'DelegateLib::MakeDelegate(std::shared_ptr< TClass > object, RetVal(TClass::*func)(Args... args), DelegateThread &thread, std::chrono::milliseconds timeout)'],['../namespace_delegate_lib.html#a684f519f3b774007ab1d8b81e32fc647',1,'DelegateLib::MakeDelegate(std::function< RetType(Args...)> func, DelegateThread &thread, std::chrono::milliseconds timeout)']]], ['multicastdelegate_2',['MulticastDelegate',['../class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a9148f413c457f0ab63e2f613a6289f66',1,'DelegateLib::MulticastDelegate< RetType(Args...)>']]], ['multicastdelegatesafe_3',['MulticastDelegateSafe',['../class_delegate_lib_1_1_multicast_delegate_safe_3_01_ret_type_07_args_8_8_8_08_4.html#a4ff20ed5d4dd2387e250ec44ada98c36',1,'DelegateLib::MulticastDelegateSafe< RetType(Args...)>']]] ]; diff --git a/doxygen/html/search/functions_9.js b/doxygen/html/search/functions_9.js index e5ed783..470ed92 100644 --- a/doxygen/html/search/functions_9.js +++ b/doxygen/html/search/functions_9.js @@ -1,10 +1,10 @@ var searchData= [ - ['operator_20bool_0',['operator bool',['../class_delegate_lib_1_1_delegate_free_3_01_ret_type_07_args_8_8_8_08_4.html#a7ded9bcd5b51d3d15d9470c9f21af216',1,'DelegateLib::DelegateFree< RetType(Args...)>::operator bool()'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a412150bb991a3941c45353e4d20303ec',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::operator bool()'],['../class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a0464754344807471b4a4b96ac4622006',1,'DelegateLib::DelegateMemberSp< TClass, RetType(Args...)>::operator bool()'],['../class_delegate_lib_1_1_delegate_function_3_01_ret_type_07_args_8_8_8_08_4.html#a95342174adf1cc93cea485abcc74b49b',1,'DelegateLib::DelegateFunction< RetType(Args...)>::operator bool()'],['../class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a33bcb6658cd012ab8801963f73a13fe9',1,'DelegateLib::MulticastDelegate< RetType(Args...)>::operator bool()'],['../class_delegate_lib_1_1_multicast_delegate_safe_3_01_ret_type_07_args_8_8_8_08_4.html#a2da23ad790c9b462beb7a5d3bff788dd',1,'DelegateLib::MulticastDelegateSafe< RetType(Args...)>::operator bool()'],['../class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#aee196f10c4064cd51da5625678248388',1,'DelegateLib::SinglecastDelegate< RetType(Args...)>::operator bool()']]], + ['operator_20bool_0',['operator bool',['../class_delegate_lib_1_1_delegate_free_3_01_ret_type_07_args_8_8_8_08_4.html#a7ded9bcd5b51d3d15d9470c9f21af216',1,'DelegateLib::DelegateFree< RetType(Args...)>::operator bool()'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a412150bb991a3941c45353e4d20303ec',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::operator bool()'],['../class_delegate_lib_1_1_delegate_function_3_01_ret_type_07_args_8_8_8_08_4.html#a95342174adf1cc93cea485abcc74b49b',1,'DelegateLib::DelegateFunction< RetType(Args...)>::operator bool()'],['../class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a33bcb6658cd012ab8801963f73a13fe9',1,'DelegateLib::MulticastDelegate< RetType(Args...)>::operator bool()'],['../class_delegate_lib_1_1_multicast_delegate_safe_3_01_ret_type_07_args_8_8_8_08_4.html#a2da23ad790c9b462beb7a5d3bff788dd',1,'DelegateLib::MulticastDelegateSafe< RetType(Args...)>::operator bool()'],['../class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#aee196f10c4064cd51da5625678248388',1,'DelegateLib::SinglecastDelegate< RetType(Args...)>::operator bool()']]], ['operator_21_3d_1',['operator!=',['../class_delegate_lib_1_1_delegate_base.html#a6e908a657cd3651bf4e833a0b79e1564',1,'DelegateLib::DelegateBase']]], - ['operator_28_29_2',['operator()',['../class_delegate_lib_1_1_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a12b1e716158f0f205bcf3b6d576b35cf',1,'DelegateLib::Delegate< RetType(Args...)>::operator()()'],['../class_delegate_lib_1_1_delegate_free_3_01_ret_type_07_args_8_8_8_08_4.html#a3e31fdd4391c352138672960a50e973d',1,'DelegateLib::DelegateFree< RetType(Args...)>::operator()()'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ac37f599bb6493c11c88a015c877b1530',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::operator()()'],['../class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ac4c0324e61517044e73fe94ec8595b3f',1,'DelegateLib::DelegateMemberSp< TClass, RetType(Args...)>::operator()()'],['../class_delegate_lib_1_1_delegate_function_3_01_ret_type_07_args_8_8_8_08_4.html#a782bbda436c2de4749fc8c098dd75945',1,'DelegateLib::DelegateFunction< RetType(Args...)>::operator()()'],['../class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#a8d6f10d5f2c1b9215b59946a77edf6f6',1,'DelegateLib::DelegateFreeAsync< RetType(Args...)>::operator()()'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aa73f04631d245b5bf76b6e3025a0b5e5',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::operator()()'],['../class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a2be69705010b23423760a63822b2f408',1,'DelegateLib::DelegateMemberSpAsync< TClass, RetType(Args...)>::operator()()'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a1e6153da03f3d607b1e18deb391c04a4',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::operator()()'],['../class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a79322ee2599e067f1be1ed9f803bb211',1,'DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>::operator()()'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a3cb42151d01cc03b45f2248fc513d847',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::operator()()'],['../class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aedbf462168487ee92af82d8a672f3cbc',1,'DelegateLib::DelegateMemberSpAsyncWait< TClass, RetType(Args...)>::operator()()'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#abe10c60e4a83a5611e0b9bc9ed6e05e1',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::operator()()'],['../class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a8273659a7d2a5febd0e1e3ce8c7fe6b7',1,'DelegateLib::MulticastDelegate< RetType(Args...)>::operator()()'],['../class_delegate_lib_1_1_multicast_delegate_safe_3_01_ret_type_07_args_8_8_8_08_4.html#a084351c99acfba753f96b3b366522adb',1,'DelegateLib::MulticastDelegateSafe< RetType(Args...)>::operator()()'],['../class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a29fd174ba1060d37e164e45ed3e9b383',1,'DelegateLib::SinglecastDelegate< RetType(Args...)>::operator()()']]], + ['operator_28_29_2',['operator()',['../class_delegate_lib_1_1_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a12b1e716158f0f205bcf3b6d576b35cf',1,'DelegateLib::Delegate< RetType(Args...)>::operator()()'],['../class_delegate_lib_1_1_delegate_free_3_01_ret_type_07_args_8_8_8_08_4.html#a3e31fdd4391c352138672960a50e973d',1,'DelegateLib::DelegateFree< RetType(Args...)>::operator()()'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ac37f599bb6493c11c88a015c877b1530',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::operator()()'],['../class_delegate_lib_1_1_delegate_function_3_01_ret_type_07_args_8_8_8_08_4.html#a782bbda436c2de4749fc8c098dd75945',1,'DelegateLib::DelegateFunction< RetType(Args...)>::operator()()'],['../class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#a8d6f10d5f2c1b9215b59946a77edf6f6',1,'DelegateLib::DelegateFreeAsync< RetType(Args...)>::operator()()'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aa73f04631d245b5bf76b6e3025a0b5e5',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::operator()()'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a1e6153da03f3d607b1e18deb391c04a4',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::operator()()'],['../class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a79322ee2599e067f1be1ed9f803bb211',1,'DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>::operator()()'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a3cb42151d01cc03b45f2248fc513d847',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::operator()()'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#abe10c60e4a83a5611e0b9bc9ed6e05e1',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::operator()()'],['../class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a8273659a7d2a5febd0e1e3ce8c7fe6b7',1,'DelegateLib::MulticastDelegate< RetType(Args...)>::operator()()'],['../class_delegate_lib_1_1_multicast_delegate_safe_3_01_ret_type_07_args_8_8_8_08_4.html#a084351c99acfba753f96b3b366522adb',1,'DelegateLib::MulticastDelegateSafe< RetType(Args...)>::operator()()'],['../class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a29fd174ba1060d37e164e45ed3e9b383',1,'DelegateLib::SinglecastDelegate< RetType(Args...)>::operator()()']]], ['operator_2b_3d_3',['operator+=',['../class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#afc6074436f261bcdff69bb4b241e7597',1,'DelegateLib::MulticastDelegate< RetType(Args...)>::operator+=()'],['../class_delegate_lib_1_1_multicast_delegate_safe_3_01_ret_type_07_args_8_8_8_08_4.html#a74ddb360c1f0a668b416551d16c5d7cc',1,'DelegateLib::MulticastDelegateSafe< RetType(Args...)>::operator+=()']]], ['operator_2d_3d_4',['operator-=',['../class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a30edf6d7c3ed0db8904a7e58293cc062',1,'DelegateLib::MulticastDelegate< RetType(Args...)>::operator-=()'],['../class_delegate_lib_1_1_multicast_delegate_safe_3_01_ret_type_07_args_8_8_8_08_4.html#a83fd07966d22b666e67c9b4e2f2a3913',1,'DelegateLib::MulticastDelegateSafe< RetType(Args...)>::operator-=()']]], - ['operator_3d_5',['operator=',['../class_delegate_lib_1_1_delegate_free_3_01_ret_type_07_args_8_8_8_08_4.html#aa4a27109dccd3bdeb31cdee5107b6137',1,'DelegateLib::DelegateFree< RetType(Args...)>::operator=(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_free_3_01_ret_type_07_args_8_8_8_08_4.html#aeaff06f2a709a7602af82cb936e68bbf',1,'DelegateLib::DelegateFree< RetType(Args...)>::operator=(ClassType &&rhs) noexcept'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ad06b7ee91cc4f40440a2841a2fe2ec83',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::operator=(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ae31b9598c8f3e72d2adcbd9c0a1269e1',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::operator=(ClassType &&rhs) noexcept'],['../class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a13b7d137db69a41e83da14c9b4f2fb06',1,'DelegateLib::DelegateMemberSp< TClass, RetType(Args...)>::operator=(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a9030c87d5c2a045761694e1699829a09',1,'DelegateLib::DelegateMemberSp< TClass, RetType(Args...)>::operator=(ClassType &&rhs) noexcept'],['../class_delegate_lib_1_1_delegate_function_3_01_ret_type_07_args_8_8_8_08_4.html#abd264e188f728eb9ef1ca60a33000881',1,'DelegateLib::DelegateFunction< RetType(Args...)>::operator=(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_function_3_01_ret_type_07_args_8_8_8_08_4.html#a59314657e3dfd95c0cfcff23e0356e56',1,'DelegateLib::DelegateFunction< RetType(Args...)>::operator=(ClassType &&rhs) noexcept'],['../class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#a681a97f01b1b14b4149cd82e3269ddb4',1,'DelegateLib::DelegateFreeAsync< RetType(Args...)>::operator=(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#aec5509934f475c10b4eee26512a08c33',1,'DelegateLib::DelegateFreeAsync< RetType(Args...)>::operator=(ClassType &&rhs) noexcept'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a46343959b0ea03ef02f1ebe3f8182814',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::operator=(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a9cd118df91aa22e6c3d4885b1e39329c',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::operator=(ClassType &&rhs) noexcept'],['../class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#adb92f14347b35af2b3154103b1793196',1,'DelegateLib::DelegateMemberSpAsync< TClass, RetType(Args...)>::operator=(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a6563fdeb2a74bdfc8fd7aabe3dd38a43',1,'DelegateLib::DelegateMemberSpAsync< TClass, RetType(Args...)>::operator=(ClassType &&rhs) noexcept'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a203dd774ded780851f79cac05c4c719b',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::operator=(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#ac677a19f9c6ed6f0d5be06e8b1733d37',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::operator=(ClassType &&rhs) noexcept'],['../class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#ad01b49b6d7d19754b2baf7690fae8820',1,'DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>::operator=(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#abdbb3701f55d5d075ea044fbe8f9c6d3',1,'DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>::operator=(ClassType &&rhs) noexcept'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a6e96e0302225e7c2df7bd2daca5a6d26',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::operator=(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ad077b1a6778b6ece6558d425c44a8b5f',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::operator=(ClassType &&rhs) noexcept'],['../class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a6d24d274b5686a6cfda2255f2c6049de',1,'DelegateLib::DelegateMemberSpAsyncWait< TClass, RetType(Args...)>::operator=(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a19b1d7c2f6892cd6dd6dd25182e9d07d',1,'DelegateLib::DelegateMemberSpAsyncWait< TClass, RetType(Args...)>::operator=(ClassType &&rhs) noexcept'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a6c3628f557fdff90db3bf3f7df4f28f1',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::operator=(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#aeb01775a1f4fbf735e16aca245fc08b8',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::operator=(ClassType &&rhs) noexcept'],['../class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#aa9da380779be0a93c208f17ec0bb5e83',1,'DelegateLib::SinglecastDelegate< RetType(Args...)>::operator=(const Delegate< RetType(Args...)> &delegate)'],['../class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a0bfbe2a3d03ee9e494fe58ba35c953fd',1,'DelegateLib::SinglecastDelegate< RetType(Args...)>::operator=(const Delegate< RetType(Args...)> *delegate)']]], - ['operator_3d_3d_6',['operator==',['../class_delegate_lib_1_1_delegate_base.html#aa77532684ca24f7924662c1f6e2f3bce',1,'DelegateLib::DelegateBase::operator==()'],['../class_delegate_lib_1_1_delegate_free_3_01_ret_type_07_args_8_8_8_08_4.html#a487de94ebd8c683330785e755a6539c2',1,'DelegateLib::DelegateFree< RetType(Args...)>::operator==()'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a90f7904623f6945bd232747a207ef5a7',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::operator==()'],['../class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ab8bc747498a19e4ca3ba9d3cccb756fa',1,'DelegateLib::DelegateMemberSp< TClass, RetType(Args...)>::operator==()'],['../class_delegate_lib_1_1_delegate_function_3_01_ret_type_07_args_8_8_8_08_4.html#a318105c4baad7edc3ab08154aced10cc',1,'DelegateLib::DelegateFunction< RetType(Args...)>::operator==()'],['../class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#a9ef5e4510f2f3378d0dd0c3ff714e3bf',1,'DelegateLib::DelegateFreeAsync< RetType(Args...)>::operator==()'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a367221c5c3b36d7aae675cadaa2c27ba',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::operator==()'],['../class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a6cef069e1ec3020064447a453c3aa91b',1,'DelegateLib::DelegateMemberSpAsync< TClass, RetType(Args...)>::operator==()'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a642fc55c2dfa6f7eb29f016a7194af9a',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::operator==()'],['../class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#ae92c9a822eb76f710468e400d22847c9',1,'DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>::operator==()'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ab9b6a5c6f42ee235c731de9d6df23ece',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::operator==()'],['../class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aafbb90f4eb5ec2fcc05456fe139a6cee',1,'DelegateLib::DelegateMemberSpAsyncWait< TClass, RetType(Args...)>::operator==()'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a0cc272f27fb57a62d2c762f74f032eb2',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::operator==()']]] + ['operator_3d_5',['operator=',['../class_delegate_lib_1_1_delegate_free_3_01_ret_type_07_args_8_8_8_08_4.html#aa4a27109dccd3bdeb31cdee5107b6137',1,'DelegateLib::DelegateFree< RetType(Args...)>::operator=(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_free_3_01_ret_type_07_args_8_8_8_08_4.html#aeaff06f2a709a7602af82cb936e68bbf',1,'DelegateLib::DelegateFree< RetType(Args...)>::operator=(ClassType &&rhs) noexcept'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ad06b7ee91cc4f40440a2841a2fe2ec83',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::operator=(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ae31b9598c8f3e72d2adcbd9c0a1269e1',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::operator=(ClassType &&rhs) noexcept'],['../class_delegate_lib_1_1_delegate_function_3_01_ret_type_07_args_8_8_8_08_4.html#abd264e188f728eb9ef1ca60a33000881',1,'DelegateLib::DelegateFunction< RetType(Args...)>::operator=(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_function_3_01_ret_type_07_args_8_8_8_08_4.html#a59314657e3dfd95c0cfcff23e0356e56',1,'DelegateLib::DelegateFunction< RetType(Args...)>::operator=(ClassType &&rhs) noexcept'],['../class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#a681a97f01b1b14b4149cd82e3269ddb4',1,'DelegateLib::DelegateFreeAsync< RetType(Args...)>::operator=(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#aec5509934f475c10b4eee26512a08c33',1,'DelegateLib::DelegateFreeAsync< RetType(Args...)>::operator=(ClassType &&rhs) noexcept'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a46343959b0ea03ef02f1ebe3f8182814',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::operator=(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a9cd118df91aa22e6c3d4885b1e39329c',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::operator=(ClassType &&rhs) noexcept'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a203dd774ded780851f79cac05c4c719b',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::operator=(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#ac677a19f9c6ed6f0d5be06e8b1733d37',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::operator=(ClassType &&rhs) noexcept'],['../class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#ad01b49b6d7d19754b2baf7690fae8820',1,'DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>::operator=(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#abdbb3701f55d5d075ea044fbe8f9c6d3',1,'DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>::operator=(ClassType &&rhs) noexcept'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a6e96e0302225e7c2df7bd2daca5a6d26',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::operator=(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ad077b1a6778b6ece6558d425c44a8b5f',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::operator=(ClassType &&rhs) noexcept'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a6c3628f557fdff90db3bf3f7df4f28f1',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::operator=(const ClassType &rhs)'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#aeb01775a1f4fbf735e16aca245fc08b8',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::operator=(ClassType &&rhs) noexcept'],['../class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#aa9da380779be0a93c208f17ec0bb5e83',1,'DelegateLib::SinglecastDelegate< RetType(Args...)>::operator=(const Delegate< RetType(Args...)> &delegate)'],['../class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a0bfbe2a3d03ee9e494fe58ba35c953fd',1,'DelegateLib::SinglecastDelegate< RetType(Args...)>::operator=(const Delegate< RetType(Args...)> *delegate)']]], + ['operator_3d_3d_6',['operator==',['../class_delegate_lib_1_1_delegate_base.html#aa77532684ca24f7924662c1f6e2f3bce',1,'DelegateLib::DelegateBase::operator==()'],['../class_delegate_lib_1_1_delegate_free_3_01_ret_type_07_args_8_8_8_08_4.html#a487de94ebd8c683330785e755a6539c2',1,'DelegateLib::DelegateFree< RetType(Args...)>::operator==()'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a90f7904623f6945bd232747a207ef5a7',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::operator==()'],['../class_delegate_lib_1_1_delegate_function_3_01_ret_type_07_args_8_8_8_08_4.html#a318105c4baad7edc3ab08154aced10cc',1,'DelegateLib::DelegateFunction< RetType(Args...)>::operator==()'],['../class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#a9ef5e4510f2f3378d0dd0c3ff714e3bf',1,'DelegateLib::DelegateFreeAsync< RetType(Args...)>::operator==()'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a367221c5c3b36d7aae675cadaa2c27ba',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::operator==()'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a642fc55c2dfa6f7eb29f016a7194af9a',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::operator==()'],['../class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#ae92c9a822eb76f710468e400d22847c9',1,'DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>::operator==()'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ab9b6a5c6f42ee235c731de9d6df23ece',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::operator==()'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a0cc272f27fb57a62d2c762f74f032eb2',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::operator==()']]] ]; diff --git a/doxygen/html/search/functions_b.js b/doxygen/html/search/functions_b.js index f235a42..7a19775 100644 --- a/doxygen/html/search/functions_b.js +++ b/doxygen/html/search/functions_b.js @@ -2,7 +2,7 @@ var searchData= [ ['semaphore_0',['Semaphore',['../class_delegate_lib_1_1_semaphore.html#ab598fb67f4b8ccabd6e86f449ee95f95',1,'DelegateLib::Semaphore']]], ['setinvokerwaiting_1',['SetInvokerWaiting',['../class_delegate_lib_1_1_delegate_async_wait_msg.html#a9a8287c553329db52f3710863a318023',1,'DelegateLib::DelegateAsyncWaitMsg']]], - ['setsync_2',['SetSync',['../class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#ae1af8ea348c4121033e815ffb91ffc7f',1,'DelegateLib::DelegateFreeAsync< RetType(Args...)>::SetSync()'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a93e6a8587d6f62f39f9dcf6e0c016d9b',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::SetSync()'],['../class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a21431c52f8e2a17316aa2a97e0e23cc2',1,'DelegateLib::DelegateMemberSpAsync< TClass, RetType(Args...)>::SetSync()'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#acf44f40ff48ec3f1481b6dca4e08c352',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::SetSync()']]], + ['setsync_2',['SetSync',['../class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#ae1af8ea348c4121033e815ffb91ffc7f',1,'DelegateLib::DelegateFreeAsync< RetType(Args...)>::SetSync()'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a93e6a8587d6f62f39f9dcf6e0c016d9b',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::SetSync()'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#acf44f40ff48ec3f1481b6dca4e08c352',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::SetSync()']]], ['signal_3',['Signal',['../class_delegate_lib_1_1_semaphore.html#a649aa0bb36a4f94d15ead412d02f0a24',1,'DelegateLib::Semaphore']]], ['singlecastdelegate_4',['SinglecastDelegate',['../class_delegate_lib_1_1_singlecast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#aa56a7da61e752491b338442d83156e1a',1,'DelegateLib::SinglecastDelegate< RetType(Args...)>']]], ['size_5',['Size',['../class_delegate_lib_1_1_multicast_delegate_3_01_ret_type_07_args_8_8_8_08_4.html#a917bc9736e4e72769a4f883228e6ff91',1,'DelegateLib::MulticastDelegate< RetType(Args...)>']]] diff --git a/doxygen/html/search/searchdata.js b/doxygen/html/search/searchdata.js index 3620eb0..c2706b2 100644 --- a/doxygen/html/search/searchdata.js +++ b/doxygen/html/search/searchdata.js @@ -6,7 +6,7 @@ var indexSectionsWithContent = 3: "dms", 4: "abcdeghimopstw~", 5: "iw", - 6: "bcfmox", + 6: "bcfmosx", 7: "x", 8: "cdl" }; diff --git a/doxygen/html/search/typedefs_0.js b/doxygen/html/search/typedefs_0.js index c684865..5e64bd4 100644 --- a/doxygen/html/search/typedefs_0.js +++ b/doxygen/html/search/typedefs_0.js @@ -1,4 +1,4 @@ var searchData= [ - ['basetype_0',['BaseType',['../class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#a1539d9effc50d7af8624b05b3ec37139',1,'DelegateLib::DelegateFreeAsync< RetType(Args...)>::BaseType'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a2de0939ea659fe15cc57ec93ec2d8d12',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::BaseType'],['../class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a9d842c5708e3ea00df399c46a6e0afdc',1,'DelegateLib::DelegateMemberSpAsync< TClass, RetType(Args...)>::BaseType'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a2a303bc469c86c9f50979caae34f2d51',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::BaseType'],['../class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#aa0a82c2354b7c9f26c88330ba55fd488',1,'DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>::BaseType'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a9ff5f9090f4df372ec92efa8e452a3aa',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::BaseType'],['../class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ac10dd9cc4d129cae578c2be36b5300e2',1,'DelegateLib::DelegateMemberSpAsyncWait< TClass, RetType(Args...)>::BaseType'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a8aacf1bb9e50e7f05526aef37343e241',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::BaseType']]] + ['basetype_0',['BaseType',['../class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#a1539d9effc50d7af8624b05b3ec37139',1,'DelegateLib::DelegateFreeAsync< RetType(Args...)>::BaseType'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a2de0939ea659fe15cc57ec93ec2d8d12',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::BaseType'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a2a303bc469c86c9f50979caae34f2d51',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::BaseType'],['../class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#aa0a82c2354b7c9f26c88330ba55fd488',1,'DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>::BaseType'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a9ff5f9090f4df372ec92efa8e452a3aa',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::BaseType'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a8aacf1bb9e50e7f05526aef37343e241',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::BaseType']]] ]; diff --git a/doxygen/html/search/typedefs_1.js b/doxygen/html/search/typedefs_1.js index 4ff8bc5..6ca7562 100644 --- a/doxygen/html/search/typedefs_1.js +++ b/doxygen/html/search/typedefs_1.js @@ -1,5 +1,5 @@ var searchData= [ - ['classtype_0',['ClassType',['../class_delegate_lib_1_1_delegate_free_3_01_ret_type_07_args_8_8_8_08_4.html#a683744d6fe8b0318323e70a1e2bd7f92',1,'DelegateLib::DelegateFree< RetType(Args...)>::ClassType'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ac6d4fe0918756c689831ce0651da67e5',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::ClassType'],['../class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a4954075a9bcc8e94918034d957c4dc65',1,'DelegateLib::DelegateMemberSp< TClass, RetType(Args...)>::ClassType'],['../class_delegate_lib_1_1_delegate_function_3_01_ret_type_07_args_8_8_8_08_4.html#a50a948c89c10c03e795303f752c828c7',1,'DelegateLib::DelegateFunction< RetType(Args...)>::ClassType'],['../class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#afb756c92300682fb9c1fd29d74c06d4b',1,'DelegateLib::DelegateFreeAsync< RetType(Args...)>::ClassType'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ae8d8cb10996c1c2294a0169f9dbbed93',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::ClassType'],['../class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#abb7c35431237278eb15b6af710193a11',1,'DelegateLib::DelegateMemberSpAsync< TClass, RetType(Args...)>::ClassType'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a4e95505c52ba0355839a32e2cacc3480',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::ClassType'],['../class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a8ec67602063e92a1ecb98300fac2486c',1,'DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>::ClassType'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ab3d84f71ed07cd925656df197dc15f28',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::ClassType'],['../class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a1f1804370de4dfc3353ad5f9324b1b3b',1,'DelegateLib::DelegateMemberSpAsyncWait< TClass, RetType(Args...)>::ClassType'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#ab18be594adc125473e2967684953ac1c',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::ClassType']]], - ['constmemberfunc_1',['ConstMemberFunc',['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ab639313353b5269e652b72883adc5c61',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::ConstMemberFunc'],['../class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a39411e3d1ce79d3998abbfb8f8594ea0',1,'DelegateLib::DelegateMemberSp< TClass, RetType(Args...)>::ConstMemberFunc'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a20a9019042525729f704966658bb17ce',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::ConstMemberFunc'],['../class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a20c4516e4e96bdf99ce34dbd433bb7ed',1,'DelegateLib::DelegateMemberSpAsync< TClass, RetType(Args...)>::ConstMemberFunc'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ad39ce01bd33617cb77b82ab93dc9284a',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::ConstMemberFunc'],['../class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a37cb6e6d0db0f7f7beb011064e92804c',1,'DelegateLib::DelegateMemberSpAsyncWait< TClass, RetType(Args...)>::ConstMemberFunc']]] + ['classtype_0',['ClassType',['../class_delegate_lib_1_1_delegate_free_3_01_ret_type_07_args_8_8_8_08_4.html#a683744d6fe8b0318323e70a1e2bd7f92',1,'DelegateLib::DelegateFree< RetType(Args...)>::ClassType'],['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ac6d4fe0918756c689831ce0651da67e5',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::ClassType'],['../class_delegate_lib_1_1_delegate_function_3_01_ret_type_07_args_8_8_8_08_4.html#a50a948c89c10c03e795303f752c828c7',1,'DelegateLib::DelegateFunction< RetType(Args...)>::ClassType'],['../class_delegate_lib_1_1_delegate_free_async_3_01_ret_type_07_args_8_8_8_08_4.html#afb756c92300682fb9c1fd29d74c06d4b',1,'DelegateLib::DelegateFreeAsync< RetType(Args...)>::ClassType'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ae8d8cb10996c1c2294a0169f9dbbed93',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::ClassType'],['../class_delegate_lib_1_1_delegate_function_async_3_01_ret_type_07_args_8_8_8_08_4.html#a4e95505c52ba0355839a32e2cacc3480',1,'DelegateLib::DelegateFunctionAsync< RetType(Args...)>::ClassType'],['../class_delegate_lib_1_1_delegate_free_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#a8ec67602063e92a1ecb98300fac2486c',1,'DelegateLib::DelegateFreeAsyncWait< RetType(Args...)>::ClassType'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ab3d84f71ed07cd925656df197dc15f28',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::ClassType'],['../class_delegate_lib_1_1_delegate_function_async_wait_3_01_ret_type_07_args_8_8_8_08_4.html#ab18be594adc125473e2967684953ac1c',1,'DelegateLib::DelegateFunctionAsyncWait< RetType(Args...)>::ClassType']]], + ['constmemberfunc_1',['ConstMemberFunc',['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ab639313353b5269e652b72883adc5c61',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::ConstMemberFunc'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a20a9019042525729f704966658bb17ce',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::ConstMemberFunc'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ad39ce01bd33617cb77b82ab93dc9284a',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::ConstMemberFunc']]] ]; diff --git a/doxygen/html/search/typedefs_3.js b/doxygen/html/search/typedefs_3.js index 27dbe7a..b6ae007 100644 --- a/doxygen/html/search/typedefs_3.js +++ b/doxygen/html/search/typedefs_3.js @@ -1,4 +1,4 @@ var searchData= [ - ['memberfunc_0',['MemberFunc',['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aa8e6bc2879f78d50ac63ac5cc730b755',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::MemberFunc'],['../class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ae43267049d569b72b2f1c96db7ffa582',1,'DelegateLib::DelegateMemberSp< TClass, RetType(Args...)>::MemberFunc'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aaf196667f048fb72dfd430bd12a9f8b1',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::MemberFunc'],['../class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a99e94121177fbf8f9229a3781f500232',1,'DelegateLib::DelegateMemberSpAsync< TClass, RetType(Args...)>::MemberFunc'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a4f8262576388c8627661815107ec1120',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::MemberFunc'],['../class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a55976c43517ad73fded1eead86ee7d7a',1,'DelegateLib::DelegateMemberSpAsyncWait< TClass, RetType(Args...)>::MemberFunc']]] + ['memberfunc_0',['MemberFunc',['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aa8e6bc2879f78d50ac63ac5cc730b755',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::MemberFunc'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aaf196667f048fb72dfd430bd12a9f8b1',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::MemberFunc'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a4f8262576388c8627661815107ec1120',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::MemberFunc']]] ]; diff --git a/doxygen/html/search/typedefs_4.js b/doxygen/html/search/typedefs_4.js index e229668..1c355b8 100644 --- a/doxygen/html/search/typedefs_4.js +++ b/doxygen/html/search/typedefs_4.js @@ -1,4 +1,4 @@ var searchData= [ - ['objectptr_0',['ObjectPtr',['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aeb119acb465b89f74f158f6e3d0c6c3d',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::ObjectPtr'],['../class_delegate_lib_1_1_delegate_member_sp_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aa7471802b453627af7ec648b138e902b',1,'DelegateLib::DelegateMemberSp< TClass, RetType(Args...)>::ObjectPtr'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#acfabf1d64175cf35c3ddc562d9921ac2',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::ObjectPtr'],['../class_delegate_lib_1_1_delegate_member_sp_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a05f0450821590a09623dc84c0e8ba0a5',1,'DelegateLib::DelegateMemberSpAsync< TClass, RetType(Args...)>::ObjectPtr'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aaecfde6d367d64edd65e8e5c0fbe394a',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::ObjectPtr'],['../class_delegate_lib_1_1_delegate_member_sp_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a48f5e788dd4b24f822155f2c825ae4eb',1,'DelegateLib::DelegateMemberSpAsyncWait< TClass, RetType(Args...)>::ObjectPtr']]] + ['objectptr_0',['ObjectPtr',['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aeb119acb465b89f74f158f6e3d0c6c3d',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::ObjectPtr'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#acfabf1d64175cf35c3ddc562d9921ac2',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::ObjectPtr'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#aaecfde6d367d64edd65e8e5c0fbe394a',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::ObjectPtr']]] ]; diff --git a/doxygen/html/search/typedefs_5.js b/doxygen/html/search/typedefs_5.js index 853ffbb..7c55b76 100644 --- a/doxygen/html/search/typedefs_5.js +++ b/doxygen/html/search/typedefs_5.js @@ -1,4 +1,4 @@ var searchData= [ - ['xlist_0',['xlist',['../_delegate_opt_8h.html#a9e6c72a4d9879e662d02c096cf16ff3c',1,'DelegateOpt.h']]] + ['sharedptr_0',['SharedPtr',['../class_delegate_lib_1_1_delegate_member_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a845057cf22b42ddccfa44228e530529e',1,'DelegateLib::DelegateMember< TClass, RetType(Args...)>::SharedPtr'],['../class_delegate_lib_1_1_delegate_member_async_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#ab269a84c9fb2b4d30d47e7cb5ca7bbc2',1,'DelegateLib::DelegateMemberAsync< TClass, RetType(Args...)>::SharedPtr'],['../class_delegate_lib_1_1_delegate_member_async_wait_3_01_t_class_00_01_ret_type_07_args_8_8_8_08_4.html#a1880c4ca2f5e3e182533fa68e6522f23',1,'DelegateLib::DelegateMemberAsyncWait< TClass, RetType(Args...)>::SharedPtr']]] ]; diff --git a/doxygen/html/search/typedefs_6.js b/doxygen/html/search/typedefs_6.js new file mode 100644 index 0000000..853ffbb --- /dev/null +++ b/doxygen/html/search/typedefs_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['xlist_0',['xlist',['../_delegate_opt_8h.html#a9e6c72a4d9879e662d02c096cf16ff3c',1,'DelegateOpt.h']]] +]; diff --git a/src/Delegate/DelegateAsync.h b/src/Delegate/DelegateAsync.h index 0100e57..32ebec2 100644 --- a/src/Delegate/DelegateAsync.h +++ b/src/Delegate/DelegateAsync.h @@ -439,8 +439,7 @@ class DelegateMemberAsync : public DelegateMemberGetSync()) { // Invoke the target function directly return BaseType::operator()(std::forward(args)...); - } - else { + } else { // Create a clone instance of this delegate auto delegate = std::shared_ptr(Clone()); @@ -489,7 +488,7 @@ class DelegateMemberAsync : public DelegateMemberGetArgs())); } @@ -509,10 +508,10 @@ class DelegateMemberAsync : public DelegateMember }; diff --git a/src/Delegate/DelegateAsyncWait.h b/src/Delegate/DelegateAsyncWait.h index bfc6889..b517f9a 100644 --- a/src/Delegate/DelegateAsyncWait.h +++ b/src/Delegate/DelegateAsyncWait.h @@ -558,8 +558,7 @@ class DelegateMemberAsyncWait : public DelegateMemberA if (this->GetSync()) { // Invoke the target function directly return BaseType::operator()(std::forward(args)...); - } - else { + } else { // Create a clone instance of this delegate auto delegate = std::shared_ptr(Clone()); @@ -587,8 +586,7 @@ class DelegateMemberAsyncWait : public DelegateMemberA if (m_retVal.has_value()) { // Return the destination thread target function return value return GetRetVal(); - } - else { + } else { // Return a default return value return RetType{}; } @@ -606,8 +604,7 @@ class DelegateMemberAsyncWait : public DelegateMemberA if constexpr (std::is_void::value == true) { operator()(args...); return IsSuccess() ? std::optional(true) : std::optional(); - } - else { + } else { auto retVal = operator()(args...); return IsSuccess() ? std::optional(retVal) : std::optional(); } @@ -641,8 +638,7 @@ class DelegateMemberAsyncWait : public DelegateMemberA if constexpr (std::is_void::value == true) { // Invoke the target function using the source thread supplied function arguments std::apply(&BaseType::operator(), std::tuple_cat(std::make_tuple(this), delegateMsg->GetArgs())); - } - else { + } else { // Invoke the target function using the source thread supplied function arguments // and get the return value m_retVal = std::apply(&BaseType::operator(), std::tuple_cat(std::make_tuple(this), delegateMsg->GetArgs())); @@ -671,13 +667,13 @@ class DelegateMemberAsyncWait : public DelegateMemberA private: /// Set to `true` if async function call succeeds - bool m_success = false; + bool m_success = false; /// Time in mS to wait for async function to invoke - std::chrono::milliseconds m_timeout; + std::chrono::milliseconds m_timeout; /// Return value of the target invoked function - std::any m_retVal; + std::any m_retVal; // };

TClassThe class type that contains the member function.