Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Use s4u API in example.
[simgrid.git] / src / instr / instr_interface.cpp
index a65032c..a0899f6 100644 (file)
@@ -1,23 +1,18 @@
-/* Copyright (c) 2010-2015. The SimGrid Team.
+/* Copyright (c) 2010-2017. The SimGrid Team.
  * All rights reserved.                                                     */
 
 /* This program is free software; you can redistribute it and/or modify it
  * under the terms of the license (GNU LGPL) which comes with this package. */
 
 #include "simgrid_config.h"
-#include "src/instr/instr_private.h"
+#include "src/instr/instr_private.hpp"
 #include "src/kernel/routing/NetPoint.hpp"
 #include "src/surf/network_interface.hpp"
-#include "src/surf/surf_private.h"
+#include "src/surf/surf_private.hpp"
 #include "surf/surf.h"
 #include <algorithm>
 
-typedef enum {
-  INSTR_US_DECLARE,
-  INSTR_US_SET,
-  INSTR_US_ADD,
-  INSTR_US_SUB
-} InstrUserVariable;
+enum InstrUserVariable { INSTR_US_DECLARE, INSTR_US_SET, INSTR_US_ADD, INSTR_US_SUB };
 
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY (instr_api, instr, "API");
 
@@ -153,7 +148,7 @@ void TRACE_declare_mark(const char *mark_type)
   }
 
   XBT_DEBUG("MARK,declare %s", mark_type);
-  PJ_type_event_new(mark_type, PJ_type_get_root());
+  simgrid::instr::Type::getRootType()->getOrCreateEventType(mark_type);
   declared_marks.insert(mark_type);
 }
 
@@ -183,17 +178,16 @@ void TRACE_declare_mark_value_with_color (const char *mark_type, const char *mar
   if (not mark_value)
     THROWF (tracing_error, 1, "mark_value is nullptr");
 
-  type_t type = PJ_type_get (mark_type, PJ_type_get_root());
+  simgrid::instr::Type* type = simgrid::instr::Type::getRootType()->byName(mark_type);
   if (not type) {
     THROWF (tracing_error, 1, "mark_type with name (%s) is not declared", mark_type);
   }
 
-  char white[INSTR_DEFAULT_STR_SIZE] = "1.0 1.0 1.0";
   if (not mark_color)
-    mark_color = white;
+    mark_color = "1.0 1.0 1.0" /*white*/;
 
   XBT_DEBUG("MARK,declare_value %s %s %s", mark_type, mark_value, mark_color);
-  value rett(mark_value, mark_color, type);
+  simgrid::instr::Value::byNameOrCreate(mark_value, mark_color, type);
 }
 
 /** \ingroup TRACE_mark
@@ -239,13 +233,14 @@ void TRACE_mark(const char *mark_type, const char *mark_value)
     THROWF (tracing_error, 1, "mark_value is nullptr");
 
   //check if mark_type is already declared
-  type_t type = PJ_type_get (mark_type, PJ_type_get_root());
+  simgrid::instr::Type* type = simgrid::instr::Type::getRootType()->byName(mark_type);
   if (not type) {
     THROWF (tracing_error, 1, "mark_type with name (%s) is not declared", mark_type);
   }
 
   XBT_DEBUG("MARK %s %s", mark_type, mark_value);
-  new NewEvent(MSG_get_clock(), PJ_container_get_root(), type, value::get(mark_value, type));
+  new simgrid::instr::NewEvent(MSG_get_clock(), PJ_container_get_root(), type,
+                               simgrid::instr::Value::byName(mark_value, type));
 }
 
 /** \ingroup TRACE_mark
@@ -281,17 +276,17 @@ static void instr_user_variable(double time, const char* resource, const char* v
     if (created != filter->end()) { // declared, let's work
       char valuestr[100];
       snprintf(valuestr, 100, "%g", value);
-      container_t container = PJ_container_get(resource);
-      type_t type = PJ_type_get (variable, container->type);
+      container_t container      = simgrid::instr::Container::byName(resource);
+      simgrid::instr::Type* type = container->type_->byName(variable);
       switch (what){
       case INSTR_US_SET:
-        new SetVariableEvent(time, container, type, value);
+        new simgrid::instr::SetVariableEvent(time, container, type, value);
         break;
       case INSTR_US_ADD:
-        new AddVariableEvent(time, container, type, value);
+        new simgrid::instr::AddVariableEvent(time, container, type, value);
         break;
       case INSTR_US_SUB:
-        new SubVariableEvent(time, container, type, value);
+        new simgrid::instr::SubVariableEvent(time, container, type, value);
         break;
       default:
         THROW_IMPOSSIBLE;
@@ -315,7 +310,7 @@ static void instr_user_srcdst_variable(double time, const char *src, const char
   std::vector<simgrid::surf::LinkImpl*> route;
   simgrid::kernel::routing::NetZoneImpl::getGlobalRoute(src_elm, dst_elm, &route, nullptr);
   for (auto const& link : route)
-    instr_user_variable(time, link->cname(), variable, father_type, value, what, nullptr, &user_link_variables);
+    instr_user_variable(time, link->getCname(), variable, father_type, value, what, nullptr, &user_link_variables);
 }
 
 /** \ingroup TRACE_API
@@ -944,11 +939,11 @@ void TRACE_host_state_declare_value (const char *state, const char *value, const
  */
 void TRACE_host_set_state(const char* host, const char* state, const char* value_str)
 {
-  container_t container = PJ_container_get(host);
-  type_t type = PJ_type_get (state, container->type);
-  value* val =
-      value::get_or_new(value_str, nullptr, type); /* if user didn't declare a value with a color, use nullptr color */
-  new SetStateEvent(MSG_get_clock(), container, type, val);
+  container_t container      = simgrid::instr::Container::byName(host);
+  simgrid::instr::Type* type = container->type_->byName(state);
+  simgrid::instr::Value* val = simgrid::instr::Value::byNameOrCreate(
+      value_str, "", type); /* if user didn't declare a value with a color, use no color */
+  new simgrid::instr::SetStateEvent(MSG_get_clock(), container, type, val);
 }
 
 /** \ingroup TRACE_user_variables
@@ -964,11 +959,11 @@ void TRACE_host_set_state(const char* host, const char* state, const char* value
  */
 void TRACE_host_push_state(const char* host, const char* state, const char* value_str)
 {
-  container_t container = PJ_container_get(host);
-  type_t type = PJ_type_get (state, container->type);
-  value* val =
-      value::get_or_new(value_str, nullptr, type); /* if user didn't declare a value with a color, use nullptr color */
-  new PushStateEvent(MSG_get_clock(), container, type, val);
+  container_t container      = simgrid::instr::Container::byName(host);
+  simgrid::instr::Type* type = container->type_->byName(state);
+  simgrid::instr::Value* val = simgrid::instr::Value::byNameOrCreate(
+      value_str, "", type); /* if user didn't declare a value with a color, use no color */
+  new simgrid::instr::PushStateEvent(MSG_get_clock(), container, type, val);
 }
 
 /** \ingroup TRACE_user_variables
@@ -983,9 +978,9 @@ void TRACE_host_push_state(const char* host, const char* state, const char* valu
  */
 void TRACE_host_pop_state (const char *host, const char *state)
 {
-  container_t container = PJ_container_get(host);
-  type_t type = PJ_type_get (state, container->type);
-  new PopStateEvent(MSG_get_clock(), container, type);
+  container_t container      = simgrid::instr::Container::byName(host);
+  simgrid::instr::Type* type = container->type_->byName(state);
+  new simgrid::instr::PopStateEvent(MSG_get_clock(), container, type);
 }
 
 /** \ingroup TRACE_API