/***********************************************************************\
*                                 dxerr.d                               *
*                                                                       *
*                       Windows API header module                       *
*                                                                       *
*                       Placed into public domain                       *
\***********************************************************************/
module win32.directx.dxerr;

import win32.windows;

pragma(lib, "dxerr.lib");

extern (Windows) {
	CHAR*  DXGetErrorStringA(HRESULT hr);
	WCHAR* DXGetErrorStringW(HRESULT hr);
	CHAR*  DXGetErrorDescriptionA(HRESULT hr);
	WCHAR* DXGetErrorDescriptionW(HRESULT hr);
	HRESULT DXTraceA(CHAR* strFile, DWORD dwLine, HRESULT hr, CHAR* strMsg,
	  BOOL bPopMsgBox);
	HRESULT DXTraceW(CHAR* strFile, DWORD dwLine, HRESULT hr, WCHAR* strMsg,
	  BOOL bPopMsgBox);
}

version (Unicode) {
	alias DXGetErrorStringW DXGetErrorString;
	alias DXGetErrorDescriptionW DXGetErrorDescription;
	alias DXTraceW DXTrace;
} else {
	alias DXGetErrorStringA DXGetErrorString;
	alias DXGetErrorDescriptionA DXGetErrorDescription;
	alias DXTraceA DXTrace;
}

debug (dxerr) {
	HRESULT DXTRACE_MSG(TCHAR* str) {
		return DXTrace(__FILE__, __LINE__, 0, str, false);
	}
	HRESULT DXTRACE_ERR(TCHAR* str, HRESULT hr) {
		return DXTrace(__FILE__, __LINE__, hr, str, false);
	}
	HRESULT DXTRACE_ERR_MSGBOX(TCHAR* str, HRESULT hr) {
		return DXTrace(__FILE__, __LINE__, hr, str, true);
	}
} else {
	HRESULT DXTRACE_MSG(TCHAR* str) {
		return 0;
	}
	HRESULT DXTRACE_ERR(TCHAR* str, HRESULT hr) {
		return hr;
	}
	HRESULT DXTRACE_ERR_MSGBOX(TCHAR* str, HRESULT hr) {
		return hr;
	}
}