blob: fc1460392745d5e6756a4fd10630e2b5a386805c [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
34 virtual ErrorCode CreateEntity(const Entity &) override;
35 virtual ErrorCode CreateEventClass(const EventClass &) override;
36 virtual ErrorCode CreateEvent(const Event &) override;
37 virtual ErrorCode CreateLabel(const Label &) override;
38 virtual ErrorCode CreateRelationship(const Relationship &) override;
39
40 const Model& GetModel();
41
42
43 ErrorCode SetEntityCallback(const OnNewEntityCallback);
44 ErrorCode SetEventClassCallback(const OnNewEventClassCallback);
45 ErrorCode SetEventCallback(const OnNewEventCallback);
46 ErrorCode SetLabelCallback(const OnNewLabelCallback);
47 ErrorCode SetRelationshipCallback(const OnNewRelationshipCallback);
48
49 void print();
50
51private:
52 Model m_Model;
53
54 OnNewEntityCallback m_OnNewEntityCallback;
55 OnNewEventClassCallback m_OnNewEventClassCallback;
56 OnNewEventCallback m_OnNewEventCallback;
57 OnNewLabelCallback m_OnNewLabelCallback;
58 OnNewRelationshipCallback m_OnNewRelationshipCallback;
59
60 void printLabels();
61 void printEntities();
62 void printEventClasses();
63 void printRelationships();
64 void printEvents();
65};
Finn Williams8a2b4682020-02-26 10:25:26 +000066
67}
Finn Williams510f6182020-02-21 11:14:08 +000068}