]> git.lyx.org Git - lyx.git/blob - boost/boost/detail/lwm_win32_cs.hpp
add __alpha__ as supported cpu
[lyx.git] / boost / boost / detail / lwm_win32_cs.hpp
1 #ifndef BOOST_DETAIL_LWM_WIN32_CS_HPP_INCLUDED
2 #define BOOST_DETAIL_LWM_WIN32_CS_HPP_INCLUDED
3
4 #if _MSC_VER >= 1020
5 #pragma once
6 #endif
7
8 //
9 //  boost/detail/lwm_win32_cs.hpp
10 //
11 //  Copyright (c) 2002 Peter Dimov and Multi Media Ltd.
12 //
13 //  Permission to copy, use, modify, sell and distribute this software
14 //  is granted provided this copyright notice appears in all copies.
15 //  This software is provided "as is" without express or implied
16 //  warranty, and with no claim as to its suitability for any purpose.
17 //
18
19 #include <boost/detail/winapi.hpp>
20
21 namespace boost
22 {
23
24 namespace detail
25 {
26
27 class lightweight_mutex
28 {
29 private:
30
31     winapi::critical_section cs_;
32
33     lightweight_mutex(lightweight_mutex const &);
34     lightweight_mutex & operator=(lightweight_mutex const &);
35
36 public:
37
38     lightweight_mutex()
39     {
40         winapi::InitializeCriticalSection(&cs_);
41     }
42
43     ~lightweight_mutex()
44     {
45         winapi::DeleteCriticalSection(&cs_);
46     }
47
48     class scoped_lock;
49     friend class scoped_lock;
50
51     class scoped_lock
52     {
53     private:
54
55         lightweight_mutex & m_;
56
57         scoped_lock(scoped_lock const &);
58         scoped_lock & operator=(scoped_lock const &);
59
60     public:
61
62         explicit scoped_lock(lightweight_mutex & m): m_(m)
63         {
64             winapi::EnterCriticalSection(&m_.cs_);
65         }
66
67         ~scoped_lock()
68         {
69             winapi::LeaveCriticalSection(&m_.cs_);
70         }
71     };
72 };
73
74 } // namespace detail
75
76 } // namespace boost
77
78 #endif // #ifndef BOOST_DETAIL_LWM_WIN32_CS_HPP_INCLUDED