public void serialize_u128()

in serde-generate/runtime/java/com/novi/serde/BinarySerializer.java [79:96]


    public void serialize_u128(@Unsigned @Int128 BigInteger value) throws SerializationError {
        if (value.compareTo(BigInteger.ZERO) < 0 || !value.shiftRight(128).equals(BigInteger.ZERO)) {
            throw new java.lang.IllegalArgumentException("Invalid value for an unsigned int128");
        }
        byte[] content = value.toByteArray();
        // BigInteger.toByteArray() may add a most-significant zero
        // byte for signing purpose: ignore it.
        assert content.length <= 16 || content[0] == 0;
        int len = Math.min(content.length, 16);
        // Write content in little-endian order.
        for (int i = 0; i < len; i++) {
            output.write(content[content.length - 1 - i]);
        }
        // Complete with zeros if needed.
        for (int i = len; i < 16; i++) {
            output.write(0);
        }
    }