1 /* Copyright (c) 2010-2017. The SimGrid Team. All rights reserved. */
3 /* This program is free software; you can redistribute it and/or modify it
4 * under the terms of the license (GNU LGPL) which comes with this package. */
6 #ifndef INSTR_PAJE_EVENTS_HPP
7 #define INSTR_PAJE_EVENTS_HPP
9 #include "src/instr/instr_private.hpp"
17 enum e_event_type : unsigned int {
18 PAJE_DefineContainerType,
19 PAJE_DefineVariableType,
23 PAJE_DefineEntityValue,
25 PAJE_DestroyContainer,
39 Container* container_;
43 Type* getType() { return type_; }
44 Container* getContainer() { return container_; }
47 e_event_type eventType_;
48 PajeEvent(Container* container, Type* type, double timestamp, e_event_type eventType)
49 : container_(container), type_(type), timestamp_(timestamp), eventType_(eventType){};
50 virtual ~PajeEvent() = default;
51 virtual void print() = 0;
52 void insertIntoBuffer();
55 class VariableEvent : public PajeEvent {
59 VariableEvent(double timestamp, Container* container, Type* type, e_event_type event_type, double value);
60 void print() override;
63 class StateEvent : public PajeEvent {
67 TIData* extra_ = nullptr;
70 StateEvent(Container* container, Type* type, e_event_type event_type, EntityValue* value);
71 StateEvent(Container* container, Type* type, e_event_type event_type, EntityValue* value, TIData* extra);
72 void print() override;
75 class LinkEvent : public PajeEvent {
82 LinkEvent(Container* container, Type* type, e_event_type event_type, Container* sourceContainer, std::string value,
84 LinkEvent(Container* container, Type* type, e_event_type event_type, Container* sourceContainer, std::string value,
85 std::string key, int size);
86 void print() override;
89 class NewEvent : public PajeEvent {
93 NewEvent(double timestamp, Container* container, Type* type, EntityValue* val);
94 void print() override;