From 61b77aa31cb615bf2b3a791d89309587d70760c4 Mon Sep 17 00:00:00 2001 From: Martin Quinson Date: Tue, 15 Mar 2016 09:59:11 +0100 Subject: [PATCH] start objectifying the surf traces --- include/simgrid/forward.h | 5 ++++- src/surf/trace_mgr.cpp | 18 +++++++++++------- src/surf/trace_mgr.hpp | 8 +++++--- 3 files changed, 20 insertions(+), 11 deletions(-) diff --git a/include/simgrid/forward.h b/include/simgrid/forward.h index ddf58ff596..b1eab3a6e3 100644 --- a/include/simgrid/forward.h +++ b/include/simgrid/forward.h @@ -21,6 +21,7 @@ namespace simgrid { class Link; } namespace trace_mgr { + class trace; class future_evt_set; } } @@ -31,6 +32,7 @@ typedef simgrid::surf::Cpu surf_Cpu; typedef simgrid::surf::NetCard surf_NetCard; typedef simgrid::surf::Link Link; typedef simgrid::surf::Resource surf_Resource; +typedef simgrid::trace_mgr::trace tmgr_Trace; #else @@ -40,6 +42,7 @@ typedef struct surf_Cpu surf_Cpu; typedef struct surf_NetCard surf_NetCard; typedef struct surf_Resource surf_Resource; typedef struct Link Link; +typedef struct Trace tmgr_Trace; #endif typedef simgrid_Host* sg_host_t; @@ -52,7 +55,7 @@ typedef surf_Resource *sg_resource_t; // Types which are in fact dictelmt: typedef struct s_xbt_dictelm *sg_storage_t; -typedef struct tmgr_trace *tmgr_trace_t; /**< Opaque structure defining an availability trace */ +typedef tmgr_Trace *tmgr_trace_t; /**< Opaque structure defining an availability trace */ typedef enum { SURF_LINK_FULLDUPLEX = 2, diff --git a/src/surf/trace_mgr.cpp b/src/surf/trace_mgr.cpp index 32558c2bfc..0b9cd01d73 100644 --- a/src/surf/trace_mgr.cpp +++ b/src/surf/trace_mgr.cpp @@ -17,6 +17,14 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_trace, surf, "Surf trace management"); static xbt_dict_t trace_list = NULL; +simgrid::trace_mgr::trace::trace() +{ +} + +simgrid::trace_mgr::trace::~trace() +{ + xbt_dynar_free(&event_list); +} simgrid::trace_mgr::future_evt_set::future_evt_set() { } @@ -47,7 +55,7 @@ tmgr_trace_t tmgr_trace_new_from_string(const char *id, const char *input, doubl xbt_assert(periodicity >= 0, "Invalid periodicity %g (must be positive)", periodicity); - trace = xbt_new0(s_tmgr_trace_t, 1); + trace = new simgrid::trace_mgr::trace(); trace->event_list = xbt_dynar_new(sizeof(s_tmgr_event_t), NULL); list = xbt_str_split(input, "\n\r"); @@ -126,7 +134,7 @@ tmgr_trace_t tmgr_empty_trace_new(void) tmgr_trace_t trace = NULL; s_tmgr_event_t event; - trace = xbt_new0(s_tmgr_trace_t, 1); + trace = new simgrid::trace_mgr::trace(); trace->event_list = xbt_dynar_new(sizeof(s_tmgr_event_t), NULL); event.delta = 0.0; @@ -138,11 +146,7 @@ tmgr_trace_t tmgr_empty_trace_new(void) void tmgr_trace_free(tmgr_trace_t trace) { - if (!trace) - return; - - xbt_dynar_free(&(trace->event_list)); - free(trace); + delete trace; } /** @brief Registers a new trace into the future event set, and get an iterator over the integrated trace */ diff --git a/src/surf/trace_mgr.hpp b/src/surf/trace_mgr.hpp index 8fb7dd8b69..7784e7f807 100644 --- a/src/surf/trace_mgr.hpp +++ b/src/surf/trace_mgr.hpp @@ -19,7 +19,7 @@ typedef struct tmgr_event { } s_tmgr_event_t, *tmgr_event_t; typedef struct tmgr_trace { - xbt_dynar_t event_list; + } s_tmgr_trace_t; /* Iterator within a trace */ @@ -74,8 +74,10 @@ XBT_PUBLIC_CLASS trace_iterator { XBT_PUBLIC_CLASS trace { public: /** Creates an empty trace */ - trace() {} - virtual ~trace() {} + trace(); + virtual ~trace(); +//private: + xbt_dynar_t event_list; }; /** @brief Future Event Set (collection of iterators over the traces) -- 2.20.1