misc/libphysfs/lzma/CPP/Windows/Handle.h
changeset 13881 99b265e0d1d0
parent 13880 5f819b90d479
child 13882 b172a5d40eee
equal deleted inserted replaced
13880:5f819b90d479 13881:99b265e0d1d0
     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