MCPcopy Create free account
hub / github.com/FEX-Emu/FEX / print_parse_enum_options

Function print_parse_enum_options

FEXCore/Scripts/config_generator.py:483–518  ·  view source on GitHub ↗
(options)

Source from the content-addressed store, hash-verified

481 output_argloader.write("#endif\n")
482
483def 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
520def check_for_duplicate_options(options):
521 short_map = []

Callers 1

Calls 1

formatMethod · 0.45

Tested by

no test coverage detected