blob: 2efdc4483b1e7be97da95416f970e1965317edf1 [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 Williams0c8cb992020-05-07 10:38:15 +01007#include <armnn/profiling/ITimelineDecoder.hpp>
8
Finn Williams510f6182020-02-21 11:14:08 +00009#include <vector>
Finn Williams8a2b4682020-02-26 10:25:26 +000010
Finn Williams510f6182020-02-21 11:14:08 +000011namespace armnn
12{
Finn Williams8a2b4682020-02-26 10:25:26 +000013namespace timelinedecoder
14{
Finn Williams510f6182020-02-21 11:14:08 +000015class TimelineDecoder : public ITimelineDecoder
16{
17
18public:
19
20 struct Model
21 {
22 std::vector<Entity> m_Entities;
23 std::vector<EventClass> m_EventClasses;
24 std::vector<Event> m_Events;
25 std::vector<Label> m_Labels;
26 std::vector<Relationship> m_Relationships;
27 };
28
29 using OnNewEntityCallback = void (*)(Model &, const Entity);
30 using OnNewEventClassCallback = void (*)(Model &, const EventClass);
31 using OnNewEventCallback = void (*)(Model &, const Event);
32 using OnNewLabelCallback = void (*)(Model &, const Label);
33 using OnNewRelationshipCallback = void (*)(Model &, const Relationship);
34
Keith Davis97da5e22020-03-05 16:25:28 +000035 virtual TimelineStatus CreateEntity(const Entity &) override;
36 virtual TimelineStatus CreateEventClass(const EventClass &) override;
37 virtual TimelineStatus CreateEvent(const Event &) override;
38 virtual TimelineStatus CreateLabel(const Label &) override;
39 virtual TimelineStatus CreateRelationship(const Relationship &) override;
Finn Williams510f6182020-02-21 11:14:08 +000040
41 const Model& GetModel();
42
Keith Davis97da5e22020-03-05 16:25:28 +000043 TimelineStatus SetEntityCallback(const OnNewEntityCallback);
44 TimelineStatus SetEventClassCallback(const OnNewEventClassCallback);
45 TimelineStatus SetEventCallback(const OnNewEventCallback);
46 TimelineStatus SetLabelCallback(const OnNewLabelCallback);
47 TimelineStatus SetRelationshipCallback(const OnNewRelationshipCallback);
Finn Williams510f6182020-02-21 11:14:08 +000048
Finn Williamse6a2ccd2020-02-27 16:21:41 +000049 void SetDefaultCallbacks();
50
Finn Williams510f6182020-02-21 11:14:08 +000051 void print();
52
53private:
54 Model m_Model;
55
56 OnNewEntityCallback m_OnNewEntityCallback;
57 OnNewEventClassCallback m_OnNewEventClassCallback;
58 OnNewEventCallback m_OnNewEventCallback;
59 OnNewLabelCallback m_OnNewLabelCallback;
60 OnNewRelationshipCallback m_OnNewRelationshipCallback;
61
62 void printLabels();
63 void printEntities();
64 void printEventClasses();
65 void printRelationships();
66 void printEvents();
67};
Finn Williams8a2b4682020-02-26 10:25:26 +000068
69}
Finn Williams510f6182020-02-21 11:14:08 +000070}