#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]);private:static u_int total_keys_;static ACE_TSS_DESTRUCTOR tss_destructor_ [ACE_TSS_THREAD_KEYS_MAX];static void **tss_base (void* ts_storage[] = 0);static void **&tss_base ();static ACE_OS_thread_key_t native_tss_key_;static int key_created_;};
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 u_int total_keys_;
static ACE_TSS_DESTRUCTOR tss_destructor_ [ACE_TSS_THREAD_KEYS_MAX];
static void **tss_base (void* ts_storage[] = 0);
static void **&tss_base ();
static ACE_OS_thread_key_t native_tss_key_;
static int key_created_;
schmidt@cs.wustl.edu, Jesper S. M|ller
stophph@diku.dk, and a cast of thousands...