fromBytes static method
Implementation
static DefinitionMessage fromBytes(Uint8List bytes,
{bool hasDeveloperFields = false}) {
final bd = ByteData.sublistView(bytes);
var offset = 0;
// reserved
offset += 1;
// architecture
final Endian endian;
if (bd.getUint8(offset) == 0) {
endian = Endian.little;
} else {
endian = Endian.big;
}
offset += 1;
// global id
final globalId = bd.getUint16(offset, endian);
offset += 2;
// number of fields
final fieldCount = bd.getUint8(offset);
offset += 1;
// Field definitions;
final fieldDefinitions = <FieldDefinition>[];
for (var i = 0; i < fieldCount; i++) {
final fdBytes = Uint8List.sublistView(
bytes, offset, offset + FieldDefinition.fieldDefinitionSize);
final fieldDefinition = FieldDefinition.fromBytes(fdBytes);
fieldDefinitions.add(fieldDefinition);
offset += FieldDefinition.fieldDefinitionSize;
}
final developerFieldDefinitions = <DeveloperFieldDefinition>[];
if (hasDeveloperFields) {
// number of developer fields
final devFieldCount = bd.getUint8(offset);
offset += 1;
for (var i = 0; i < devFieldCount; i++) {
final fdBytes = Uint8List.sublistView(bytes, offset,
offset + DeveloperFieldDefinition.fieldDefinitionSize);
final fieldDefinition = DeveloperFieldDefinition.fromBytes(fdBytes);
developerFieldDefinitions.add(fieldDefinition);
offset += DeveloperFieldDefinition.fieldDefinitionSize;
}
}
return DefinitionMessage(
endian: endian,
globalId: globalId,
fieldDefinitions: fieldDefinitions,
developerFieldDefinitions: developerFieldDefinitions);
}