#ifndef CORE_THREAD_HPP #define CORE_THREAD_HPP #include "core/utils/AlignedData.hpp" #include "core/utils/Check.hpp" #include "core/utils/Error.hpp" namespace Core { class Thread final { AlignedData<8, 8> thread; public: Thread(); Thread(const Thread& other) = delete; Thread(Thread&& other); ~Thread(); Thread& operator=(const Thread& other) = delete; Thread& operator=(Thread&& other); void swap(Thread& other); using Function = int (*)(void*); check_return Error start(Function f, void* p); check_return Error join(int* returnValue = nullptr); }; } #endif