intel/genxml: Allow referencing enums in type attributes

This lets us reference enums in the type attribute of a field.

Signed-off-by: Kristian H. Kristensen <hoegsberg@gmail.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
Kristian H. Kristensen 2016-11-28 16:24:13 -08:00
parent 3b6b6f6463
commit 5814fc1bb7
1 changed files with 7 additions and 0 deletions

View File

@ -267,6 +267,8 @@ class Field(object):
type = 'uint32_t'
elif self.type in self.parser.structs:
type = 'struct ' + self.parser.gen_prefix(safe_name(self.type))
elif self.type in self.parser.enums:
type = 'uint32_t'
elif self.type == 'mbo':
return
else:
@ -426,6 +428,9 @@ class Group(object):
elif field.type == "uint":
s = "__gen_uint(values->%s, %d, %d)" % \
(name, field.start - dword_start, field.end - dword_start)
elif field.type in self.parser.enums:
s = "__gen_uint(values->%s, %d, %d)" % \
(name, field.start - dword_start, field.end - dword_start)
elif field.type == "int":
s = "__gen_sint(values->%s, %d, %d)" % \
(name, field.start - dword_start, field.end - dword_start)
@ -484,6 +489,7 @@ class Parser(object):
self.instruction = None
self.structs = {}
self.enums = {}
self.registers = {}
def gen_prefix(self, name):
@ -530,6 +536,7 @@ class Parser(object):
elif name == "enum":
self.values = []
self.enum = safe_name(attrs["name"])
self.enums[attrs["name"]] = 1
if "prefix" in attrs:
self.prefix = safe_name(attrs["prefix"])
else: