Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
further objectification of jedule bindings
[simgrid.git] / src / instr / jedule / jedule.cpp
1 /* Copyright (c) 2010-2014. The SimGrid Team.
2  * All rights reserved.                                                     */
3
4 /* This program is free software; you can redistribute it and/or modify it
5  * under the terms of the license (GNU LGPL) which comes with this package. */
6
7 #include "simgrid/host.h"
8
9 #include <stdio.h>
10 #include <stdlib.h>
11 #include <string.h>
12
13 #include "xbt/asserts.h"
14 #include "simgrid/jedule/jedule.hpp"
15
16 #if HAVE_JEDULE
17
18 namespace simgrid{
19 namespace jedule {
20
21 Jedule::~Jedule() {
22   delete this->root_container;
23   for (auto evt: this->event_set)
24     delete evt;
25   this->event_set.clear();
26 }
27
28 void Jedule::addMetaInfo(char *key, char *value) {
29   xbt_assert(key != nullptr);
30   xbt_assert(value != nullptr);
31
32   this->meta_info.insert({key, value});
33 }
34
35 void Jedule::cleanupOutput() {
36   for (auto evt: this->event_set)
37     delete evt;
38   this->event_set.clear();
39 }
40 void Jedule::writeOutput(FILE *file) {
41   if (!this->event_set.empty()){
42
43     fprintf(file, "<jedule>\n");
44
45     if (!this->meta_info.empty()){
46       fprintf(file, "  <jedule_meta>\n");
47       for (auto elm: this->meta_info)
48         fprintf(file, "        <prop key=\"%s\" value=\"%s\" />\n",elm.first,elm.second);
49       fprintf(file, "  </jedule_meta>\n");
50     }
51
52     fprintf(file, "  <platform>\n");
53     this->root_container->print(file);
54     fprintf(file, "  </platform>\n");
55
56     fprintf(file, "  <events>\n");
57     for (auto event :this->event_set)
58         event->print(file);
59     fprintf(file, "  </events>\n");
60
61     fprintf(file, "</jedule>\n");
62   }
63 }
64
65 }
66 }
67 #endif