Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
e548f74437173d8a9a5077a65d688e9dcf061b73
[simgrid.git] / src / instr / jedule / jedule.cpp
1 /* Copyright (c) 2010-2019. 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 "xbt/asserts.h"
8 #include "simgrid/jedule/jedule.hpp"
9
10 #if SIMGRID_HAVE_JEDULE
11
12 namespace simgrid{
13 namespace jedule {
14
15 Jedule::~Jedule() {
16   delete this->root_container_;
17   for (auto const& evt : this->event_set_)
18     delete evt;
19   this->event_set_.clear();
20 }
21
22 void Jedule::add_meta_info(char* key, char* value)
23 {
24   xbt_assert(key != nullptr);
25   xbt_assert(value != nullptr);
26
27   this->meta_info_.insert({key, value});
28 }
29
30 void Jedule::write_output(FILE* file)
31 {
32   if (not this->event_set_.empty()) {
33     fprintf(file, "<jedule>\n");
34
35     if (not this->meta_info_.empty()) {
36       fprintf(file, "  <jedule_meta>\n");
37       for (auto const& elm : this->meta_info_)
38         fprintf(file, "        <prop key=\"%s\" value=\"%s\" />\n",elm.first,elm.second);
39       fprintf(file, "  </jedule_meta>\n");
40     }
41
42     fprintf(file, "  <platform>\n");
43     this->root_container_->print(file);
44     fprintf(file, "  </platform>\n");
45
46     fprintf(file, "  <events>\n");
47     for (auto const& event : this->event_set_)
48       event->print(file);
49     fprintf(file, "  </events>\n");
50
51     fprintf(file, "</jedule>\n");
52   }
53 }
54
55 }
56 }
57 #endif