From 25802a2fa838932038ee8bdf76800b7c9c5fd517 Mon Sep 17 00:00:00 2001 From: Charles Giessen Date: Mon, 29 Nov 2021 15:33:23 -0700 Subject: vulkaninfo: min_key_width now set in the object stack Previously if a key-value pair wanted to be printed with padding, so the output would be aligned, it would have to pass in the width into each and every printer statement. This commit makes the min_key_width value set per object (in the object_stack) so it can be set after the object is started and re-used over and over. This simplifies the code gen and useability of the Printer class. --- scripts/vulkaninfo_generator.py | 47 ++++++++++++++++++----------------------- 1 file changed, 20 insertions(+), 27 deletions(-) (limited to 'scripts/vulkaninfo_generator.py') diff --git a/scripts/vulkaninfo_generator.py b/scripts/vulkaninfo_generator.py index bb28c06e..f698f736 100644 --- a/scripts/vulkaninfo_generator.py +++ b/scripts/vulkaninfo_generator.py @@ -59,9 +59,9 @@ license_header = ''' ''' custom_formaters = r''' -void DumpVkConformanceVersion(Printer &p, std::string name, VkConformanceVersion &c, int width = 0) { +void DumpVkConformanceVersion(Printer &p, std::string name, VkConformanceVersion &c) { p.PrintKeyString("conformanceVersion", std::to_string(c.major)+ "." + std::to_string(c.minor) + "." + std::to_string(c.subminor) + "." - + std::to_string(c.patch), width); + + std::to_string(c.patch)); } template @@ -418,11 +418,11 @@ def PrintEnumToString(enum, gen): def PrintEnum(enum, gen): out = '' out += AddGuardHeader(GetExtension(enum.name, gen)) - out += f"void Dump{enum.name}(Printer &p, std::string name, {enum.name} value, int width = 0) {{\n" + out += f"void Dump{enum.name}(Printer &p, std::string name, {enum.name} value) {{\n" out += f" if (p.Type() == OutputType::json) {{\n" - out += f" p.PrintKeyValue(name, value, width);\n" + out += f" p.PrintKeyValue(name, value);\n" out += f" }} else {{\n" - out += f" p.PrintKeyString(name, {enum.name}String(value), width);\n }}\n" + out += f" p.PrintKeyString(name, {enum.name}String(value));\n }}\n" out += f"}}\n" out += AddGuardFooter(GetExtension(enum.name, gen)) return out @@ -441,7 +441,7 @@ def PrintGetFlagStrings(name, bitmask): def PrintFlags(bitmask, name): - out = f"void Dump{name}(Printer &p, std::string name, {name} value, int width = 0) {{\n" + out = f"void Dump{name}(Printer &p, std::string name, {name} value) {{\n" out += f" if (p.Type() == OutputType::json) {{ p.PrintKeyValue(name, value); return; }}\n" out += f" if (static_cast<{bitmask.name}>(value) == 0) {{\n" out += f" ArrayWrapper arr(p, name, 0);\n" @@ -459,9 +459,9 @@ def PrintFlags(bitmask, name): def PrintFlagBits(bitmask): - out = f"void Dump{bitmask.name}(Printer &p, std::string name, {bitmask.name} value, int width = 0) {{\n" + out = f"void Dump{bitmask.name}(Printer &p, std::string name, {bitmask.name} value) {{\n" out += f" auto strings = {bitmask.name}GetStrings(value);\n" - out += f" p.PrintKeyString(name, strings.at(0), width);\n" + out += f" p.PrintKeyString(name, strings.at(0));\n" out += f"}}\n" return out @@ -478,7 +478,7 @@ def PrintBitMask(bitmask, name, gen): def PrintBitMaskToString(bitmask, name, gen): out = AddGuardHeader(GetExtension(bitmask.name, gen)) - out += f"std::string {name}String({name} value, int width = 0) {{\n" + out += f"std::string {name}String({name} value) {{\n" out += f" std::string out;\n" out += f" bool is_first = true;\n" for v in bitmask.options: @@ -519,19 +519,20 @@ def PrintStructure(struct, types_to_gen, structure_names, aliases): out += f" p.SetSubHeader().ObjectStart(name);\n" else: out += f" ObjectWrapper object{{p, name}};\n" - + if max_key_len > 0: + out += f" p.SetMinKeyWidth({max_key_len});\n" for v in struct.members: # arrays if v.arrayLength is not None: # strings if v.typeID == "char": - out += f" p.PrintKeyString(\"{v.name}\", obj.{v.name}, {str(max_key_len)});\n" + out += f" p.PrintKeyString(\"{v.name}\", obj.{v.name});\n" # uuid's elif (v.arrayLength == str(16) and v.typeID == "uint8_t"): # VK_UUID_SIZE - out += f" p.PrintKeyString(\"{v.name}\", to_string_16(obj.{v.name}), {str(max_key_len)});\n" + out += f" p.PrintKeyString(\"{v.name}\", to_string_16(obj.{v.name}));\n" elif (v.arrayLength == str(8) and v.typeID == "uint8_t"): # VK_LUID_SIZE out += f" if (obj.deviceLUIDValid)" # special case - out += f" p.PrintKeyString(\"{v.name}\", to_string_8(obj.{v.name}), {str(max_key_len)});\n" + out += f" p.PrintKeyString(\"{v.name}\", to_string_8(obj.{v.name}));\n" elif struct.name == "VkQueueFamilyGlobalPriorityPropertiesEXT" and v.name == "priorities": out += f" ArrayWrapper arr(p,\"{v.name}\", obj.priorityCount);\n" out += f" for (uint32_t i = 0; i < obj.priorityCount; i++) {{\n" @@ -554,23 +555,16 @@ def PrintStructure(struct, types_to_gen, structure_names, aliases): out += f" p.PrintElement(obj.{v.name}[i]);\n" out += f" }}\n" elif v.typeID == "VkBool32": - out += f" p.PrintKeyBool(\"{v.name}\", static_cast(obj.{v.name}), {str(max_key_len)});\n" + out += f" p.PrintKeyBool(\"{v.name}\", static_cast(obj.{v.name}));\n" elif v.typeID == "VkConformanceVersion": - out += f" DumpVkConformanceVersion(p, \"conformanceVersion\", obj.{v.name}, {str(max_key_len)});\n" + out += f" DumpVkConformanceVersion(p, \"conformanceVersion\", obj.{v.name});\n" elif v.typeID == "VkDeviceSize": - out += f" p.PrintKeyValue(\"{v.name}\", to_hex_str(p, obj.{v.name}), {str(max_key_len)});\n" + out += f" p.PrintKeyValue(\"{v.name}\", to_hex_str(p, obj.{v.name}));\n" elif v.typeID in predefined_types: - out += f" p.PrintKeyValue(\"{v.name}\", obj.{v.name}, {str(max_key_len)});\n" + out += f" p.PrintKeyValue(\"{v.name}\", obj.{v.name});\n" elif v.name not in ['sType', 'pNext']: - # if it is an enum/flag/bitmask, add the calculated width - type_name = v.typeID - for key, value in aliases.items(): - if type_name in value: - type_name = key - if type_name not in structure_names: - out += f" Dump{type_name}(p, \"{v.name}\", obj.{v.name}, {str(max_key_len)});\n" - else: - out += f" Dump{type_name}(p, \"{v.name}\", obj.{v.name});\n" + # if it is an enum/flag/bitmask + out += f" Dump{v.typeID}(p, \"{v.name}\", obj.{v.name});\n" if struct.name in ["VkPhysicalDeviceLimits", "VkPhysicalDeviceSparseProperties"]: out += f" p.ObjectEnd();\n" out += f"}}\n" @@ -723,7 +717,6 @@ def PrintChainIterator(listName, structures, all_structures, checkExtLoc, extTyp out += AddGuardFooter(s) out += f" place = structure->pNext;\n" out += f" }}\n" - out += f" p.UnsetSubHeader();\n" out += f"}}\n" return out -- cgit v1.2.3