line = "#define {0:49} HRES_ERROR({1})\n".format(err.err_define ,err.err_code)
out_file.write(line)
out_file.write("\nconst char *hresult_errstr_const(HRESULT err_code);\n")
+ out_file.write("\nconst char *hresult_errstr(HRESULT err_code);\n")
out_file.write("\n#define FACILITY_WIN32 0x0007\n")
out_file.write("#define WIN32_FROM_HRESULT(x) (HRES_ERROR_V(x) == 0 ? HRES_ERROR_V(x) : ~((FACILITY_WIN32 << 16) | 0x80000000) & HRES_ERROR_V(x))\n")
out_file.write("#define HRESULT_IS_LIKELY_WERR(x) ((HRES_ERROR_V(x) & 0xFFFF0000) == 0x80070000)\n")
out_file.write(" }\n")
out_file.write(" return result;\n")
out_file.write("};\n")
+ out_file.write("\n")
+ out_file.write("const char *hresult_errstr(HRESULT err_code)\n")
+ out_file.write("{\n");
+ out_file.write(" static char msg[20];\n")
+ out_file.write(" int i;\n")
+ out_file.write("\n")
+ out_file.write(" for (i = 0; i < ARRAY_SIZE(hresult_errs); i++) {\n")
+ out_file.write(" if (HRES_IS_EQUAL(err_code, hresult_errs[i].error_code)) {\n")
+ out_file.write(" return hresult_errs[i].error_str;\n")
+ out_file.write(" }\n")
+ out_file.write(" }\n")
+ out_file.write(" snprintf(msg, sizeof(msg), \"HRES code 0x%08x\", HRES_ERROR_V(err_code));\n")
+ out_file.write(" return msg;\n")
+ out_file.write("};\n")
# Very simple script to generate files hresult.c & hresult.h
# The script simply takes a text file as input, format of input file is