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