Mercurial > projects > dynamin
changeset 89:0d6778fea624
Add some Windows error constants and related functions.
author | Jordan Miner <jminer7@gmail.com> |
---|---|
date | Mon, 26 Jul 2010 00:33:22 -0500 |
parents | f149c868a34f |
children | 41b430aa319f |
files | dynamin/c/uniscribe.d dynamin/c/windows.d |
diffstat | 2 files changed, 31 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/dynamin/c/uniscribe.d Mon Jul 26 00:31:17 2010 -0500 +++ b/dynamin/c/uniscribe.d Mon Jul 26 00:33:22 2010 -0500 @@ -34,7 +34,7 @@ SCRIPT_UNDEFINED = 0 } -//#define USP_E_SCRIPT_NOT_IN_FONT MAKE_HRESULT(SEVERITY_ERROR,FACILITY_ITF,0x200) +const HRESULT USP_E_SCRIPT_NOT_IN_FONT = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x200); alias void* SCRIPT_CACHE;
--- a/dynamin/c/windows.d Mon Jul 26 00:31:17 2010 -0500 +++ b/dynamin/c/windows.d Mon Jul 26 00:33:22 2010 -0500 @@ -120,6 +120,36 @@ DWORD GetLastError(); +enum : HRESULT { + E_NOTIMPL = 0x80004001, + E_OUTOFMEMORY = 0x8007000E, + E_INVALIDARG = 0x80070057, + E_NOINTERFACE = 0x80004002, + E_POINTER = 0x80004003, + E_HANDLE = 0x80070006, + E_ABORT = 0x80004004, + E_FAIL = 0x80004005, + E_ACCESSDENIED = 0x80070005 +} + +// COM error codes +enum { + SEVERITY_SUCCESS = 0, + SEVERITY_ERROR = 1, +} +enum { + FACILITY_WIN32 = 7, + FACILITY_ITF = 4, +} + +bool SUCCEEDED(HRESULT hr) { return hr >= 0; } +bool FAILED(HRESULT hr) { return hr < 0; } +bool IS_ERROR(HRESULT hr) { return (hr >> 31) == SEVERITY_ERROR; } +uint HRESULT_CODE(HRESULT hr) { return hr & 0xFFFF; } +uint HRESULT_FACILITY(HRESULT hr) { return (hr >> 16) & 0x1FFF; } +uint HRESULT_SEVERITY(HRESULT hr) { return (hr >> 31) & 0x1; } +HRESULT MAKE_HRESULT(uint sev, uint fac, uint code) { return (sev << 31) | (fac << 16) | code; } + int MultiByteToWideChar( UINT CodePage, DWORD dwFlags,