// // Copyright © 2020 Arm Ltd. All rights reserved. // SPDX-License-Identifier: MIT // #pragma once #include #include #include namespace armnn { namespace profiling { using LabelMap = std::map; using Attribute = std::pair; using Attributes = std::map; 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 m_Children; }; using Entities = std::map; struct ModelRelationship { ModelRelationship(const ITimelineDecoder::Relationship& relationship) : m_Relationship(relationship) {} ITimelineDecoder::Relationship m_Relationship; std::vector m_RelatedEntities; }; using Relationships = std::map; 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