other-licenses/7zstub/src/Windows/COM.h

Fri, 16 Jan 2015 18:13:44 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Fri, 16 Jan 2015 18:13:44 +0100
branch
TOR_BUG_9701
changeset 14
925c144e1f1f
permissions
-rw-r--r--

Integrate suggestion from review to improve consistency with existing code.

     1 // Windows/COM.h
     3 #ifndef __WINDOWS_COM_H
     4 #define __WINDOWS_COM_H
     6 #include "Common/String.h"
     8 namespace NWindows {
     9 namespace NCOM {
    11 class CComInitializer
    12 {
    13 public:
    14   CComInitializer() { CoInitialize(NULL);};
    15   ~CComInitializer() { CoUninitialize(); };
    16 };
    18 class CStgMedium
    19 {
    20   STGMEDIUM _object;
    21 public:
    22   bool _mustBeReleased;
    23   CStgMedium(): _mustBeReleased(false) {}
    24   ~CStgMedium() { Free(); }
    25   void Free() 
    26   { 
    27     if(_mustBeReleased) 
    28       ReleaseStgMedium(&_object); 
    29     _mustBeReleased = false;
    30   }
    31   const STGMEDIUM* operator->() const { return &_object;}
    32   STGMEDIUM* operator->() { return &_object;}
    33   STGMEDIUM* operator&() { return &_object; }
    34 };
    36 //////////////////////////////////
    37 // GUID <--> String Conversions
    38 UString GUIDToStringW(REFGUID guid);
    39 AString GUIDToStringA(REFGUID guid);
    40 #ifdef UNICODE
    41   #define GUIDToString GUIDToStringW
    42 #else
    43   #define GUIDToString GUIDToStringA
    44 #endif // !UNICODE
    46 HRESULT StringToGUIDW(const wchar_t *string, GUID &classID);
    47 HRESULT StringToGUIDA(const char *string, GUID &classID);
    48 #ifdef UNICODE
    49   #define StringToGUID StringToGUIDW
    50 #else
    51   #define StringToGUID StringToGUIDA
    52 #endif // !UNICODE
    55 }}
    57 #endif

mercurial