+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 std::stringstream init_stream(paje_event_t event) {
+ std::stringstream stream;
+ stream << std::fixed << std::setprecision(TRACE_precision());
+ stream << (int) event->event_type;
+
+ return stream;
+}
+
+static void print_row(std::stringstream& stream) {
+ stream << std::endl;
+ fprintf(tracing_file, "%s", stream.str().c_str());
+}
+
+static void print_timestamp(std::stringstream& stream, 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 std::stringstream print_default_pajeLink_row(paje_event_t& event) {
+ std::stringstream stream = init_stream<T>(event);
+ print_timestamp(stream, event);
+ stream << " " << static_cast<T>(event->data)->type->id
+ << " " << static_cast<T>(event->data)->container->id
+ << " " << static_cast<T>(event->data)->value;
+
+ return stream;
+}
+
+template<typename T> static std::stringstream print_default_pajeState_row(paje_event_t& event) {
+ std::stringstream stream = init_stream<T>(event);
+ print_timestamp(stream, event);
+ stream << " " << static_cast<T>(event->data)->type->id
+ << " " << static_cast<T>(event->data)->container->id;
+
+ return stream;
+}
+
+template<typename T> static std::stringstream print_default_pajeType_row(paje_event_t& event) {
+ std::stringstream stream = 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;
+
+ return stream;
+}
+
+template<typename T> static void print_default_pajeVariable_row(paje_event_t& event) {
+ std::stringstream stream = init_stream<T>(event);
+ print_timestamp(stream, event);
+ stream << " " << static_cast<T>(event->data)->type->id
+ << " " << static_cast<T>(event->data)->container->id
+ << " " << static_cast<T>(event->data)->value;
+
+ print_row(stream);
+}
+
+void TRACE_paje_init(void) {