Change to flatbuffers 1.12 as the submodule

The code should be compatible with both flatbuffers 2.0 and 1.12
through try/except blocks.

Generally other projects seem to still be using 1.12, so move the
submodule back to 1.12 for maximum compatibility.

Change-Id: I9733c7df0a7e4226f87473e19e48d3a80a3db6c6
Signed-off-by: Eric Kunze <eric.kunze@arm.com>
diff --git a/python/serializer/tosa_serializer.py b/python/serializer/tosa_serializer.py
index fec676e..cd86777 100644
--- a/python/serializer/tosa_serializer.py
+++ b/python/serializer/tosa_serializer.py
@@ -582,7 +582,7 @@
 
 class TosaSerializer:
     def __init__(self, pathPrefix):
-
+        self.add_compat_methods()
         # Get the global TOSA version if not already defined
 
         self.builder = flatbuffers.Builder(0)
@@ -749,7 +749,10 @@
         start_fcn(builder, len(fb_strs))
         for s in fb_strs[::-1]:
             builder.PrependUOffsetTRelative(s)
-        return builder.EndVector()
+        try:
+            return builder.EndVector()
+        except TypeError:
+            return builder.EndVector(len(vec))
 
     @staticmethod
     def serializeUint8Vec(builder, vec):
@@ -801,3 +804,327 @@
             return val
         else:
             return [val]
+
+    # Remove when switching to flatbuffers 2.0
+    # contains a mapping of the deprecated 1.12 method to the 2.0 version
+
+    def add_compat_methods(self):
+
+        from tosa import ArithmeticRightShiftAttribute
+
+        if not hasattr(ArithmeticRightShiftAttribute, "Start"):
+            ArithmeticRightShiftAttribute.Start = (
+                ArithmeticRightShiftAttribute.ArithmeticRightShiftAttributeStart
+            )
+            ArithmeticRightShiftAttribute.AddRound = (
+                ArithmeticRightShiftAttribute.ArithmeticRightShiftAttributeAddRound
+            )
+            ArithmeticRightShiftAttribute.End = (
+                ArithmeticRightShiftAttribute.ArithmeticRightShiftAttributeEnd
+            )
+        from tosa import AxisAttribute
+
+        if not hasattr(AxisAttribute, "Start"):
+            AxisAttribute.Start = AxisAttribute.AxisAttributeStart
+            AxisAttribute.AddAxis = AxisAttribute.AxisAttributeAddAxis
+            AxisAttribute.End = AxisAttribute.AxisAttributeEnd
+        from tosa import ClampAttribute
+
+        if not hasattr(ClampAttribute, "Start"):
+            ClampAttribute.Start = ClampAttribute.ClampAttributeStart
+            ClampAttribute.AddMinInt = ClampAttribute.ClampAttributeAddMinInt
+            ClampAttribute.AddMaxInt = ClampAttribute.ClampAttributeAddMaxInt
+            ClampAttribute.AddMinFp = ClampAttribute.ClampAttributeAddMinFp
+            ClampAttribute.AddMaxFp = ClampAttribute.ClampAttributeAddMaxFp
+            ClampAttribute.End = ClampAttribute.ClampAttributeEnd
+        from tosa import CondIfAttribute
+
+        if not hasattr(CondIfAttribute, "Start"):
+            CondIfAttribute.Start = CondIfAttribute.CondIfAttributeStart
+            CondIfAttribute.AddThenBranch = CondIfAttribute.CondIfAttributeAddThenBranch
+            CondIfAttribute.AddElseBranch = CondIfAttribute.CondIfAttributeAddElseBranch
+            CondIfAttribute.End = CondIfAttribute.CondIfAttributeEnd
+        from tosa import ConvAttribute
+
+        if not hasattr(ConvAttribute, "Start"):
+            ConvAttribute.Start = ConvAttribute.ConvAttributeStart
+            ConvAttribute.AddPad = ConvAttribute.ConvAttributeAddPad
+            ConvAttribute.StartPadVector = ConvAttribute.ConvAttributeStartPadVector
+            ConvAttribute.AddStride = ConvAttribute.ConvAttributeAddStride
+            ConvAttribute.StartStrideVector = (
+                ConvAttribute.ConvAttributeStartStrideVector
+            )
+            ConvAttribute.AddDilation = ConvAttribute.ConvAttributeAddDilation
+            ConvAttribute.StartDilationVector = (
+                ConvAttribute.ConvAttributeStartDilationVector
+            )
+            ConvAttribute.End = ConvAttribute.ConvAttributeEnd
+        from tosa import ConvQuantInfo
+
+        if not hasattr(ConvQuantInfo, "Start"):
+            ConvQuantInfo.Start = ConvQuantInfo.ConvQuantInfoStart
+            ConvQuantInfo.AddInputZp = ConvQuantInfo.ConvQuantInfoAddInputZp
+            ConvQuantInfo.AddWeightZp = ConvQuantInfo.ConvQuantInfoAddWeightZp
+            ConvQuantInfo.End = ConvQuantInfo.ConvQuantInfoEnd
+        from tosa import MatMulQuantInfo
+
+        if not hasattr(MatMulQuantInfo, "Start"):
+            MatMulQuantInfo.Start = MatMulQuantInfo.MatMulQuantInfoStart
+            MatMulQuantInfo.AddAZp = MatMulQuantInfo.MatMulQuantInfoAddAZp
+            MatMulQuantInfo.AddBZp = MatMulQuantInfo.MatMulQuantInfoAddBZp
+            MatMulQuantInfo.End = MatMulQuantInfo.MatMulQuantInfoEnd
+        from tosa import MulAttribute
+
+        if not hasattr(MulAttribute, "Start"):
+            MulAttribute.Start = MulAttribute.MulAttributeStart
+            MulAttribute.AddShift = MulAttribute.MulAttributeAddShift
+            MulAttribute.End = MulAttribute.MulAttributeEnd
+        from tosa import PadAttribute
+
+        if not hasattr(PadAttribute, "Start"):
+            PadAttribute.Start = PadAttribute.PadAttributeStart
+            PadAttribute.AddPadding = PadAttribute.PadAttributeAddPadding
+            PadAttribute.StartPaddingVector = (
+                PadAttribute.PadAttributeStartPaddingVector
+            )
+            PadAttribute.AddPadConstInt = PadAttribute.PadAttributeAddPadConstInt
+            PadAttribute.AddPadConstFp = PadAttribute.PadAttributeAddPadConstFp
+            PadAttribute.End = PadAttribute.PadAttributeEnd
+        from tosa import PadQuantInfo
+
+        if not hasattr(PadQuantInfo, "Start"):
+            PadQuantInfo.Start = PadQuantInfo.PadQuantInfoStart
+            PadQuantInfo.AddInputZp = PadQuantInfo.PadQuantInfoAddInputZp
+            PadQuantInfo.End = PadQuantInfo.PadQuantInfoEnd
+        from tosa import PoolAttribute
+
+        if not hasattr(PoolAttribute, "Start"):
+            PoolAttribute.Start = PoolAttribute.PoolAttributeStart
+            PoolAttribute.AddPad = PoolAttribute.PoolAttributeAddPad
+            PoolAttribute.StartPadVector = PoolAttribute.PoolAttributeStartPadVector
+            PoolAttribute.AddKernel = PoolAttribute.PoolAttributeAddKernel
+            PoolAttribute.StartKernelVector = (
+                PoolAttribute.PoolAttributeStartKernelVector
+            )
+            PoolAttribute.AddStride = PoolAttribute.PoolAttributeAddStride
+            PoolAttribute.StartStrideVector = (
+                PoolAttribute.PoolAttributeStartStrideVector
+            )
+            PoolAttribute.End = PoolAttribute.PoolAttributeEnd
+        from tosa import RescaleAttribute
+
+        if not hasattr(RescaleAttribute, "Start"):
+            RescaleAttribute.Start = RescaleAttribute.RescaleAttributeStart
+            RescaleAttribute.AddInputZp = RescaleAttribute.RescaleAttributeAddInputZp
+            RescaleAttribute.AddOutputZp = RescaleAttribute.RescaleAttributeAddOutputZp
+            RescaleAttribute.AddMultiplier = (
+                RescaleAttribute.RescaleAttributeAddMultiplier
+            )
+            RescaleAttribute.StartMultiplierVector = (
+                RescaleAttribute.RescaleAttributeStartMultiplierVector
+            )
+            RescaleAttribute.AddShift = RescaleAttribute.RescaleAttributeAddShift
+            RescaleAttribute.StartShiftVector = (
+                RescaleAttribute.RescaleAttributeStartShiftVector
+            )
+            RescaleAttribute.AddScale32 = RescaleAttribute.RescaleAttributeAddScale32
+            RescaleAttribute.AddDoubleRound = (
+                RescaleAttribute.RescaleAttributeAddDoubleRound
+            )
+            RescaleAttribute.AddPerChannel = (
+                RescaleAttribute.RescaleAttributeAddPerChannel
+            )
+            RescaleAttribute.End = RescaleAttribute.RescaleAttributeEnd
+        from tosa import ReshapeAttribute
+
+        if not hasattr(ReshapeAttribute, "Start"):
+            ReshapeAttribute.Start = ReshapeAttribute.ReshapeAttributeStart
+            ReshapeAttribute.AddNewShape = ReshapeAttribute.ReshapeAttributeAddNewShape
+            ReshapeAttribute.StartNewShapeVector = (
+                ReshapeAttribute.ReshapeAttributeStartNewShapeVector
+            )
+            ReshapeAttribute.End = ReshapeAttribute.ReshapeAttributeEnd
+        from tosa import ResizeAttribute
+
+        if not hasattr(ResizeAttribute, "Start"):
+            ResizeAttribute.Start = ResizeAttribute.ResizeAttributeStart
+            ResizeAttribute.AddOutputSize = ResizeAttribute.ResizeAttributeAddOutputSize
+            ResizeAttribute.StartOutputSizeVector = (
+                ResizeAttribute.ResizeAttributeStartOutputSizeVector
+            )
+            ResizeAttribute.AddStride = ResizeAttribute.ResizeAttributeAddStride
+            ResizeAttribute.StartStrideVector = (
+                ResizeAttribute.ResizeAttributeStartStrideVector
+            )
+            ResizeAttribute.AddOffset = ResizeAttribute.ResizeAttributeAddOffset
+            ResizeAttribute.StartOffsetVector = (
+                ResizeAttribute.ResizeAttributeStartOffsetVector
+            )
+            ResizeAttribute.AddShift = ResizeAttribute.ResizeAttributeAddShift
+            ResizeAttribute.AddStrideFp = ResizeAttribute.ResizeAttributeAddStrideFp
+            ResizeAttribute.StartStrideFpVector = (
+                ResizeAttribute.ResizeAttributeStartStrideFpVector
+            )
+            ResizeAttribute.AddOffsetFp = ResizeAttribute.ResizeAttributeAddOffsetFp
+            ResizeAttribute.StartOffsetFpVector = (
+                ResizeAttribute.ResizeAttributeStartOffsetFpVector
+            )
+            ResizeAttribute.AddMode = ResizeAttribute.ResizeAttributeAddMode
+            ResizeAttribute.End = ResizeAttribute.ResizeAttributeEnd
+        from tosa import SliceAttribute
+
+        if not hasattr(SliceAttribute, "Start"):
+            SliceAttribute.Start = SliceAttribute.SliceAttributeStart
+            SliceAttribute.AddStart = SliceAttribute.SliceAttributeAddStart
+            SliceAttribute.StartStartVector = (
+                SliceAttribute.SliceAttributeStartStartVector
+            )
+            SliceAttribute.AddSize = SliceAttribute.SliceAttributeAddSize
+            SliceAttribute.StartSizeVector = (
+                SliceAttribute.SliceAttributeStartSizeVector
+            )
+            SliceAttribute.End = SliceAttribute.SliceAttributeEnd
+        from tosa import TableAttribute
+
+        if not hasattr(TableAttribute, "Start"):
+            TableAttribute.Start = TableAttribute.TableAttributeStart
+            TableAttribute.AddTable = TableAttribute.TableAttributeAddTable
+            TableAttribute.StartTableVector = (
+                TableAttribute.TableAttributeStartTableVector
+            )
+            TableAttribute.End = TableAttribute.TableAttributeEnd
+        from tosa import TileAttribute
+
+        if not hasattr(TileAttribute, "Start"):
+            TileAttribute.Start = TileAttribute.TileAttributeStart
+            TileAttribute.AddMultiples = TileAttribute.TileAttributeAddMultiples
+            TileAttribute.StartMultiplesVector = (
+                TileAttribute.TileAttributeStartMultiplesVector
+            )
+            TileAttribute.End = TileAttribute.TileAttributeEnd
+        from tosa import TosaBasicBlock
+
+        if not hasattr(TosaBasicBlock, "Start"):
+            TosaBasicBlock.Start = TosaBasicBlock.TosaBasicBlockStart
+            TosaBasicBlock.AddName = TosaBasicBlock.TosaBasicBlockAddName
+            TosaBasicBlock.AddOperators = TosaBasicBlock.TosaBasicBlockAddOperators
+            TosaBasicBlock.StartOperatorsVector = (
+                TosaBasicBlock.TosaBasicBlockStartOperatorsVector
+            )
+            TosaBasicBlock.AddTensors = TosaBasicBlock.TosaBasicBlockAddTensors
+            TosaBasicBlock.StartTensorsVector = (
+                TosaBasicBlock.TosaBasicBlockStartTensorsVector
+            )
+            TosaBasicBlock.AddInputs = TosaBasicBlock.TosaBasicBlockAddInputs
+            TosaBasicBlock.StartInputsVector = (
+                TosaBasicBlock.TosaBasicBlockStartInputsVector
+            )
+            TosaBasicBlock.AddOutputs = TosaBasicBlock.TosaBasicBlockAddOutputs
+            TosaBasicBlock.StartOutputsVector = (
+                TosaBasicBlock.TosaBasicBlockStartOutputsVector
+            )
+            TosaBasicBlock.End = TosaBasicBlock.TosaBasicBlockEnd
+        from tosa import TosaGraph
+
+        if not hasattr(TosaGraph, "Start"):
+            TosaGraph.Start = TosaGraph.TosaGraphStart
+            TosaGraph.AddVersion = TosaGraph.TosaGraphAddVersion
+            TosaGraph.AddBlocks = TosaGraph.TosaGraphAddBlocks
+            TosaGraph.StartBlocksVector = TosaGraph.TosaGraphStartBlocksVector
+            TosaGraph.End = TosaGraph.TosaGraphEnd
+        from tosa import TosaOperator
+
+        if not hasattr(TosaOperator, "Start"):
+            TosaOperator.Start = TosaOperator.TosaOperatorStart
+            TosaOperator.AddOp = TosaOperator.TosaOperatorAddOp
+            TosaOperator.AddAttributeType = TosaOperator.TosaOperatorAddAttributeType
+            TosaOperator.AddAttribute = TosaOperator.TosaOperatorAddAttribute
+            TosaOperator.AddInputs = TosaOperator.TosaOperatorAddInputs
+            TosaOperator.StartInputsVector = TosaOperator.TosaOperatorStartInputsVector
+            TosaOperator.AddOutputs = TosaOperator.TosaOperatorAddOutputs
+            TosaOperator.StartOutputsVector = (
+                TosaOperator.TosaOperatorStartOutputsVector
+            )
+            TosaOperator.AddQuantInfoType = TosaOperator.TosaOperatorAddQuantInfoType
+            TosaOperator.AddQuantInfo = TosaOperator.TosaOperatorAddQuantInfo
+            TosaOperator.End = TosaOperator.TosaOperatorEnd
+        from tosa import TosaTensor
+
+        if not hasattr(TosaTensor, "Start"):
+            TosaTensor.Start = TosaTensor.TosaTensorStart
+            TosaTensor.AddName = TosaTensor.TosaTensorAddName
+            TosaTensor.AddShape = TosaTensor.TosaTensorAddShape
+            TosaTensor.StartShapeVector = TosaTensor.TosaTensorStartShapeVector
+            TosaTensor.AddType = TosaTensor.TosaTensorAddType
+            TosaTensor.AddData = TosaTensor.TosaTensorAddData
+            TosaTensor.StartDataVector = TosaTensor.TosaTensorStartDataVector
+            TosaTensor.End = TosaTensor.TosaTensorEnd
+        from tosa import TransposeAttribute
+
+        if not hasattr(TransposeAttribute, "Start"):
+            TransposeAttribute.Start = TransposeAttribute.TransposeAttributeStart
+            TransposeAttribute.AddPerms = TransposeAttribute.TransposeAttributeAddPerms
+            TransposeAttribute.StartPermsVector = (
+                TransposeAttribute.TransposeAttributeStartPermsVector
+            )
+            TransposeAttribute.End = TransposeAttribute.TransposeAttributeEnd
+        from tosa import TransposeConvAttribute
+
+        if not hasattr(TransposeConvAttribute, "Start"):
+            TransposeConvAttribute.Start = (
+                TransposeConvAttribute.TransposeConvAttributeStart
+            )
+            TransposeConvAttribute.AddOutpad = (
+                TransposeConvAttribute.TransposeConvAttributeAddOutpad
+            )
+            TransposeConvAttribute.StartOutpadVector = (
+                TransposeConvAttribute.TransposeConvAttributeStartOutpadVector
+            )
+            TransposeConvAttribute.AddStride = (
+                TransposeConvAttribute.TransposeConvAttributeAddStride
+            )
+            TransposeConvAttribute.StartStrideVector = (
+                TransposeConvAttribute.TransposeConvAttributeStartStrideVector
+            )
+            TransposeConvAttribute.AddDilation = (
+                TransposeConvAttribute.TransposeConvAttributeAddDilation
+            )
+            TransposeConvAttribute.StartDilationVector = (
+                TransposeConvAttribute.TransposeConvAttributeStartDilationVector
+            )
+            TransposeConvAttribute.AddOutputShape = (
+                TransposeConvAttribute.TransposeConvAttributeAddOutputShape
+            )
+            TransposeConvAttribute.StartOutputShapeVector = (
+                TransposeConvAttribute.TransposeConvAttributeStartOutputShapeVector
+            )
+            TransposeConvAttribute.End = (
+                TransposeConvAttribute.TransposeConvAttributeEnd
+            )
+        from tosa import UnaryQuantInfo
+
+        if not hasattr(UnaryQuantInfo, "Start"):
+            UnaryQuantInfo.Start = UnaryQuantInfo.UnaryQuantInfoStart
+            UnaryQuantInfo.AddInputZp = UnaryQuantInfo.UnaryQuantInfoAddInputZp
+            UnaryQuantInfo.AddOutputZp = UnaryQuantInfo.UnaryQuantInfoAddOutputZp
+            UnaryQuantInfo.End = UnaryQuantInfo.UnaryQuantInfoEnd
+        from tosa import Version
+
+        if not hasattr(Version, "Start"):
+            Version.Start = Version.VersionStart
+            Version.Add_major = Version.VersionAdd_major
+            Version.Add_minor = Version.VersionAdd_minor
+            Version.Add_patch = Version.VersionAdd_patch
+            Version.Add_draft = Version.VersionAdd_draft
+            Version.End = Version.VersionEnd
+        from tosa import WhileLoopAttribute
+
+        if not hasattr(WhileLoopAttribute, "Start"):
+            WhileLoopAttribute.Start = WhileLoopAttribute.WhileLoopAttributeStart
+            WhileLoopAttribute.AddCondBranch = (
+                WhileLoopAttribute.WhileLoopAttributeAddCondBranch
+            )
+            WhileLoopAttribute.AddBodyBranch = (
+                WhileLoopAttribute.WhileLoopAttributeAddBodyBranch
+            )
+            WhileLoopAttribute.End = WhileLoopAttribute.WhileLoopAttributeEnd