1# automatically generated by the FlatBuffers compiler, do not modify
2
3# namespace: Example
4
5import flatbuffers
6from flatbuffers.compat import import_numpy
7np = import_numpy()
8
9class NestedStruct(object):
10    __slots__ = ['_tab']
11
12    @classmethod
13    def SizeOf(cls):
14        return 32
15
16    # NestedStruct
17    def Init(self, buf, pos):
18        self._tab = flatbuffers.table.Table(buf, pos)
19
20    # NestedStruct
21    def A(self): return [self._tab.Get(flatbuffers.number_types.Int32Flags, self._tab.Pos + flatbuffers.number_types.UOffsetTFlags.py_type(0 + i * 4)) for i in range(2)]
22    # NestedStruct
23    def ALength(self):
24        o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(0))
25        if o != 0:
26            return self._tab.VectorLen(o)
27        return 0
28
29    # NestedStruct
30    def AIsNone(self):
31        o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(0))
32        return o == 0
33
34    # NestedStruct
35    def B(self): return self._tab.Get(flatbuffers.number_types.Int8Flags, self._tab.Pos + flatbuffers.number_types.UOffsetTFlags.py_type(8))
36    # NestedStruct
37    def C(self): return [self._tab.Get(flatbuffers.number_types.Int8Flags, self._tab.Pos + flatbuffers.number_types.UOffsetTFlags.py_type(9 + i * 1)) for i in range(2)]
38    # NestedStruct
39    def CLength(self):
40        o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(9))
41        if o != 0:
42            return self._tab.VectorLen(o)
43        return 0
44
45    # NestedStruct
46    def CIsNone(self):
47        o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(9))
48        return o == 0
49
50    # NestedStruct
51    def D(self): return [self._tab.Get(flatbuffers.number_types.Int64Flags, self._tab.Pos + flatbuffers.number_types.UOffsetTFlags.py_type(16 + i * 8)) for i in range(2)]
52    # NestedStruct
53    def DLength(self):
54        o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(16))
55        if o != 0:
56            return self._tab.VectorLen(o)
57        return 0
58
59    # NestedStruct
60    def DIsNone(self):
61        o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(16))
62        return o == 0
63
64
65def CreateNestedStruct(builder, a, b, c, d):
66    builder.Prep(8, 32)
67    for _idx0 in range(2 , 0, -1):
68        builder.PrependInt64(d[_idx0-1])
69    builder.Pad(5)
70    for _idx0 in range(2 , 0, -1):
71        builder.PrependInt8(c[_idx0-1])
72    builder.PrependInt8(b)
73    for _idx0 in range(2 , 0, -1):
74        builder.PrependInt32(a[_idx0-1])
75    return builder.Offset()
76
77try:
78    from typing import List
79except:
80    pass
81
82class NestedStructT(object):
83
84    # NestedStructT
85    def __init__(self):
86        self.a = None  # type: List[int]
87        self.b = 0  # type: int
88        self.c = None  # type: List[int]
89        self.d = None  # type: List[int]
90
91    @classmethod
92    def InitFromBuf(cls, buf, pos):
93        nestedStruct = NestedStruct()
94        nestedStruct.Init(buf, pos)
95        return cls.InitFromObj(nestedStruct)
96
97    @classmethod
98    def InitFromObj(cls, nestedStruct):
99        x = NestedStructT()
100        x._UnPack(nestedStruct)
101        return x
102
103    # NestedStructT
104    def _UnPack(self, nestedStruct):
105        if nestedStruct is None:
106            return
107        if not nestedStruct.AIsNone():
108            if np is None:
109                self.a = []
110                for i in range(nestedStruct.ALength()):
111                    self.a.append(nestedStruct.A(i))
112            else:
113                self.a = nestedStruct.AAsNumpy()
114        self.b = nestedStruct.B()
115        if not nestedStruct.CIsNone():
116            if np is None:
117                self.c = []
118                for i in range(nestedStruct.CLength()):
119                    self.c.append(nestedStruct.C(i))
120            else:
121                self.c = nestedStruct.CAsNumpy()
122        if not nestedStruct.DIsNone():
123            if np is None:
124                self.d = []
125                for i in range(nestedStruct.DLength()):
126                    self.d.append(nestedStruct.D(i))
127            else:
128                self.d = nestedStruct.DAsNumpy()
129
130    # NestedStructT
131    def Pack(self, builder):
132        return CreateNestedStruct(builder, self.a, self.b, self.c, self.d)
133