registerPrimitives function

void registerPrimitives(
  1. LegacyBCS bcs
)

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>()));
    }
  );
}