1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/other-licenses/7zstub/src/Windows/COM.h Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,57 @@ 1.4 +// Windows/COM.h 1.5 + 1.6 +#ifndef __WINDOWS_COM_H 1.7 +#define __WINDOWS_COM_H 1.8 + 1.9 +#include "Common/String.h" 1.10 + 1.11 +namespace NWindows { 1.12 +namespace NCOM { 1.13 + 1.14 +class CComInitializer 1.15 +{ 1.16 +public: 1.17 + CComInitializer() { CoInitialize(NULL);}; 1.18 + ~CComInitializer() { CoUninitialize(); }; 1.19 +}; 1.20 + 1.21 +class CStgMedium 1.22 +{ 1.23 + STGMEDIUM _object; 1.24 +public: 1.25 + bool _mustBeReleased; 1.26 + CStgMedium(): _mustBeReleased(false) {} 1.27 + ~CStgMedium() { Free(); } 1.28 + void Free() 1.29 + { 1.30 + if(_mustBeReleased) 1.31 + ReleaseStgMedium(&_object); 1.32 + _mustBeReleased = false; 1.33 + } 1.34 + const STGMEDIUM* operator->() const { return &_object;} 1.35 + STGMEDIUM* operator->() { return &_object;} 1.36 + STGMEDIUM* operator&() { return &_object; } 1.37 +}; 1.38 + 1.39 +////////////////////////////////// 1.40 +// GUID <--> String Conversions 1.41 +UString GUIDToStringW(REFGUID guid); 1.42 +AString GUIDToStringA(REFGUID guid); 1.43 +#ifdef UNICODE 1.44 + #define GUIDToString GUIDToStringW 1.45 +#else 1.46 + #define GUIDToString GUIDToStringA 1.47 +#endif // !UNICODE 1.48 + 1.49 +HRESULT StringToGUIDW(const wchar_t *string, GUID &classID); 1.50 +HRESULT StringToGUIDA(const char *string, GUID &classID); 1.51 +#ifdef UNICODE 1.52 + #define StringToGUID StringToGUIDW 1.53 +#else 1.54 + #define StringToGUID StringToGUIDA 1.55 +#endif // !UNICODE 1.56 + 1.57 + 1.58 +}} 1.59 + 1.60 +#endif