Skip to content

Commit e47844c

Browse files
authored
Generate enum dictionaries for all extensions (#729)
So that we can use them in vendor extensions. This also guarantees that generation is always in order for vendor extensions. Signed-off-by: Kevin Petit <kevin.petit@arm.com> Change-Id: I5708ad6b1e090678fccb6bb335e633081d6f58fb
1 parent 9f1167f commit e47844c

1 file changed

Lines changed: 43 additions & 47 deletions

File tree

scripts/gen_dictionaries.py

Lines changed: 43 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -116,54 +116,50 @@ def GetFooter():
116116
numberOfEnums = 0
117117

118118
for enums in spec.findall('enums'):
119-
# Skip Vendor Extension Enums
120-
vendor = enums.get('vendor')
121-
name = enums.get('name') # special-case: enum block with KHR enums assigned to vendor
122-
include_anyway = name in ('enums.4010','ErrorCodes.1002')
123-
if not vendor or vendor == 'Khronos' or vendor == 'Multiple' or include_anyway:
124-
for enum in enums.findall('enum'):
125-
name = enum.get('name')
126-
#print('found enum: ' + name)
127-
128-
# Create a variant of the name that precedes underscores with
129-
# "zero width" spaces. This causes some long names to be
130-
# broken at more intuitive places.
131-
htmlName = name[:3] + name[3:].replace("_", "_<wbr>")
132-
otherName = name[:3] + name[3:].replace("_", "_&#8203;")
119+
name = enums.get('name')
120+
for enum in enums.findall('enum'):
121+
name = enum.get('name')
122+
#print('found enum: ' + name)
133123

134-
# Example with link:
135-
#
136-
# // CL_MEM_READ_ONLY
137-
#:CL_MEM_READ_ONLY_label: pass:q[`CL_MEM_READ_ONLY`]
138-
#:CL_MEM_READ_ONLY: <<CL_MEM_READ_ONLY,{CL_MEM_READ_ONLY_label}>>
139-
#:CL_MEM_READ_ONLY_anchor: [[CL_MEM_READ_ONLY]]{CL_MEM_READ_ONLY}
140-
linkFile.write('// ' + name + '\n')
141-
linkFile.write('ifdef::backend-html5[]\n')
142-
linkFile.write(':' + name + '_label: pass:q[`' + htmlName + '`]\n')
143-
linkFile.write('endif::[]\n')
144-
linkFile.write('ifndef::backend-html5[]\n')
145-
linkFile.write(':' + name + '_label: pass:q[`' + otherName + '`]\n')
146-
linkFile.write('endif::[]\n')
147-
linkFile.write(':' + name + ': <<' + name + ',{' + name + '_label}>>\n')
148-
linkFile.write(':' + name + '_anchor: [[' + name + ']]{' + name + '}\n')
149-
linkFile.write('\n')
150-
151-
# Example without link:
152-
#
153-
# // CL_MEM_READ_ONLY
154-
#:CL_MEM_READ_ONLY: pass:q[`CL_MEM_READ_ONLY`]
155-
#:CL_MEM_READ_ONLY_anchor: {CL_MEM_READ_ONLY}
156-
nolinkFile.write('// ' + name + '\n')
157-
nolinkFile.write('ifdef::backend-html5[]\n')
158-
nolinkFile.write(':' + name + ': pass:q[`' + htmlName + '`]\n')
159-
nolinkFile.write('endif::[]\n')
160-
nolinkFile.write('ifndef::backend-html5[]\n')
161-
nolinkFile.write(':' + name + ': pass:q[`' + otherName + '`]\n')
162-
nolinkFile.write('endif::[]\n')
163-
nolinkFile.write(':' + name + '_anchor: {' + name + '}\n')
164-
nolinkFile.write('\n')
165-
166-
numberOfEnums = numberOfEnums + 1
124+
# Create a variant of the name that precedes underscores with
125+
# "zero width" spaces. This causes some long names to be
126+
# broken at more intuitive places.
127+
htmlName = name[:3] + name[3:].replace("_", "_<wbr>")
128+
otherName = name[:3] + name[3:].replace("_", "_&#8203;")
129+
130+
# Example with link:
131+
#
132+
# // CL_MEM_READ_ONLY
133+
#:CL_MEM_READ_ONLY_label: pass:q[`CL_MEM_READ_ONLY`]
134+
#:CL_MEM_READ_ONLY: <<CL_MEM_READ_ONLY,{CL_MEM_READ_ONLY_label}>>
135+
#:CL_MEM_READ_ONLY_anchor: [[CL_MEM_READ_ONLY]]{CL_MEM_READ_ONLY}
136+
linkFile.write('// ' + name + '\n')
137+
linkFile.write('ifdef::backend-html5[]\n')
138+
linkFile.write(':' + name + '_label: pass:q[`' + htmlName + '`]\n')
139+
linkFile.write('endif::[]\n')
140+
linkFile.write('ifndef::backend-html5[]\n')
141+
linkFile.write(':' + name + '_label: pass:q[`' + otherName + '`]\n')
142+
linkFile.write('endif::[]\n')
143+
linkFile.write(':' + name + ': <<' + name + ',{' + name + '_label}>>\n')
144+
linkFile.write(':' + name + '_anchor: [[' + name + ']]{' + name + '}\n')
145+
linkFile.write('\n')
146+
147+
# Example without link:
148+
#
149+
# // CL_MEM_READ_ONLY
150+
#:CL_MEM_READ_ONLY: pass:q[`CL_MEM_READ_ONLY`]
151+
#:CL_MEM_READ_ONLY_anchor: {CL_MEM_READ_ONLY}
152+
nolinkFile.write('// ' + name + '\n')
153+
nolinkFile.write('ifdef::backend-html5[]\n')
154+
nolinkFile.write(':' + name + ': pass:q[`' + htmlName + '`]\n')
155+
nolinkFile.write('endif::[]\n')
156+
nolinkFile.write('ifndef::backend-html5[]\n')
157+
nolinkFile.write(':' + name + ': pass:q[`' + otherName + '`]\n')
158+
nolinkFile.write('endif::[]\n')
159+
nolinkFile.write(':' + name + '_anchor: {' + name + '}\n')
160+
nolinkFile.write('\n')
161+
162+
numberOfEnums = numberOfEnums + 1
167163

168164
print('Found ' + str(numberOfEnums) + ' API enumerations.')
169165

0 commit comments

Comments
 (0)