| // |
| // Copyright © 2020 Arm Ltd. All rights reserved. |
| // SPDX-License-Identifier: MIT |
| // |
| |
| #pragma once |
| |
| #include <cstdint> |
| #include <string> |
| |
| class ITimelineDecoder |
| { |
| |
| public: |
| |
| enum class TimelineStatus |
| { |
| TimelineStatus_Success, |
| TimelineStatus_Fail |
| }; |
| |
| enum class RelationshipType |
| { |
| RetentionLink, /// Head retains(parents) Tail |
| ExecutionLink, /// Head execution start depends on Tail execution completion |
| DataLink, /// Head uses data of Tail |
| LabelLink /// Head uses label Tail (Tail MUST be a guid of a label). |
| }; |
| |
| struct Entity |
| { |
| uint64_t m_Guid; |
| }; |
| |
| struct EventClass |
| { |
| uint64_t m_Guid; |
| }; |
| |
| struct Event |
| { |
| uint64_t m_Guid; |
| uint64_t m_TimeStamp; |
| uint64_t m_ThreadId; |
| }; |
| |
| struct Label |
| { |
| uint64_t m_Guid; |
| std::string m_Name; |
| }; |
| |
| struct Relationship |
| { |
| RelationshipType m_RelationshipType; |
| uint64_t m_Guid; |
| uint64_t m_HeadGuid; |
| uint64_t m_TailGuid; |
| }; |
| |
| virtual ~ITimelineDecoder() = default; |
| |
| virtual TimelineStatus CreateEntity(const Entity&) = 0; |
| virtual TimelineStatus CreateEventClass(const EventClass&) = 0; |
| virtual TimelineStatus CreateEvent(const Event&) = 0; |
| virtual TimelineStatus CreateLabel(const Label&) = 0; |
| virtual TimelineStatus CreateRelationship(const Relationship&) = 0; |
| }; |