This commit is contained in:
TGIshib
2016-08-14 14:58:51 +03:00
parent 9031597f49
commit 8fdced4e11
7 changed files with 187 additions and 102 deletions

View File

@@ -130,13 +130,8 @@ public sealed class Monster : Table {
}
public static void FinishMonsterBuffer(FlatBufferBuilder builder, Offset<Monster> offset) { builder.Finish(offset.Value, "MONS"); }
public static int KeysCompare(string o1, string o2) { return o1.CompareTo(o2); }
public int KeyCompareWithValue(string val) { return Name.CompareTo(val); }
public static VectorOffset CreateMySortedTableVector(FlatBufferBuilder builder, Offset<Monster>[] offsets) {
Array.Sort(offsets, (Offset<Monster> o1, Offset<Monster> o2) => KeysCompare(__string(__offset(10, builder.DataBuffer.Length - o1.Value, builder.DataBuffer, true), builder.DataBuffer),
__string(__offset(10, builder.DataBuffer.Length - o2.Value, builder.DataBuffer, true), builder.DataBuffer)));
public static VectorOffset CreateMySortedTableVector(FlatBufferBuilder builder, Offset<Monster>[] offsets) {
Array.Sort(offsets, (Offset<Monster> o1, Offset<Monster> o2) => CompareStrings(__offset(10, o1.Value, builder.DataBuffer), __offset(10, o2.Value, builder.DataBuffer), builder.DataBuffer));
return builder.CreateVectorOfTables(offsets);
}
@@ -145,7 +140,7 @@ public sealed class Monster : Table {
while (span != 0) {
int middle = span / 2;
Monster table = tables[start + middle];
int comp = table.KeyCompareWithValue(key);
int comp = table.Name.CompareTo(key);
if (comp > 0) span = middle;
else if (comp < 0) {
middle++;

View File

@@ -135,26 +135,16 @@ public final class Monster extends Table {
return o;
}
public static void finishMonsterBuffer(FlatBufferBuilder builder, int offset) { builder.finish(offset, "MONS"); }
public static int keysCompare(String o1, String o2) { return o1.compareTo(o2); }
public int keyCompareWithValue(String val) { return name().compareTo(val); }
public static int createMySortedTableVector(FlatBufferBuilder builder, ByteBuffer bb, int[] off) {
Integer[] offsets = new Integer[off.length];
for (int i = 0; i < off.length; i++) offsets[i] = off[i];
Arrays.sort(offsets, (Integer o1, Integer o2) -> keysCompare(__string(__offset(10, bb.array().length - o1, bb, true), bb),
__string(__offset(10, bb.array().length - o2, bb, true), bb)));
for (int i = 0; i < off.length; i++) off[i] = offsets[i];
return builder.createVectorOfTables(off);
}
@Override
protected int keysCompare(Integer o1, Integer o2, ByteBuffer _bb) { return compareStrings(__offset(10, o1, _bb), __offset(10, o2, _bb), _bb); }
public static Monster lookupByKey(Monster[] tables, String key) {
int span = tables.length, start = 0;
while (span != 0) {
int middle = span / 2;
Monster table = tables[start + middle];
int comp = table.keyCompareWithValue(key);
int comp = table.name().compareTo(key);
if (comp > 0) span = middle;
else if (comp < 0) {
middle++;