windows-nt/Source/XPSP1/NT/admin/pchealth/client/lamebtn/common.h
2020-09-26 16:20:57 +08:00

77 lines
1.4 KiB
C++

/*
Copyright 1999 Microsoft Corporation
Common coding utilities
Walter Smith (wsmith)
*/
#pragma once
#ifdef DBG
#define _DEBUG 1
#endif
#include <crtdbg.h>
#ifdef _DEBUG
#define _CONFIRM(exp) _ASSERT(exp)
#else
#define _CONFIRM(exp) (exp)
#endif
#define ARRAYSIZE(a) (sizeof(a) / sizeof((a)[0]))
#define ASSERT_WRITE_PTR(p) _ASSERT(!IsBadWritePtr((p), sizeof(*(p))))
#define ASSERT_READ_PTR(p) _ASSERT(!IsBadReadPtr((p), sizeof(*(p))))
typedef std::basic_string<TCHAR> tstring;
// REVIEW: Make this out of line?
inline void ThrowLastError() {
DWORD err = GetLastError();
if (err == 0)
throw E_FAIL;
else
throw HRESULT_FROM_WIN32(GetLastError());
}
inline void ThrowIfFail(HRESULT hr) {
if (FAILED(hr))
throw hr;
}
inline void ThrowIfNull(const void* pv) {
if (pv == NULL)
throw E_POINTER;
}
inline void ThrowIfNullHandle(HANDLE h) {
if (h == NULL)
ThrowLastError();
}
inline void ThrowIfZero(int i) {
if (i == 0)
ThrowLastError();
}
inline void ThrowIfTrue(bool b) {
if (b)
ThrowLastError();
}
inline void ThrowIfFalse(bool b) {
ThrowIfTrue(!b);
}
inline void ThrowIfW32Fail(LONG l) {
if (l != ERROR_SUCCESS)
ThrowLastError();
}
inline void ThrowIfW32Error(LONG l) {
if (l != ERROR_SUCCESS)
throw HRESULT_FROM_WIN32(l);
}