+
+static void __TRACE_B_alloc(void)
+{
+ method_b_dict = xbt_dict_new();
+}
+
+static void __TRACE_B_release(void)
+{
+ xbt_dict_cursor_t cursor = NULL;
+ unsigned int cursor_ar = 0;
+ char *key, *value, *res;
+ char *resource;
+ char *aux = NULL;
+ char *var_cpy = NULL;
+ xbt_dynar_t resources = NULL;
+ if (!IS_TRACING_PLATFORM)
+ return;
+ if (!xbt_dict_length(method_b_dict)) {
+ return;
+ } else {
+ /* get all resources from method_b_dict */
+ resources = xbt_dynar_new(sizeof(char *), xbt_free);
+ xbt_dict_foreach(method_b_dict, cursor, key, value) {
+ res = strsplit(key, 0, VARIABLE_SEPARATOR);
+ aux = strsplit(key, 1, VARIABLE_SEPARATOR);
+ if (strcmp(aux, "Time") == 0) { //only need to add one of three
+ var_cpy = xbt_strdup(res);
+ xbt_dynar_push(resources, &var_cpy);
+ }
+ free(aux);
+ free(res);
+ }
+
+ /* iterate through resources array */
+ xbt_dynar_foreach(resources, cursor_ar, resource) {
+ char timekey[100], valuekey[100], variablekey[100];
+ char *time = NULL;
+ char *value = NULL;
+ char *variable = NULL;
+ snprintf(timekey, 100, "%s%cTime", resource, VARIABLE_SEPARATOR);
+ snprintf(valuekey, 100, "%s%cValue", resource, VARIABLE_SEPARATOR);
+ snprintf(variablekey, 100, "%s%cVariable", resource,
+ VARIABLE_SEPARATOR);
+
+ time = xbt_dict_get_or_null(method_b_dict, timekey);
+ if (!time)
+ continue;
+ value = xbt_dict_get(method_b_dict, valuekey);
+ variable = xbt_dict_get(method_b_dict, variablekey);
+ pajeSubVariable(atof(time), variable, resource, value);
+
+ xbt_dict_remove(method_b_dict, timekey);
+ xbt_dict_remove(method_b_dict, valuekey);
+ xbt_dict_remove(method_b_dict, variablekey);
+ }
+ }
+ xbt_dict_free(&method_b_dict);
+}
+
+static void __TRACE_B_start(smx_action_t action)