Home | History | Annotate | Download | only in detail
      1 //
      2 // detail/tss_ptr.hpp
      3 // ~~~~~~~~~~~~~~~~~~
      4 //
      5 // Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
      6 //
      7 // Distributed under the Boost Software License, Version 1.0. (See accompanying
      8 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
      9 //
     10 
     11 #ifndef ASIO_DETAIL_TSS_PTR_HPP
     12 #define ASIO_DETAIL_TSS_PTR_HPP
     13 
     14 
     15 #include "asio/detail/config.hpp"
     16 
     17 #if   defined(ASIO_HAS_THREAD_KEYWORD_EXTENSION)
     18 # include "asio/detail/keyword_tss_ptr.hpp"
     19 #elif defined(ASIO_HAS_PTHREADS)
     20 # include "asio/detail/posix_tss_ptr.hpp"
     21 #else
     22 # error Only Windows and POSIX are supported!
     23 #endif
     24 
     25 #include "asio/detail/push_options.hpp"
     26 
     27 namespace asio {
     28 namespace detail {
     29 
     30 template <typename T>
     31 class tss_ptr
     32 #if   defined(ASIO_HAS_THREAD_KEYWORD_EXTENSION)
     33   : public keyword_tss_ptr<T>
     34 #elif defined(ASIO_HAS_PTHREADS)
     35   : public posix_tss_ptr<T>
     36 #endif
     37 {
     38 public:
     39   void operator=(T* value)
     40   {
     41 #if   defined(ASIO_HAS_THREAD_KEYWORD_EXTENSION)
     42     keyword_tss_ptr<T>::operator=(value);
     43 #elif defined(ASIO_HAS_PTHREADS)
     44     posix_tss_ptr<T>::operator=(value);
     45 #endif
     46   }
     47 };
     48 
     49 } // namespace detail
     50 } // namespace asio
     51 
     52 #include "asio/detail/pop_options.hpp"
     53 
     54 #endif // ASIO_DETAIL_TSS_PTR_HPP
     55