use enums instead of bitfields

This commit is contained in:
2026-06-27 21:03:40 +02:00
parent 60bb497ae6
commit 03dd84463a
3 changed files with 372 additions and 943 deletions
+37
View File
@@ -1164,6 +1164,42 @@ class RegistryParser : XmlParser
}
strBuf.Clear();
if (type_name.StartsWith("Std")) for (let field in fields)
if (field.flags.HasFlag(.Bitfield))
{
int flagPost = 1;
strBuf.Append("enum ", type_name, " : uint32\n{\n");
for (let field in fields)
{
if (field.flags.HasFlag(.CommentOnly))
{
if (field.comment.IsEmpty) continue;
strBuf.Append('\t');
WriteComment(field.comment, strBuf);
strBuf.Append('\n');
continue;
}
Runtime.Assert(field.flags.HasFlag(.Bitfield));
if (field.name != "reserved")
{
strBuf.Append('\t');
strBuf.Append(field.name);
strBuf.Append(" = 0x");
flagPost.ToString(strBuf, "X8", null);
strBuf.Append(",\n");
}
flagPost <<= field.bitfieldWidth;
}
strBuf.Append('}');
feature.content = new:alloc .(strBuf);
vkTypes.Add(feature.name, feature);
fields.Clear();
fieldBufferIdx = -1;
return;
}
switch (_)
{
case .Type_Struct: strBuf.Append("[CRepr]");
@@ -1176,6 +1212,7 @@ class RegistryParser : XmlParser
{
if (field.flags.HasFlag(.CommentOnly))
{
if (field.comment.IsEmpty) continue;
strBuf.Append('\t');
WriteComment(field.comment, strBuf);
strBuf.Append('\n');