Skip to content

Commit 03d8b81

Browse files
committed
Model: add hash
1 parent 617afb5 commit 03d8b81

File tree

1 file changed

+16
-1
lines changed
  • objectbox-java/src/main/java/io/objectbox/model

1 file changed

+16
-1
lines changed

objectbox-java/src/main/java/io/objectbox/model/Model.java

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,19 @@ public final class Model extends Table {
6464
public io.objectbox.model.IdUid lastSequenceId(io.objectbox.model.IdUid obj) { int o = __offset(16); return o != 0 ? obj.__assign(o + bb_pos, bb) : null; }
6565
public io.objectbox.model.IdUid lastRelationId() { return lastRelationId(new io.objectbox.model.IdUid()); }
6666
public io.objectbox.model.IdUid lastRelationId(io.objectbox.model.IdUid obj) { int o = __offset(18); return o != 0 ? obj.__assign(o + bb_pos, bb) : null; }
67+
/**
68+
* Hash of the model/schema; usually want to check hashes before even creating a model and thus avoiding creating
69+
* the model altogether. But, at least for now, let language bindings provide it via the model optionally.
70+
* We use SipHash 128 (16 bytes).
71+
*/
72+
public int hash(int j) { int o = __offset(20); return o != 0 ? bb.get(__vector(o) + j * 1) & 0xFF : 0; }
73+
public int hashLength() { int o = __offset(20); return o != 0 ? __vector_len(o) : 0; }
74+
public ByteVector hashVector() { return hashVector(new ByteVector()); }
75+
public ByteVector hashVector(ByteVector obj) { int o = __offset(20); return o != 0 ? obj.__assign(__vector(o), bb) : null; }
76+
public ByteBuffer hashAsByteBuffer() { return __vector_as_bytebuffer(20, 1); }
77+
public ByteBuffer hashInByteBuffer(ByteBuffer _bb) { return __vector_in_bytebuffer(_bb, 20, 1); }
6778

68-
public static void startModel(FlatBufferBuilder builder) { builder.startTable(8); }
79+
public static void startModel(FlatBufferBuilder builder) { builder.startTable(9); }
6980
public static void addModelVersion(FlatBufferBuilder builder, long modelVersion) { builder.addInt(0, (int)modelVersion, (int)0L); }
7081
public static void addName(FlatBufferBuilder builder, int nameOffset) { builder.addOffset(1, nameOffset, 0); }
7182
public static void addVersion(FlatBufferBuilder builder, long version) { builder.addLong(2, version, 0L); }
@@ -76,6 +87,10 @@ public final class Model extends Table {
7687
public static void addLastIndexId(FlatBufferBuilder builder, int lastIndexIdOffset) { builder.addStruct(5, lastIndexIdOffset, 0); }
7788
public static void addLastSequenceId(FlatBufferBuilder builder, int lastSequenceIdOffset) { builder.addStruct(6, lastSequenceIdOffset, 0); }
7889
public static void addLastRelationId(FlatBufferBuilder builder, int lastRelationIdOffset) { builder.addStruct(7, lastRelationIdOffset, 0); }
90+
public static void addHash(FlatBufferBuilder builder, int hashOffset) { builder.addOffset(8, hashOffset, 0); }
91+
public static int createHashVector(FlatBufferBuilder builder, byte[] data) { return builder.createByteVector(data); }
92+
public static int createHashVector(FlatBufferBuilder builder, ByteBuffer data) { return builder.createByteVector(data); }
93+
public static void startHashVector(FlatBufferBuilder builder, int numElems) { builder.startVector(1, numElems, 1); }
7994
public static int endModel(FlatBufferBuilder builder) {
8095
int o = builder.endTable();
8196
return o;

0 commit comments

Comments
 (0)