#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]);
static void tss_close ();
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, u_int *ts_created = 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 void tss_close ();
static u_int total_keys_;
static ACE_TSS_DESTRUCTOR tss_destructor_ [ACE_TSS_THREAD_KEYS_MAX];
static void **tss_base (
void* ts_storage[] = 0,
u_int *ts_created = 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...