Upload 2.0.2
[physicsfs] / lzma / CPP / Windows / Handle.h
1 // Windows/Handle.h
2
3 #ifndef __WINDOWS_HANDLE_H
4 #define __WINDOWS_HANDLE_H
5
6 namespace NWindows {
7
8 class CHandle
9 {
10 protected:
11   HANDLE _handle;
12 public:
13   operator HANDLE() { return _handle; }
14   CHandle(): _handle(NULL) {}
15   ~CHandle() { Close(); }
16   bool Close()
17   {
18     if (_handle == NULL)
19       return true;
20     if (!::CloseHandle(_handle))
21       return false;
22     _handle = NULL;
23     return true;
24   }
25   void Attach(HANDLE handle) 
26     { _handle = handle; }
27   HANDLE Detach() 
28   { 
29     HANDLE handle = _handle;
30     _handle = NULL; 
31     return handle;
32   }
33 };
34
35 }
36
37 #endif