diff --git a/include/TessesFramework/HiddenField.hpp b/include/TessesFramework/HiddenField.hpp index 6c38837..9a7894b 100644 --- a/include/TessesFramework/HiddenField.hpp +++ b/include/TessesFramework/HiddenField.hpp @@ -20,7 +20,13 @@ class HiddenField { { return dynamic_cast(ptr); } - + template + T* AllocField() + { + auto v = new T(); + SetField(v); + return v; + } ~HiddenField(); }; } \ No newline at end of file diff --git a/src/Threading/Mutex.cpp b/src/Threading/Mutex.cpp index b29c723..f1d296d 100644 --- a/src/Threading/Mutex.cpp +++ b/src/Threading/Mutex.cpp @@ -39,7 +39,7 @@ namespace Tesses::Framework::Threading Mutex::Mutex() { #if defined(TESSESFRAMEWORK_ENABLE_THREADING) - auto md=this->data.SetField(new MutexHiddenFieldData()); + auto md=this->data.AllocField(); #if defined(_WIN32) md->mtx = CreateMutex(NULL,false,NULL); #elif defined(GEKKO) diff --git a/src/Threading/Thread.cpp b/src/Threading/Thread.cpp index 1b830bb..113abc7 100644 --- a/src/Threading/Thread.cpp +++ b/src/Threading/Thread.cpp @@ -50,7 +50,7 @@ namespace Tesses::Framework::Threading Thread::Thread(std::function fn) { #if defined(TESSESFRAMEWORK_ENABLE_THREADING) - auto data = this->data.SetField(new ThreadHiddenFieldData()); + auto data = this->data.AllocField(); data->hasInvoked=false; data->fn = fn; #if defined(_WIN32) @@ -67,7 +67,7 @@ namespace Tesses::Framework::Threading void Thread::Detach() { #if defined(TESSESFRAMEWORK_ENABLE_THREADING) - auto data = this->data.AllocField(); + auto data = this->data.GetField(); #if !defined(GEKKO) #if defined(_WIN32) CloseHandle(data->thrd); @@ -81,7 +81,7 @@ namespace Tesses::Framework::Threading void Thread::Join() { #if defined(TESSESFRAMEWORK_ENABLE_THREADING) - auto data = this->data.AllocField(); + auto data = this->data.GetField(); #if defined(_WIN32) WaitForSingleObject(data->thrd, INFINITE); #elif defined(GEKKO)