package com.xiaopeng.map.dto;
|
|
import com.google.flatbuffers.FlatBufferBuilder;
|
import com.google.flatbuffers.Table;
|
|
/**
|
* 对应 map_area_rtree.fbs 中的 Node 表。
|
* 只实现构建 FlatBuffer 所需的最小方法集合。
|
*/
|
public final class Node extends Table {
|
|
private Node() {
|
}
|
|
public static int createNode(FlatBufferBuilder builder,
|
int type,
|
int rangeOffset,
|
int pointsVectorOffset,
|
int id,
|
boolean isBlacklist) {
|
builder.startTable(5);
|
addType(builder, type);
|
addRange(builder, rangeOffset);
|
addPoints(builder, pointsVectorOffset);
|
addId(builder, id);
|
addIsBlacklist(builder, isBlacklist);
|
return endNode(builder);
|
}
|
|
public static void startNode(FlatBufferBuilder builder) {
|
builder.startTable(5);
|
}
|
|
public static void addType(FlatBufferBuilder builder, int type) {
|
builder.addInt(0, type, 0);
|
}
|
|
public static void addRange(FlatBufferBuilder builder, int rangeOffset) {
|
builder.addOffset(1, rangeOffset, 0);
|
}
|
|
public static void addPoints(FlatBufferBuilder builder, int pointsOffset) {
|
builder.addOffset(2, pointsOffset, 0);
|
}
|
|
public static void addId(FlatBufferBuilder builder, int id) {
|
builder.addInt(3, id, 0);
|
}
|
|
public static void addIsBlacklist(FlatBufferBuilder builder, boolean isBlacklist) {
|
builder.addBoolean(4, isBlacklist, false);
|
}
|
|
/**
|
* 构建 points 向量。
|
*/
|
public static int createPointsVector(FlatBufferBuilder builder, int[] data) {
|
builder.startVector(4, data.length, 4);
|
for (int i = data.length - 1; i >= 0; i--) {
|
builder.addOffset(data[i]);
|
}
|
return builder.endVector();
|
}
|
|
public static void startPointsVector(FlatBufferBuilder builder, int numElems) {
|
builder.startVector(4, numElems, 4);
|
}
|
|
public static int endNode(FlatBufferBuilder builder) {
|
return builder.endTable();
|
}
|
}
|