~ubuntu-branches/ubuntu/maverick/libtorrent-rasterbar/maverick

« back to all changes in this revision

Viewing changes to include/libtorrent/asio/detail/tss_ptr.hpp

  • Committer: Bazaar Package Importer
  • Author(s): Cristian Greco
  • Date: 2008-07-02 10:46:21 UTC
  • Revision ID: james.westby@ubuntu.com-20080702104621-jzx3pfke9lkcxfxn
Tags: upstream-0.13.1
ImportĀ upstreamĀ versionĀ 0.13.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
//
 
2
// tss_ptr.hpp
 
3
// ~~~~~~~~~~~
 
4
//
 
5
// Copyright (c) 2003-2008 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
#if defined(_MSC_VER) && (_MSC_VER >= 1200)
 
15
# pragma once
 
16
#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
 
17
 
 
18
#include "asio/detail/push_options.hpp"
 
19
 
 
20
#include "asio/detail/push_options.hpp"
 
21
#include <boost/config.hpp>
 
22
#include "asio/detail/pop_options.hpp"
 
23
 
 
24
#if !defined(BOOST_HAS_THREADS)
 
25
# include "asio/detail/null_tss_ptr.hpp"
 
26
#elif defined(BOOST_WINDOWS)
 
27
# include "asio/detail/win_tss_ptr.hpp"
 
28
#elif defined(BOOST_HAS_PTHREADS)
 
29
# include "asio/detail/posix_tss_ptr.hpp"
 
30
#else
 
31
# error Only Windows and POSIX are supported!
 
32
#endif
 
33
 
 
34
namespace asio {
 
35
namespace detail {
 
36
 
 
37
template <typename T>
 
38
class tss_ptr
 
39
#if !defined(BOOST_HAS_THREADS)
 
40
  : public null_tss_ptr<T>
 
41
#elif defined(BOOST_WINDOWS)
 
42
  : public win_tss_ptr<T>
 
43
#elif defined(BOOST_HAS_PTHREADS)
 
44
  : public posix_tss_ptr<T>
 
45
#endif
 
46
{
 
47
public:
 
48
  void operator=(T* value)
 
49
  {
 
50
#if !defined(BOOST_HAS_THREADS)
 
51
    null_tss_ptr<T>::operator=(value);
 
52
#elif defined(BOOST_WINDOWS)
 
53
    win_tss_ptr<T>::operator=(value);
 
54
#elif defined(BOOST_HAS_PTHREADS)
 
55
    posix_tss_ptr<T>::operator=(value);
 
56
#endif
 
57
  }
 
58
};
 
59
 
 
60
} // namespace detail
 
61
} // namespace asio
 
62
 
 
63
#include "asio/detail/pop_options.hpp"
 
64
 
 
65
#endif // ASIO_DETAIL_TSS_PTR_HPP