aboutsummaryrefslogtreecommitdiff
path: root/src/profiling/test/TimelineModel.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/profiling/test/TimelineModel.hpp')
-rw-r--r--src/profiling/test/TimelineModel.hpp67
1 files changed, 67 insertions, 0 deletions
diff --git a/src/profiling/test/TimelineModel.hpp b/src/profiling/test/TimelineModel.hpp
new file mode 100644
index 0000000000..7b88d5fa2c
--- /dev/null
+++ b/src/profiling/test/TimelineModel.hpp
@@ -0,0 +1,67 @@
+//
+// Copyright © 2020 Arm Ltd. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#pragma once
+
+#include <armnn/profiling/ITimelineDecoder.hpp>
+
+#include <map>
+#include <vector>
+
+namespace armnn
+{
+
+namespace profiling
+{
+using LabelMap = std::map<uint64_t, ITimelineDecoder::Label>;
+using Attribute = std::pair<std::string, std::string>;
+using Attributes = std::map<std::string, Attribute>;
+class Entity
+{
+public:
+ Entity(uint64_t guid) : m_Guid(guid) {}
+ uint64_t GetGuid() {return m_Guid;}
+ void AddChild(Entity* child)
+ {
+ if (child != nullptr)
+ {
+ m_Children.push_back(child);
+ }
+ }
+ void AddAttribute(const std::string& type, const std::string& value)
+ {
+ Attribute attr(type, value);
+ m_Attributes.emplace(type, attr);
+ }
+private:
+ uint64_t m_Guid;
+ Attributes m_Attributes;
+ std::vector<Entity*> m_Children;
+};
+using Entities = std::map<uint64_t, Entity>;
+struct ModelRelationship
+{
+ ModelRelationship(const ITimelineDecoder::Relationship& relationship) : m_Relationship(relationship) {}
+ ITimelineDecoder::Relationship m_Relationship;
+ std::vector<Entity*> m_RelatedEntities;
+};
+using Relationships = std::map<uint64_t, ModelRelationship>;
+class TimelineModel
+{
+public:
+ void AddLabel(const ITimelineDecoder::Label& label);
+ void AddEntity(uint64_t guid);
+ Entity* findEntity(uint64_t id);
+ void AddRelationship(const ITimelineDecoder::Relationship& relationship);
+ ModelRelationship* findRelationship(uint64_t id);
+private:
+ LabelMap m_LabelMap;
+ Entities m_Entities;
+ Relationships m_Relationships;
+};
+
+} // namespace profiling
+
+} // namespace armnn \ No newline at end of file