uIntBcsType function
Implementation
BcsType<int, dynamic> uIntBcsType({
required String name,
required int size,
required String readMethod,
required String writeMethod,
required int maxValue,
void Function(int)? validate,
}) {
return fixedSizeBcsType<int, dynamic>(
name: name,
size: size,
read: (reader) {
switch (readMethod) {
case 'read8':
return reader.read8();
case 'read16':
return reader.read16();
case 'read32':
return reader.read32();
default:
throw ArgumentError('Invalid read type $readMethod');
}
},
write: (value, writer) {
switch (writeMethod) {
case 'write8':
writer.write8(value);
break;
case 'write16':
writer.write16(value);
break;
case 'write32':
writer.write32(value);
break;
default:
throw ArgumentError('Invalid read type $readMethod');
}
},
validate: (val) {
final value = int.parse(val.toString());
if (value < 0 || value > maxValue) {
throw ArgumentError('Invalid $name value: $value. Expected value in range 0-$maxValue');
}
validate?.call(value);
},
);
}