Skip to content

Commit

Permalink
add writeOrdinal helper.
Browse files Browse the repository at this point in the history
  • Loading branch information
jpe7s committed Aug 15, 2024
1 parent ffbfe67 commit 99a3846
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 53 deletions.
1 change: 1 addition & 0 deletions core/src/main/java/software/sava/core/borsh/Borsh.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@

import static java.nio.charset.StandardCharsets.UTF_8;

@SuppressWarnings("unchecked")
public interface Borsh {

int l();
Expand Down
86 changes: 33 additions & 53 deletions core/src/main/java/software/sava/core/borsh/RustEnum.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,18 @@ default String name() {
return getClass().getSimpleName();
}

default int writeOrdinal(final byte[] data, final int offset) {
data[offset] = (byte) ordinal();
return 1 + offset;
}

interface EnumNone extends RustEnum {

default int l() {
return 1;
}

default int write(final byte[] data, final int offset) {
data[offset] = (byte) ordinal();
return 1;
}
}
Expand All @@ -37,7 +41,7 @@ default int l() {
}

default int write(final byte[] data, final int offset) {
data[offset] = (byte) ordinal();
writeOrdinal(data, offset);
data[offset + 1] = (byte) (val() ? 1 : 0);
return 2;
}
Expand All @@ -52,8 +56,7 @@ default int l() {
}

default int write(final byte[] data, final int offset) {
data[offset] = (byte) ordinal();
ByteUtil.putFloat32LE(data, 1 + offset, val());
ByteUtil.putFloat32LE(data, writeOrdinal(data, offset), val());
return l();
}
}
Expand All @@ -67,8 +70,7 @@ default int l() {
}

default int write(final byte[] data, final int offset) {
data[offset] = (byte) ordinal();
ByteUtil.putFloat64LE(data, 1 + offset, val());
ByteUtil.putFloat64LE(data, writeOrdinal(data, offset), val());
return l();
}
}
Expand All @@ -78,13 +80,12 @@ interface EnumInt8 extends RustEnum {
int val();

default int l() {
return 1 + Byte.BYTES;
return 2;
}

default int write(final byte[] data, final int offset) {
data[offset] = (byte) ordinal();
data[1 + offset] = (byte) val();
return l();
data[writeOrdinal(data, offset)] = (byte) val();
return 2;
}
}

Expand All @@ -97,8 +98,7 @@ default int l() {
}

default int write(final byte[] data, final int offset) {
data[offset] = (byte) ordinal();
ByteUtil.putInt16LE(data, 1 + offset, (short) val());
ByteUtil.putInt16LE(data, writeOrdinal(data, offset), (short) val());
return l();
}
}
Expand All @@ -112,8 +112,7 @@ default int l() {
}

default int write(final byte[] data, final int offset) {
data[offset] = (byte) ordinal();
ByteUtil.putInt32LE(data, 1 + offset, val());
ByteUtil.putInt32LE(data, writeOrdinal(data, offset), val());
return l();
}
}
Expand All @@ -127,8 +126,7 @@ default int l() {
}

default int write(final byte[] data, final int offset) {
data[offset] = (byte) ordinal();
ByteUtil.putInt64LE(data, 1 + offset, val());
ByteUtil.putInt64LE(data, writeOrdinal(data, offset), val());
return l();
}
}
Expand All @@ -142,8 +140,7 @@ default int l() {
}

default int write(final byte[] data, final int offset) {
data[offset] = (byte) ordinal();
return 1 + Borsh.write(val(), data, 1 + offset);
return 1 + Borsh.write(val(), data, writeOrdinal(data, offset));
}
}

Expand All @@ -156,8 +153,7 @@ default int l() {
}

default int write(final byte[] data, final int offset) {
data[offset] = (byte) ordinal();
return 1 + Borsh.write(val(), data, 1 + offset);
return 1 + Borsh.write(val(), data, writeOrdinal(data, offset));
}
}

Expand All @@ -175,8 +171,7 @@ default int l() {
}

default int write(final byte[] data, final int offset) {
data[offset] = (byte) ordinal();
return 1 + val().write(data, 1 + offset);
return 1 + val().write(data, writeOrdinal(data, offset));
}
}

Expand All @@ -189,7 +184,7 @@ default int l() {
}

default int write(final byte[] data, final int offset) {
return 1 + val().write(data, offset);
return 1 + val().write(data, writeOrdinal(data, offset));
}
}

Expand All @@ -202,8 +197,7 @@ default int l() {
}

default int write(final byte[] data, final int offset) {
data[offset] = (byte) ordinal();
return 1 + Borsh.write(val(), data, 1 + offset);
return 1 + Borsh.write(val(), data, writeOrdinal(data, offset));
}
}

Expand All @@ -216,8 +210,7 @@ default int l() {
}

default int write(final byte[] data, final int offset) {
data[offset] = (byte) ordinal();
return 1 + Borsh.fixedWrite(val(), data, 1 + offset);
return 1 + Borsh.fixedWrite(val(), data, writeOrdinal(data, offset));
}
}

Expand All @@ -230,8 +223,7 @@ default int l() {
}

default int write(final byte[] data, final int offset) {
data[offset] = (byte) ordinal();
return 1 + Borsh.write(val(), data, 1 + offset);
return 1 + Borsh.write(val(), data, writeOrdinal(data, offset));
}
}

Expand All @@ -244,8 +236,7 @@ default int l() {
}

default int write(final byte[] data, final int offset) {
data[offset] = (byte) ordinal();
return 1 + Borsh.fixedWrite(val(), data, 1 + offset);
return 1 + Borsh.fixedWrite(val(), data, writeOrdinal(data, offset));
}
}

Expand All @@ -258,8 +249,7 @@ default int l() {
}

default int write(final byte[] data, final int offset) {
data[offset] = (byte) ordinal();
return 1 + Borsh.writeOptional(val(), data, 1 + offset);
return 1 + Borsh.writeOptional(val(), data, writeOrdinal(data, offset));
}
}

Expand All @@ -272,8 +262,7 @@ default int l() {
}

default int write(final byte[] data, final int offset) {
data[offset] = (byte) ordinal();
return 1 + Borsh.writeOptionalFloat(val(), data, 1 + offset);
return 1 + Borsh.writeOptionalFloat(val(), data, writeOrdinal(data, offset));
}
}

Expand All @@ -286,8 +275,7 @@ default int l() {
}

default int write(final byte[] data, final int offset) {
data[offset] = (byte) ordinal();
return 1 + Borsh.writeOptional(val(), data, 1 + offset);
return 1 + Borsh.writeOptional(val(), data, writeOrdinal(data, offset));
}
}

Expand All @@ -300,8 +288,7 @@ default int l() {
}

default int write(final byte[] data, final int offset) {
data[offset] = (byte) ordinal();
return 1 + Borsh.writeOptionalByte(val(), data, 1 + offset);
return 1 + Borsh.writeOptionalByte(val(), data, writeOrdinal(data, offset));
}
}

Expand All @@ -314,8 +301,7 @@ default int l() {
}

default int write(final byte[] data, final int offset) {
data[offset] = (byte) ordinal();
return 1 + Borsh.writeOptionalShort(val(), data, 1 + offset);
return 1 + Borsh.writeOptionalShort(val(), data, writeOrdinal(data, offset));
}
}

Expand All @@ -328,8 +314,7 @@ default int l() {
}

default int write(final byte[] data, final int offset) {
data[offset] = (byte) ordinal();
return 1 + Borsh.writeOptional(val(), data, 1 + offset);
return 1 + Borsh.writeOptional(val(), data, writeOrdinal(data, offset));
}
}

Expand All @@ -342,8 +327,7 @@ default int l() {
}

default int write(final byte[] data, final int offset) {
data[offset] = (byte) ordinal();
return 1 + Borsh.writeOptional(val(), data, 1 + offset);
return 1 + Borsh.writeOptional(val(), data, writeOrdinal(data, offset));
}
}

Expand All @@ -356,8 +340,7 @@ default int l() {
}

default int write(final byte[] data, final int offset) {
data[offset] = (byte) ordinal();
return 1 + Borsh.writeOptional(val(), data, 1 + offset);
return 1 + Borsh.writeOptional(val(), data, writeOrdinal(data, offset));
}
}

Expand All @@ -370,8 +353,7 @@ default int l() {
}

default int write(final byte[] data, final int offset) {
data[offset] = (byte) ordinal();
return 1 + Borsh.writeOptional(val(), data, 1 + offset);
return 1 + Borsh.writeOptional(val(), data, writeOrdinal(data, offset));
}
}

Expand All @@ -389,8 +371,7 @@ default int l() {
}

default int write(final byte[] data, final int offset) {
data[offset] = (byte) ordinal();
return 1 + Borsh.writeOptional(val(), data, 1 + offset);
return 1 + Borsh.writeOptional(val(), data, writeOrdinal(data, offset));
}
}

Expand All @@ -403,8 +384,7 @@ default int l() {
}

default int write(final byte[] data, final int offset) {
data[offset] = (byte) ordinal();
return 1 + Borsh.writeOptional(val(), data, 1 + offset);
return 1 + Borsh.writeOptional(val(), data, writeOrdinal(data, offset));
}
}
}

0 comments on commit 99a3846

Please sign in to comment.