registerPrimitives function
Register the base set of primitive and common types.
Is called in the BCS
constructor automatically but can
be ignored if the withPrimitives
argument is not set.
Implementation
void registerPrimitives(LegacyBCS bcs) {
bcs.registerType(
LegacyBCS.U8,
(writer, data, _, __) {
return writer.write8(int.parse(data.toString()));
},
(reader, _, __) {
return reader.read8();
},
(u8) => toBN(u8) <= BigInt.from(MAX_U8_NUMBER)
);
bcs.registerType(
LegacyBCS.U16,
(writer, data, _, __) {
return writer.write16(int.parse(data.toString()));
},
(reader, _, __) {
return reader.read16();
},
(u16) => toBN(u16) <= BigInt.from(MAX_U16_NUMBER)
);
bcs.registerType(
LegacyBCS.U32,
(writer, data, _, __) {
return writer.write32(int.parse(data.toString()));
},
(reader, _, __) {
return reader.read32();
},
(u32) => toBN(u32) <= BigInt.from(MAX_U32_NUMBER)
);
bcs.registerType(
LegacyBCS.U64,
(writer, data, _, __) {
return writer.write64(BigInt.parse(data.toString()));
},
(reader, _, __) {
return reader.read64().toString();
}
);
bcs.registerType(
LegacyBCS.U128,
(writer, data, _, __) {
return writer.write128(BigInt.parse(data.toString()));
},
(reader, _, __) {
return reader.read128().toString();
}
);
bcs.registerType(
LegacyBCS.U256,
(writer, data, _, __) {
return writer.write256(BigInt.parse(data.toString()));
},
(reader, _, __) {
return reader.read256().toString();
}
);
bcs.registerType(
LegacyBCS.BOOL,
(writer, data, _, __) {
return writer.write8(data == true ? 1 : 0);
},
(reader, _, __) {
return reader.read8().toString() == "1";
}
);
bcs.registerType(
LegacyBCS.STRING,
(writer, data, _, __) =>
writer.writeVec(data.split(""), (writer, el, a, b) {
writer.write8(utf8.encode(el)[0]);
}),
(reader, _, __) {
final data = reader
.readVec((reader, a, b) => reader.read8())
.map<int>((item) => item.toInt()).toList();
return utf8.decode(data);
},
(_str) => true
);
bcs.registerType(
LegacyBCS.HEX,
(writer, data, _, __) {
return writer.writeVec(fromHEX(data), (writer, el, _, __) =>
writer.write8(el)
);
},
(reader, _, __) {
final bytes = reader.readVec((reader, _, __) => reader.read8());
return toHEX(Uint8List.fromList(bytes.cast<int>()));
}
);
bcs.registerType(
LegacyBCS.BASE58,
(writer, data, _, __) {
return writer.writeVec(fromB58(data), (writer, el, _, __) =>
writer.write8(el)
);
},
(reader, _, __) {
final bytes = reader.readVec((reader, _, __) => reader.read8());
return toB58(Uint8List.fromList(bytes.cast<int>()));
}
);
bcs.registerType(
LegacyBCS.BASE64,
(writer, data, _, __) {
return writer.writeVec(fromB64(data), (writer, el, _, __) =>
writer.write8(el)
);
},
(reader, _, __) {
final bytes = reader.readVec((reader, _, __) => reader.read8());
return toB64(Uint8List.fromList(bytes.cast<int>()));
}
);
}