// -*- C++ -*- /** * @file tid_to_int.h * * Convert an ACE_thread_t to an integer in a way that doesn't rely * heavily on platform-specific configuration. * * @author Ossama Othman */ namespace { template struct ACE_thread_t_to_integer_i { thread_id_type operator() (ace_thread_id_type tid) { // We assume sizeof(thread_id_type) >= sizeof(ace_thread_id_type). return (thread_id_type) (tid); } }; template struct ACE_thread_t_to_integer_i { thread_id_type operator() (ace_thread_id_type* tid) { // ACE_thread_t is a pointer. Cast to an intermediate integer // type large enough to hold a pointer. intptr_t const tmp = reinterpret_cast (tid); // We assume sizeof(thread_id_type) >= sizeof(ace_thread_id_type). return (thread_id_type) tmp; } }; template thread_id_type ACE_thread_t_to_integer (ACE_thread_t tid) { return ACE_thread_t_to_integer_i() (tid); } }