blob: c6d1e4ee0af4157f58d9fde83e91dcb67c3150c3 [file] [log] [blame]
Finn Williams510f6182020-02-21 11:14:08 +00001//
2// Copyright © 2020 Arm Ltd. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5#pragma once
6
Finn Williams8a2b4682020-02-26 10:25:26 +00007#include "armnn/profiling/ITimelineDecoder.hpp"
Finn Williams510f6182020-02-21 11:14:08 +00008#include <vector>
Finn Williams8a2b4682020-02-26 10:25:26 +00009
Finn Williams510f6182020-02-21 11:14:08 +000010namespace armnn
11{
Finn Williams8a2b4682020-02-26 10:25:26 +000012namespace timelinedecoder
13{
Finn Williams510f6182020-02-21 11:14:08 +000014class TimelineDecoder : public ITimelineDecoder
15{
16
17public:
18
19 struct Model
20 {
21 std::vector<Entity> m_Entities;
22 std::vector<EventClass> m_EventClasses;
23 std::vector<Event> m_Events;
24 std::vector<Label> m_Labels;
25 std::vector<Relationship> m_Relationships;
26 };
27
28 using OnNewEntityCallback = void (*)(Model &, const Entity);
29 using OnNewEventClassCallback = void (*)(Model &, const EventClass);
30 using OnNewEventCallback = void (*)(Model &, const Event);
31 using OnNewLabelCallback = void (*)(Model &, const Label);
32 using OnNewRelationshipCallback = void (*)(Model &, const Relationship);
33
Keith Davis97da5e22020-03-05 16:25:28 +000034 virtual TimelineStatus CreateEntity(const Entity &) override;
35 virtual TimelineStatus CreateEventClass(const EventClass &) override;
36 virtual TimelineStatus CreateEvent(const Event &) override;
37 virtual TimelineStatus CreateLabel(const Label &) override;
38 virtual TimelineStatus CreateRelationship(const Relationship &) override;
Finn Williams510f6182020-02-21 11:14:08 +000039
40 const Model& GetModel();
41
Keith Davis97da5e22020-03-05 16:25:28 +000042 TimelineStatus SetEntityCallback(const OnNewEntityCallback);
43 TimelineStatus SetEventClassCallback(const OnNewEventClassCallback);
44 TimelineStatus SetEventCallback(const OnNewEventCallback);
45 TimelineStatus SetLabelCallback(const OnNewLabelCallback);
46 TimelineStatus SetRelationshipCallback(const OnNewRelationshipCallback);
Finn Williams510f6182020-02-21 11:14:08 +000047
Finn Williamse6a2ccd2020-02-27 16:21:41 +000048 void SetDefaultCallbacks();
49
Finn Williams510f6182020-02-21 11:14:08 +000050 void print();
51
52private:
53 Model m_Model;
54
55 OnNewEntityCallback m_OnNewEntityCallback;
56 OnNewEventClassCallback m_OnNewEventClassCallback;
57 OnNewEventCallback m_OnNewEventCallback;
58 OnNewLabelCallback m_OnNewLabelCallback;
59 OnNewRelationshipCallback m_OnNewRelationshipCallback;
60
61 void printLabels();
62 void printEntities();
63 void printEventClasses();
64 void printRelationships();
65 void printEvents();
66};
Finn Williams8a2b4682020-02-26 10:25:26 +000067
68}
Finn Williams510f6182020-02-21 11:14:08 +000069}