// // Copyright © 2019 Arm Ltd. All rights reserved. // SPDX-License-Identifier: MIT // #ifndef ARMNN_ITIMELINEMODEL_H #define ARMNN_ITIMELINEMODEL_H #ifdef __cplusplus extern "C" { #endif #include struct Model; typedef enum 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). } RelationshipType; typedef struct Entity { uint64_t m_Guid; } Entity; typedef struct EventClass { uint64_t m_Guid; } EventClass; typedef struct Event { uint64_t m_Guid; uint64_t m_TimeStamp; unsigned char* m_ThreadId; } ProfilingEvent; typedef struct Label { uint64_t m_Guid; char* m_Name; } Label; typedef struct Relationship { RelationshipType m_RelationshipType; uint64_t m_Guid; uint64_t m_HeadGuid; uint64_t m_TailGuid; } Relationship; typedef void (*OnNewEntityCallback)(const Entity, struct Model* model); typedef void (*OnNewEventClassCallback)(const EventClass, struct Model* model); typedef void (*OnNewEventCallback)(const Event, struct Model* model); typedef void (*OnNewLabelCallback)(const Label, struct Model* model); typedef void (*OnNewRelationshipCallback)(const Relationship, struct Model* model) ; typedef struct Model { OnNewEntityCallback m_EntityCb; OnNewEventClassCallback m_EventClassCb; OnNewEventCallback m_EventCb; OnNewLabelCallback m_LabelCb; OnNewRelationshipCallback m_RelationshipCb; Entity** m_Entities; EventClass** m_EventClasses; Event** m_Events; Label** m_Labels; Relationship** m_Relationships; uint32_t m_EntityCount; uint32_t m_EntityCapacity; uint32_t m_EventClassCount; uint32_t m_EventClassCapacity; uint32_t m_EventCount; uint32_t m_EventCapacity; uint32_t m_LabelCount; uint32_t m_LabelCapacity; uint32_t m_RelationshipCount; uint32_t m_RelationshipCapacity; } Model; #ifdef __cplusplus } #endif #endif //ARMNN_ITIMELINEMODEL_H