#ifndef __FISHBONE_THREAD_H__ #define __FISHBONE_THREAD_H__ namespace fishbone { class Thread; class Mutex; }; // namespace fishbone #include #ifdef _FISHBONE #if defined(FISHBONE_THREAD_USE_SDL2) typedef SDL_mutex* FISHBONE_MUTEX_HANDLE; typedef SDL_Thread* FISHBONE_THREAD_HANDLE; #endif #else typedef void* FISHBONE_MUTEX_HANDLE; typedef void* FISHBONE_THREAD_HANDLE; #endif namespace fishbone { class Thread { FISHBONE_THREAD_HANDLE thread; public: Thread(void (*call)(fishbone::Thread* thread, void* arg), void* arg); ~Thread(); void join(); }; class Mutex { FISHBONE_MUTEX_HANDLE mutex; public: Mutex(); ~Mutex(); void lock(); void unlock(); }; }; // namespace fishbone #endif