merged: Platinum from linuxport branches
[xbmc:xbmc-antiquated.git] / xbmc / lib / libUPnP / Platinum / ThirdParty / Neptune / Source / System / Win32 / NptWin32Threads.h
1 /*****************************************************************\r
2 |\r
3 |   Neptune - Threads :: Win32 Implementation\r
4 |\r
5 |   (c) 2001-2003 Gilles Boccon-Gibod\r
6 |   Author: Gilles Boccon-Gibod (bok@bok.net)\r
7 |\r
8  ****************************************************************/\r
9 \r
10 /*----------------------------------------------------------------------\r
11 |   includes\r
12 +---------------------------------------------------------------------*/\r
13 #include "NptConfig.h"\r
14 #include "NptTypes.h"\r
15 #include "NptThreads.h"\r
16 #include "NptDebug.h"\r
17 \r
18 /*----------------------------------------------------------------------\r
19 |   NPT_Win32Mutex\r
20 +---------------------------------------------------------------------*/\r
21 class NPT_Win32Mutex : public NPT_MutexInterface\r
22 {\r
23 public:\r
24     // methods\r
25              NPT_Win32Mutex();\r
26     virtual ~NPT_Win32Mutex();\r
27 \r
28     // NPT_Mutex methods\r
29     virtual NPT_Result Lock();\r
30     virtual NPT_Result Unlock();\r
31 \r
32 private:\r
33     // members\r
34     HANDLE m_Handle;\r
35 };\r
36 \r
37 /*----------------------------------------------------------------------\r
38 |   NPT_Win32Event\r
39 +---------------------------------------------------------------------*/\r
40 class NPT_Win32Event\r
41 {\r
42 public:\r
43     // methods\r
44              NPT_Win32Event(bool manual = false, bool initial = false);\r
45     virtual ~NPT_Win32Event();\r
46 \r
47     virtual NPT_Result Wait(NPT_Timeout timeout = NPT_TIMEOUT_INFINITE);\r
48     virtual void       Signal();\r
49     virtual void       Reset();\r
50 \r
51 private:\r
52     // members\r
53     HANDLE m_Event;\r
54 };\r
55 \r
56 /*----------------------------------------------------------------------\r
57 |   NPT_Win32CriticalSection\r
58 +---------------------------------------------------------------------*/\r
59 class NPT_Win32CriticalSection\r
60 {\r
61 public:\r
62     // methods\r
63     NPT_Win32CriticalSection();\r
64    ~NPT_Win32CriticalSection();\r
65 \r
66     // NPT_Mutex methods\r
67     NPT_Result Lock();\r
68     NPT_Result Unlock();\r
69 \r
70 private:\r
71     // members\r
72     CRITICAL_SECTION m_CriticalSection;\r
73 };\r