]> git.sesse.net Git - casparcg/blob - SFML-1.6/include/SFML/System/Lock.hpp
(no commit message)
[casparcg] / SFML-1.6 / include / SFML / System / Lock.hpp
1 ////////////////////////////////////////////////////////////\r
2 //\r
3 // SFML - Simple and Fast Multimedia Library\r
4 // Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)\r
5 //\r
6 // This software is provided 'as-is', without any express or implied warranty.\r
7 // In no event will the authors be held liable for any damages arising from the use of this software.\r
8 //\r
9 // Permission is granted to anyone to use this software for any purpose,\r
10 // including commercial applications, and to alter it and redistribute it freely,\r
11 // subject to the following restrictions:\r
12 //\r
13 // 1. The origin of this software must not be misrepresented;\r
14 //    you must not claim that you wrote the original software.\r
15 //    If you use this software in a product, an acknowledgment\r
16 //    in the product documentation would be appreciated but is not required.\r
17 //\r
18 // 2. Altered source versions must be plainly marked as such,\r
19 //    and must not be misrepresented as being the original software.\r
20 //\r
21 // 3. This notice may not be removed or altered from any source distribution.\r
22 //\r
23 ////////////////////////////////////////////////////////////\r
24 \r
25 #ifndef SFML_LOCK_HPP\r
26 #define SFML_LOCK_HPP\r
27 \r
28 ////////////////////////////////////////////////////////////\r
29 // Headers\r
30 ////////////////////////////////////////////////////////////\r
31 #include <SFML/System/NonCopyable.hpp>\r
32 \r
33 \r
34 namespace sf\r
35 {\r
36 class Mutex;\r
37 \r
38 ////////////////////////////////////////////////////////////\r
39 /// Lock is an exception-safe automatic wrapper for\r
40 /// locking and unlocking mutexes\r
41 ////////////////////////////////////////////////////////////\r
42 class SFML_API Lock : NonCopyable\r
43 {\r
44 public :\r
45 \r
46     ////////////////////////////////////////////////////////////\r
47     /// Construct the lock with a target mutex (lock it)\r
48     ///\r
49     /// @param Mutex : Mutex to lock\r
50     ///\r
51     ////////////////////////////////////////////////////////////\r
52     Lock(Mutex& Mutex);\r
53 \r
54     ////////////////////////////////////////////////////////////\r
55     /// Destructor (unlocks the mutex)\r
56     ///\r
57     ////////////////////////////////////////////////////////////\r
58     ~Lock();\r
59 \r
60 private :\r
61 \r
62     ////////////////////////////////////////////////////////////\r
63     // Member data\r
64     ////////////////////////////////////////////////////////////\r
65     Mutex& myMutex; ///< Mutex to lock / unlock\r
66 };\r
67 \r
68 } // namespace sf\r
69 \r
70 \r
71 #endif // SFML_LOCK_HPP\r