Adds strformat code-gen for helping auto-generate readable strings for structs.

- Adds generator infra for absl::StrFormat for bind group structs and types.
- Uses absl::ParsedFormat to avoid multiple parsing for format strings.

Bug: dawn:549
Change-Id: Ida4ca65eb85c4474c492161c8ae34f53bd692a3c
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/81944
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Loko Kung <lokokung@google.com>
This commit is contained in:
Loko Kung
2022-03-19 00:21:48 +00:00
committed by Dawn LUCI CQ
parent 39c2029063
commit 4d8352542a
6 changed files with 115 additions and 55 deletions

View File

@@ -684,6 +684,15 @@ def as_wireType(metadata, typ):
return as_cppType(typ.name)
def as_formatType(typ):
# Unsigned integral types
if typ.json_data['type'] in ['bool', 'uint32_t', 'uint64_t']:
return 'u'
# Defaults everything else to strings.
return 's'
def c_methods(params, typ):
return typ.methods + [
x for x in [
@@ -753,7 +762,8 @@ def make_base_render_params(metadata):
'as_jsEnumValue': as_jsEnumValue,
'convert_cType_to_cppType': convert_cType_to_cppType,
'as_varName': as_varName,
'decorate': decorate
'decorate': decorate,
'as_formatType': as_formatType
}