IVGCVSW-5980 Add Descriptor, TensorInfo and Convolution algorithm to JSON

 * Add GUID as field to layer details and profiling events
 * Add Optional GUID param to existing tests
 * Improve Details macro to be inline function
 * Fix some formatting

Signed-off-by: Keith Davis <keith.davis@arm.com>
Change-Id: I66f192a90a7642b3ee8e7dda0d3f428cce002581
diff --git a/src/armnn/JsonPrinter.hpp b/src/armnn/JsonPrinter.hpp
index 4af1609..9e8ecb4 100644
--- a/src/armnn/JsonPrinter.hpp
+++ b/src/armnn/JsonPrinter.hpp
@@ -10,6 +10,7 @@
 #include <set>
 #include <sstream>
 
+#include <ProfilingGuid.hpp>
 #include "Instrument.hpp"
 #include "JsonUtils.hpp"
 
@@ -27,7 +28,10 @@
 {
     // Object type changes according to the JsonObjectType specified in enum
     JsonChildObject(const std::string& label)
-        : m_Label(label), m_Unit(Measurement::Unit::TIME_MS), m_Type(JsonObjectType::Event)
+        : m_Label(label),
+          m_Unit(Measurement::Unit::TIME_MS),
+          m_Type(JsonObjectType::Event),
+          m_Guid(armnn::EmptyOptional())
     {}
     JsonChildObject(const JsonChildObject&) = default;
 
@@ -46,6 +50,11 @@
         }
     }
 
+    void SetGuid(profiling::ProfilingGuid guid)
+    {
+        m_Guid = Optional<profiling::ProfilingGuid>(guid);
+    }
+
     void AddChild(const JsonChildObject& childObject)
     {
         m_Children.push_back(childObject);
@@ -81,6 +90,7 @@
     std::string m_Label;
     Measurement::Unit m_Unit;
     JsonObjectType m_Type;
+    Optional<profiling::ProfilingGuid> m_Guid;
     std::vector<double> m_Measurements;
     std::vector<std::string> m_LayerDetailsList;
     std::vector<JsonChildObject> m_Children;
@@ -96,6 +106,7 @@
     void PrintLabel(const std::string& label, size_t id);
     void PrintUnit(armnn::Measurement::Unit unit);
     void PrintType(armnn::JsonObjectType type);
+    void PrintGuid(armnn::profiling::ProfilingGuid guid);
     void PrintMeasurementsList(const std::vector<double>& measurementsVector);
 
 public: