-void TRACE_paje_init(void)
-{
- active_writer.print_DefineContainerType=print_pajeDefineContainerType;
- active_writer.print_DefineVariableType=print_pajeDefineVariableType;
- active_writer.print_DefineStateType=print_pajeDefineStateType;
- active_writer.print_DefineEventType=print_pajeDefineEventType;
- active_writer.print_DefineLinkType=print_pajeDefineLinkType;
- active_writer.print_DefineEntityValue=print_pajeDefineEntityValue;
- active_writer.print_CreateContainer=print_pajeCreateContainer;
- active_writer.print_DestroyContainer=print_pajeDestroyContainer;
- active_writer.print_SetVariable=print_pajeSetVariable;
- active_writer.print_AddVariable=print_pajeAddVariable;
- active_writer.print_SubVariable=print_pajeSubVariable;
- active_writer.print_SetState=print_pajeSetState;
- active_writer.print_PushState=print_pajePushState;
- active_writer.print_PopState=print_pajePopState;
- active_writer.print_ResetState=print_pajeResetState;
- active_writer.print_StartLink=print_pajeStartLink;
- active_writer.print_EndLink=print_pajeEndLink;
- active_writer.print_NewEvent=print_pajeNewEvent;
+static std::stringstream stream;
+
+static void print_paje_debug(std::string functionName, paje_event_t event) {
+ XBT_DEBUG("%s: event_type=%d, timestamp=%.*f", __FUNCTION__, (int)event->event_type, TRACE_precision(),
+ event->timestamp);
+}
+
+template<typename T> static void init_stream(paje_event_t event) {
+ stream << std::fixed << std::setprecision(TRACE_precision());
+ stream << (int) event->event_type;
+}
+
+static void print_row() {
+ stream << std::endl;
+ fprintf(tracing_file, "%s", stream.str().c_str());
+ stream.str("");
+ stream.clear();
+}
+
+static void print_timestamp(paje_event_t event) {
+ stream << " ";
+ /* prevent 0.0000 in the trace - this was the behavior before the transition to c++ */
+ if (event->timestamp == 0)
+ stream << 0;
+ else
+ stream << event->timestamp;
+}
+
+
+template<typename T> static void print_default_pajeLink_row(paje_event_t& event) {
+ init_stream<T>(event);
+ print_timestamp(event);
+ stream << " " << static_cast<T>(event->data)->type->id
+ << " " << static_cast<T>(event->data)->container->id
+ << " " << static_cast<T>(event->data)->value;
+}
+
+template<typename T> static void print_default_pajeState_row(paje_event_t& event) {
+ init_stream<T>(event);
+ print_timestamp(event);
+ stream << " " << static_cast<T>(event->data)->type->id
+ << " " << static_cast<T>(event->data)->container->id;
+}
+
+template<typename T> static void print_default_pajeType_row(paje_event_t& event) {
+ init_stream<T>(event);
+ stream << " " << static_cast<T>(event->data)->type->id
+ << " " << static_cast<T>(event->data)->type->father->id
+ << " " << static_cast<T>(event->data)->type->name;
+}
+
+template<typename T> static void print_default_pajeVariable_row(paje_event_t& event) {
+ init_stream<T>(event);
+ print_timestamp(event);
+ stream << " " << static_cast<T>(event->data)->type->id
+ << " " << static_cast<T>(event->data)->container->id
+ << " " << static_cast<T>(event->data)->value;
+
+ print_row();
+}
+
+void TRACE_paje_init(void) {
+ active_writer.print_DefineContainerType = print_pajeDefineContainerType;
+ active_writer.print_DefineVariableType = print_pajeDefineVariableType;
+ active_writer.print_DefineStateType = print_pajeDefineStateType;
+ active_writer.print_DefineEventType = print_pajeDefineEventType;
+ active_writer.print_DefineLinkType = print_pajeDefineLinkType;
+ active_writer.print_DefineEntityValue = print_pajeDefineEntityValue;
+ active_writer.print_CreateContainer = print_pajeCreateContainer;
+ active_writer.print_DestroyContainer = print_pajeDestroyContainer;
+ active_writer.print_SetVariable = print_pajeSetVariable;
+ active_writer.print_AddVariable = print_pajeAddVariable;
+ active_writer.print_SubVariable = print_pajeSubVariable;
+ active_writer.print_SetState = print_pajeSetState;
+ active_writer.print_PushState = print_pajePushState;
+ active_writer.print_PopState = print_pajePopState;
+ active_writer.print_ResetState = print_pajeResetState;
+ active_writer.print_StartLink = print_pajeStartLink;
+ active_writer.print_EndLink = print_pajeEndLink;
+ active_writer.print_NewEvent = print_pajeNewEvent;