Lines Matching refs:field
106 # packet <field> entries in XML start from the bit after the
181 def overlaps(self, field):
182 return self != field and max(self.start, field.start) <= min(self.end, field.end)
203 for field in self.fields:
204 field.emit_template_struct(dim)
213 for field in self.fields:
214 first_byte = field.start // 8
215 last_byte = field.end // 8
221 bytes[b].fields.append(field)
223 if field.type == "address":
225 bytes[b].address = field
229 self.length = max(field.end // 8 for field in self.fields) + 1
237 for field in self.fields:
238 if field.minus_one:
239 print(" assert(values->%s >= 1);" % field.name)
264 field = byte.fields[0]
265 if field.type in ["float", "uint", "int"] and field.start % 8 == 0 and field.end - field.start == 31 and not field.minus_one:
266 if field in memcpy_fields:
269 if not any(field.overlaps(scan_field) for scan_field in self.fields):
270 assert(field.start == index * 8)
273 (index, field.name, field.name))
274 memcpy_fields.add(field)
283 for field in byte.fields:
284 if field.type != "mbo":
285 name = field.name
287 start = field.start
288 end = field.end
289 field_byte_start = (field.start // 8) * 8
295 if field.minus_one:
298 if field.type == "mbo":
301 elif field.type == "address":
304 elif field.type == "uint":
307 elif field.type in self.parser.enums:
310 elif field.type == "int":
313 elif field.type == "bool":
316 elif field.type == "float":
318 elif field.type == "f187":
321 elif field.type == "offset":
324 elif field.type == 'ufixed':
326 (value, start, end, field.fractional_size)
327 elif field.type == 'sfixed':
329 (value, start, end, field.fractional_size)
330 elif field.type in self.parser.structs:
335 print("/* unhandled field %s, type %s */\n" % (name, field.type))
343 if field == byte.fields[-1]:
353 for field in self.fields:
354 if field.type != "mbo":
359 args.append(str(start + field.start))
360 args.append(str(start + field.end))
362 if field.type == "address":
364 elif field.type == "uint":
366 elif field.type in self.parser.enums:
368 elif field.type == "int":
370 elif field.type == "bool":
372 elif field.type == "float":
374 elif field.type == "f187":
376 elif field.type == "offset":
378 elif field.type == 'ufixed':
379 args.append(str(field.fractional_size))
381 elif field.type == 'sfixed':
382 args.append(str(field.fractional_size))
385 print("/* unhandled field %s, type %s */\n" % (field.name, field.type))
389 if field.minus_one:
392 (field.name, convert, ', '.join(args), plusone))
451 # Add a fixed Field for the opcode. We only make <field>s in
471 field = Field(self, default_field)
472 field.values = []
473 self.group.fields.append(field)
480 elif name == "field":
510 elif name == "field":
547 for field in self.group.fields:
548 if not type(field) is Field:
550 if field.default == None:
552 default_fields.append(" .%-35s = %6d" % (field.name, field.default))