• rw's avatar
    Port FlatBuffers to Python. · 48dfc69e
    rw authored
    Implement code generation and self-contained runtime library for Python.
    
    The test suite verifies:
      - Correctness of generated Python code by comparing output to that of
        the other language ports.
      - The exact bytes in the Builder buffer during many scenarios.
      - Vtable deduplication correctness.
      - Edge cases for table construction, via a fuzzer derived from the Go
        implementation.
      - All code is simultaneously valid in Python 2.6, 2.7, and 3.4.
    
    The test suite includes benchmarks for:
      - Building 'gold' data.
      - Parsing 'gold' data.
      - Deduplicating vtables.
    
    All tests pass on this author's system for the following Python
    implementations:
      - CPython 2.6.7
      - CPython 2.7.8
      - CPython 3.4.2
      - PyPy 2.5.0 (CPython 2.7.8 compatible)
    48dfc69e
Stat.py 1.23 KB
# automatically generated, do not modify

# namespace: Example

import flatbuffers

class Stat(object):
    __slots__ = ['_tab']

    # Stat
    def Init(self, buf, pos):
        self._tab = flatbuffers.table.Table(buf, pos)

    # Stat
    def Id(self):
        o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(4))
        if o != 0:
            return self._tab.String(o + self._tab.Pos)
        return ""

    # Stat
    def Val(self):
        o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(6))
        if o != 0:
            return self._tab.Get(flatbuffers.number_types.Int64Flags, o + self._tab.Pos)
        return 0

    # Stat
    def Count(self):
        o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(8))
        if o != 0:
            return self._tab.Get(flatbuffers.number_types.Uint16Flags, o + self._tab.Pos)
        return 0

def StatStart(builder): builder.StartObject(3)
def StatAddId(builder, id): builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(id), 0)
def StatAddVal(builder, val): builder.PrependInt64Slot(1, val, 0)
def StatAddCount(builder, count): builder.PrependUint16Slot(2, count, 0)
def StatEnd(builder): return builder.EndObject()