IVGCVSW-2697 Add Serialize/Deserialize for the Merger Layer

* Force generation of schema header in every build
* Also fixed typo in OriginsDescriptor comment (Descriptors.hpp)
* Added Serialize/Deserialize check on Addition Layer
* Added Serialize/Deserialize check on Floor Layer
* Added Serialize/Deserialize check on Minimum Layer
* Added Serialize/Deserialize check on Maximum Layer
* Added Serialize/Deserialize check on Multiplication Layer
* Added Serialize/Deserialize check on Division Layer

Change-Id: I1358ea4db7ca506d8bcec2ee64e1fbad6005e723
Signed-off-by: Jim Flynn <jim.flynn@arm.com>
diff --git a/src/armnnSerializer/Serializer.cpp b/src/armnnSerializer/Serializer.cpp
index 56c4281..3b71e5f 100644
--- a/src/armnnSerializer/Serializer.cpp
+++ b/src/armnnSerializer/Serializer.cpp
@@ -361,6 +361,39 @@
     CreateAnyLayer(fbMinimumLayer.o, serializer::Layer::Layer_MinimumLayer);
 }
 
+void SerializerVisitor::VisitMergerLayer(const armnn::IConnectableLayer* layer,
+                                         const armnn::OriginsDescriptor& mergerDescriptor,
+                                         const char* name)
+{
+    auto flatBufferMergerBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_Merger);
+
+    std::vector<flatbuffers::Offset<UintVector>> views;
+    for (unsigned int v = 0; v < mergerDescriptor.GetNumViews(); ++v)
+    {
+        const uint32_t* origin = mergerDescriptor.GetViewOrigin(v);
+        std::vector<uint32_t> origins;
+        for (unsigned int d = 0; d < mergerDescriptor.GetNumDimensions(); ++d)
+        {
+            origins.push_back(origin[d]);
+        }
+        auto view = m_flatBufferBuilder.CreateVector(origins);
+        auto uintVector = CreateUintVector(m_flatBufferBuilder, view);
+        views.push_back(uintVector);
+    }
+
+    auto flatBufferMergerDescriptor = CreateOriginsDescriptor(m_flatBufferBuilder,
+                                                              mergerDescriptor.GetConcatAxis(),
+                                                              mergerDescriptor.GetNumViews(),
+                                                              mergerDescriptor.GetNumDimensions(),
+                                                              m_flatBufferBuilder.CreateVector(views));
+
+    auto flatBufferLayer = CreateMergerLayer(m_flatBufferBuilder,
+                                             flatBufferMergerBaseLayer,
+                                             flatBufferMergerDescriptor);
+
+    CreateAnyLayer(flatBufferLayer.o, serializer::Layer::Layer_MergerLayer);
+}
+
 void SerializerVisitor::VisitMultiplicationLayer(const armnn::IConnectableLayer* layer, const char* name)
 {
     auto fbMultiplicationBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_Multiplication);