#include <ace/OS.h>
class ACE_TSS_Emulation {
public:
typedef void (*ACE_TSS_DESTRUCTOR)(void *value) /* throw () */;
enum { ACE_TSS_THREAD_KEYS_MAX = ACE_DEFAULT_THREAD_KEYS };
static u_int total_keys ();
static int next_key (ACE_thread_key_t &key);
static ACE_TSS_DESTRUCTOR tss_destructor ( const ACE_thread_key_t key );
static void tss_destructor ( const ACE_thread_key_t key, ACE_TSS_DESTRUCTOR destructor );
static void *&ts_object (const ACE_thread_key_t key);
static void *tss_open (void *ts_storage[ACE_TSS_THREAD_KEYS_MAX]);
enum { ACE_TSS_THREADS_MAX = 1024 };
static void **tss_collection_ [ACE_TSS_THREADS_MAX];
private:
static u_int total_keys_;
static ACE_TSS_DESTRUCTOR tss_destructor_ [ACE_TSS_THREAD_KEYS_MAX];static void **&tss_base ();
static ACE_thread_key_t native_tss_key_;
};
typedef void (*ACE_TSS_DESTRUCTOR)(void *value) /* throw () */;
static u_int total_keys ();
static int next_key (ACE_thread_key_t &key);
static ACE_TSS_DESTRUCTOR tss_destructor (const ACE_thread_key_t key);
static void tss_destructor (
const ACE_thread_key_t key,
ACE_TSS_DESTRUCTOR destructor
);
static void *&ts_object (const ACE_thread_key_t key);
static void *tss_open (void *ts_storage[ACE_TSS_THREAD_KEYS_MAX]);
static void **tss_collection_ [ACE_TSS_THREADS_MAX];
static u_int total_keys_;
static ACE_TSS_DESTRUCTOR tss_destructor_ [ACE_TSS_THREAD_KEYS_MAX];
static void **&tss_base ();
static ACE_thread_key_t native_tss_key_;
schmidt@cs.wustl.edu
, Jesper S. M|ller
stophph@diku.dk
, and a cast of thousands...