diff options
Diffstat (limited to 'src/libs/3rdparty/7zip/win/CPP/Windows/Handle.h')
-rw-r--r-- | src/libs/3rdparty/7zip/win/CPP/Windows/Handle.h | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/libs/3rdparty/7zip/win/CPP/Windows/Handle.h b/src/libs/3rdparty/7zip/win/CPP/Windows/Handle.h new file mode 100644 index 000000000..bb7cb705d --- /dev/null +++ b/src/libs/3rdparty/7zip/win/CPP/Windows/Handle.h @@ -0,0 +1,37 @@ +// Windows/Handle.h + +#ifndef __WINDOWS_HANDLE_H +#define __WINDOWS_HANDLE_H + +namespace NWindows { + +class CHandle +{ +protected: + HANDLE _handle; +public: + operator HANDLE() { return _handle; } + CHandle(): _handle(NULL) {} + ~CHandle() { Close(); } + bool IsCreated() const { return (_handle != NULL); } + bool Close() + { + if (_handle == NULL) + return true; + if (!::CloseHandle(_handle)) + return false; + _handle = NULL; + return true; + } + void Attach(HANDLE handle) { _handle = handle; } + HANDLE Detach() + { + HANDLE handle = _handle; + _handle = NULL; + return handle; + } +}; + +} + +#endif |