(options)
| 481 | output_argloader.write("#endif\n") |
| 482 | |
| 483 | def print_parse_enum_options(options): |
| 484 | output_argloader.write("#ifdef ENUMDEFINES\n") |
| 485 | output_argloader.write("#undef ENUMDEFINES\n") |
| 486 | for op_group, group_vals in options.items(): |
| 487 | for op_key, op_vals in group_vals.items(): |
| 488 | if (op_vals["Type"] == "strenum"): |
| 489 | output_argloader.write("enum class {} : uint64_t {{\n".format(op_key)) |
| 490 | Enums = op_vals["Enums"] |
| 491 | i = 0 |
| 492 | # Always have an OFF. |
| 493 | output_argloader.write("\tOFF = 0,\n") |
| 494 | for enum_op_key, enum_op_vals in Enums.items(): |
| 495 | output_argloader.write("\t{} = 1ULL << {},\n".format(enum_op_key.upper(), i)) |
| 496 | i += 1 |
| 497 | |
| 498 | output_argloader.write("};\n") |
| 499 | output_argloader.write("FEX_DEF_NUM_OPS({})\n".format(op_key)) |
| 500 | |
| 501 | |
| 502 | for op_group, group_vals in options.items(): |
| 503 | for op_key, op_vals in group_vals.items(): |
| 504 | if (op_vals["Type"] == "strenum"): |
| 505 | Enums = op_vals["Enums"] |
| 506 | |
| 507 | output_argloader.write("using {}ConfigPair = std::pair<std::string_view, FEXCore::Config::{}>;\n".format(op_key, op_key)) |
| 508 | output_argloader.write("constexpr static std::array<{}ConfigPair, {}> {}_EnumPairs = {{{{\n".format(op_key, len(Enums) + 1, op_key)) |
| 509 | i = 0 |
| 510 | # Always have an OFF. |
| 511 | output_argloader.write("\t{{ \"off\", FEXCore::Config::{}::OFF }},\n".format(op_key)) |
| 512 | for enum_op_key, enum_op_vals in Enums.items(): |
| 513 | output_argloader.write("\t{{ \"{}\", FEXCore::Config::{}::{} }},\n".format(enum_op_vals, op_key, enum_op_key.upper())) |
| 514 | i += 1 |
| 515 | |
| 516 | output_argloader.write("}};\n") |
| 517 | |
| 518 | output_argloader.write("#endif\n") |
| 519 | |
| 520 | def check_for_duplicate_options(options): |
| 521 | short_map = [] |
no test coverage detected