blob: a4fbd0dbde3d83691097b9830a111519f726d6d6 [file] [log] [blame]
//
// 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 <stdint.h>
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