1 /// Windows `HResult` enum implementation and helper functions. 2 module tern.hresult; 3 4 import tern.accessors : exempt; 5 6 public @exempt enum HResult 7 { 8 S_OK = 0x00000000, 9 S_FALSE = 0x00000001, 10 E_ABORT = 0x80004004, 11 E_FAIL = 0x80004005, 12 E_NOINTERFACE = 0x80004002, 13 E_NOTIMPL = 0x80004001, 14 E_POINTER = 0x80004003, 15 E_UNEXPECTED = 0x8000FFFF, 16 17 E_ACCESSDENIED = 0x80070005, 18 E_HANDLE = 0x80070006, 19 E_INVALIDARG = 0x80070057, 20 E_OUTOFMEMORY = 0x8007000E, 21 E_BADIMAGEFORMAT = 0x8007000B, 22 E_BOUNDS = 0x8000000B, 23 E_PENDING = 0x8000000A, 24 E_NOT_SET = 0x80070490, 25 26 CO_E_NOTINITIALIZED = 0x800401F0, 27 CO_E_ALREADYINITIALIZED = 0x800401F1, 28 CO_E_NOTSUPPORTED = 0x80004021, 29 CO_E_CLASSSTRING = 0x800401F3, 30 CO_E_APPNOTFOUND = 0x800401F5, 31 CO_E_OBJECTNOTCONNECTED = 0x800401FD, 32 33 DISP_E_BADINDEX = 0x8002000B, 34 DISP_E_OVERFLOW = 0x8002000A, 35 DISP_E_TYPEMISMATCH = 0x80020005, 36 DISP_E_PARAMNOTFOUND = 0x80020004, 37 DISP_E_UNKNOWNINTERFACE = 0x80020001, 38 39 RPC_E_CHANGED_MODE = 0x80010106, 40 RPC_E_TOO_LATE = 0x80010119, 41 RPC_E_INVALIDMETHOD = 0x80010104, 42 RPC_E_DISCONNECTED = 0x80010108, 43 RPC_E_SERVERFAULT = 0x80010105, 44 RPC_E_TIMEOUT = 0x8001011F, 45 RPC_E_NOT_REGISTERED = 0x80010103, 46 RPC_E_DUPLICATE_NAME = 0x8001012C, 47 } 48 49 public: 50 static: 51 pure: 52 @nogc: 53 /// Checks HResult 54 bool OK(HResult hr) 55 { 56 return hr == HResult.S_OK; 57 } 58 59 /// ditto 60 bool NOTOK(HResult hr) 61 { 62 return hr != HResult.S_OK; 63 } 64 65 /// ditto 66 bool FALSE(HResult hr) 67 { 68 return hr == HResult.S_FALSE; 69 } 70 71 /// ditto 72 bool ABORT(HResult hr) 73 { 74 return hr == HResult.E_ABORT; 75 } 76 77 /// ditto 78 bool FAIL(HResult hr) 79 { 80 return hr == HResult.E_FAIL; 81 } 82 83 /// ditto 84 bool NOINTERFACE(HResult hr) 85 { 86 return hr == HResult.E_NOINTERFACE; 87 } 88 89 /// ditto 90 bool NOTIMPL(HResult hr) 91 { 92 return hr == HResult.E_NOTIMPL; 93 } 94 95 /// ditto 96 bool POINTER(HResult hr) 97 { 98 return hr == HResult.E_POINTER; 99 } 100 101 /// ditto 102 bool UNEXPECTED(HResult hr) 103 { 104 return hr == HResult.E_UNEXPECTED; 105 } 106 107 /// ditto 108 bool ACCESSDENIED(HResult hr) 109 { 110 return hr == HResult.E_ACCESSDENIED; 111 } 112 113 /// ditto 114 bool HANDLE(HResult hr) 115 { 116 return hr == HResult.E_HANDLE; 117 } 118 119 /// ditto 120 bool INVALIDARG(HResult hr) 121 { 122 return hr == HResult.E_INVALIDARG; 123 } 124 125 /// ditto 126 bool OUTOFMEMORY(HResult hr) 127 { 128 return hr == HResult.E_OUTOFMEMORY; 129 } 130 131 /// ditto 132 bool BADIMAGEFORMAT(HResult hr) 133 { 134 return hr == HResult.E_BADIMAGEFORMAT; 135 } 136 137 /// ditto 138 bool BOUNDS(HResult hr) 139 { 140 return hr == HResult.E_BOUNDS; 141 } 142 143 /// ditto 144 bool PENDING(HResult hr) 145 { 146 return hr == HResult.E_PENDING; 147 } 148 149 /// ditto 150 bool NOT_SET(HResult hr) 151 { 152 return hr == HResult.E_NOT_SET; 153 } 154 155 /// ditto 156 bool NOTINITIALIZED(HResult hr) 157 { 158 return hr == HResult.CO_E_NOTINITIALIZED; 159 } 160 161 /// ditto 162 bool ALREADYINITIALIZED(HResult hr) 163 { 164 return hr == HResult.CO_E_ALREADYINITIALIZED; 165 } 166 167 /// ditto 168 bool NOTSUPPORTED(HResult hr) 169 { 170 return hr == HResult.CO_E_NOTSUPPORTED; 171 } 172 173 /// ditto 174 bool CLASSSTRING(HResult hr) 175 { 176 return hr == HResult.CO_E_CLASSSTRING; 177 } 178 179 /// ditto 180 bool APPNOTFOUND(HResult hr) 181 { 182 return hr == HResult.CO_E_APPNOTFOUND; 183 } 184 185 /// ditto 186 bool OBJECTNOTCONNECTED(HResult hr) 187 { 188 return hr == HResult.CO_E_OBJECTNOTCONNECTED; 189 } 190 191 /// ditto 192 bool BADINDEX(HResult hr) 193 { 194 return hr == HResult.DISP_E_BADINDEX; 195 } 196 197 /// ditto 198 bool OVERFLOW(HResult hr) 199 { 200 return hr == HResult.DISP_E_OVERFLOW; 201 } 202 203 /// ditto 204 bool TYPEMISMATCH(HResult hr) 205 { 206 return hr == HResult.DISP_E_TYPEMISMATCH; 207 } 208 209 /// ditto 210 bool PARAMNOTFOUND(HResult hr) 211 { 212 return hr == HResult.DISP_E_PARAMNOTFOUND; 213 } 214 215 /// ditto 216 bool UNKNOWNINTERFACE(HResult hr) 217 { 218 return hr == HResult.DISP_E_UNKNOWNINTERFACE; 219 } 220 221 /// ditto 222 bool CHANGEDMODE(HResult hr) 223 { 224 return hr == HResult.RPC_E_CHANGED_MODE; 225 } 226 227 /// ditto 228 bool TOOLATE(HResult hr) 229 { 230 return hr == HResult.RPC_E_TOO_LATE; 231 } 232 233 /// ditto 234 bool INVALIDMETHOD(HResult hr) 235 { 236 return hr == HResult.RPC_E_INVALIDMETHOD; 237 } 238 239 /// ditto 240 bool DISCONNECTED(HResult hr) 241 { 242 return hr == HResult.RPC_E_DISCONNECTED; 243 } 244 245 /// ditto 246 bool SERVERFAULT(HResult hr) 247 { 248 return hr == HResult.RPC_E_SERVERFAULT; 249 } 250 251 /// ditto 252 bool TIMEOUT(HResult hr) 253 { 254 return hr == HResult.RPC_E_TIMEOUT; 255 } 256 257 /// ditto 258 bool NOTREGISTERED(HResult hr) 259 { 260 return hr == HResult.RPC_E_NOT_REGISTERED; 261 } 262 263 /// ditto 264 bool DUPLICATENAME(HResult hr) 265 { 266 return hr == HResult.RPC_E_DUPLICATE_NAME; 267 }