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

branch
TOR_BUG_9701
changeset 14
925c144e1f1f
equal deleted inserted replaced
-1:000000000000 0:ebdd563a015f
1 // Windows/COM.h
2
3 #ifndef __WINDOWS_COM_H
4 #define __WINDOWS_COM_H
5
6 #include "Common/String.h"
7
8 namespace NWindows {
9 namespace NCOM {
10
11 class CComInitializer
12 {
13 public:
14 CComInitializer() { CoInitialize(NULL);};
15 ~CComInitializer() { CoUninitialize(); };
16 };
17
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 };
35
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
45
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
53
54
55 }}
56
57 #endif

mercurial