+2009-02-05 Chris Fairles <cfairles@gcc.gnu.org>
+ Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/std/thread (__thread_data_base): Nest class in std::thread.
+ (__thread_data): Likewise.
+ (__thread_data_ptr): Nest typedef in std::thread.
+ * src/thread.cc (__thread_proxy): Qualify the above names.
+ * config/abi/pre/gnu.ver: Remove unused exports.
+
2009-02-04 Benjamin Kosnik <bkoz@redhat.com>
* include/bits/unique_ptr.h: Remove private __this_type typedef.
namespace std
{
- class __thread_data_base;
-
- typedef shared_ptr<__thread_data_base> __thread_data_ptr;
-
- class __thread_data_base
+ class thread
{
public:
- __thread_data_base() = default;
- virtual ~__thread_data_base() = default;
+ class __thread_data_base;
- virtual void _M_run() = 0;
+ typedef shared_ptr<__thread_data_base> __thread_data_ptr;
- __gthread_t _M_thread_handle;
- __thread_data_ptr _M_this_ptr;
- };
-
- template<typename _Callable>
- class __thread_data : public __thread_data_base
+ class __thread_data_base
{
public:
- __thread_data(_Callable&& __f)
- : _M_func(std::forward<_Callable>(__f))
- { }
-
- void _M_run()
- { _M_func(); }
-
- private:
- _Callable _M_func;
+ __thread_data_base() = default;
+ virtual ~__thread_data_base() = default;
+
+ virtual void _M_run() = 0;
+
+ __gthread_t _M_thread_handle;
+ __thread_data_ptr _M_this_ptr;
};
-
- /// thread
- class thread
- {
- public:
+
// types
class id;
typedef __gthread_t native_handle_type;
private:
template<typename _Callable>
+ class __thread_data : public __thread_data_base
+ {
+ public:
+ __thread_data(_Callable&& __f)
+ : _M_func(std::forward<_Callable>(__f))
+ { }
+
+ void _M_run()
+ { _M_func(); }
+
+ private:
+ _Callable _M_func;
+ };
+
+ template<typename _Callable>
__thread_data_ptr
_M_make_thread_data(_Callable&& __f)
{
{
void* __thread_proxy(void* __p)
{
- __thread_data_base* __t = static_cast<__thread_data_base*>(__p);
- __thread_data_ptr __local_thread_data;
+ thread::__thread_data_base* __t =
+ static_cast<thread::__thread_data_base*>(__p);
+ thread::__thread_data_ptr __local_thread_data;
__local_thread_data.swap(__t->_M_this_ptr);
__try