/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ #ifndef SE_INCL_THREADLOCALSTORAGE_H #define SE_INCL_THREADLOCALSTORAGE_H #ifdef PRAGMA_ONCE #pragma once #endif #ifdef SINGLE_THREADED #define THREADLOCAL(type, name, defval) type name = defval #define EXTERNTHREADLOCAL(type, name) extern type name #elif (defined _MSC_VER) #define THREADLOCAL(type, name, defval) type __declspec(thread) name = defval #define EXTERNTHREADLOCAL(type, name) extern type __declspec(thread) name #else // Pretty much everything has __thread now. If it doesn't, do SINGLE_THREADED or // roll something with pthread_key or SDL or whatever. See revision history for a start. #define THREADLOCAL(type, name, defval) __thread type name = defval; #define EXTERNTHREADLOCAL(type, name) extern __thread type name; #endif #endif // include-once blocker. // end of ThreadLocalStorage.h ...