// common.h #include "debug.h" #define ARRAYSIZE(a) (sizeof(a)/sizeof(a[0])) #define StrToOleStrN(pwsz, cchWideChar, psz, cchMultiByte) MultiByteToWideChar(CP_ACP, 0, psz, cchMultiByte, pwsz, cchWideChar) #define OleStrToStrN(psz, cchMultiByte, pwsz, cchWideChar) WideCharToMultiByte(CP_ACP, 0, pwsz, cchWideChar, psz, cchMultiByte, NULL, NULL) #define QueryInterface(punk, iid, pobj) (punk)->lpVtbl->QueryInterface(punk, iid, pobj) #define AddRef(punk) (punk)->lpVtbl->AddRef(punk) #define Release(punk) (punk)->lpVtbl->Release(punk) #ifndef IToClass #define _IOffset(class, itf) ((UINT)(UINT_PTR)&(((class *)0)->itf)) #define IToClass(class, itf, pitf) ((class *)(((LPSTR)pitf)-_IOffset(class, itf))) #endif #ifdef _DEBUG #define ReleaseLast(punk) Assert(Release(punk) == 0) #else #define ReleaseLast(punk) Release(punk) #endif