liujie
2026-03-09 bbdd5f4f286fc593c5c30bd1bccd1f39af135dfa
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
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();
    }
}