+};
+
+/** @brief A trace is a set of timed values, encoding the value that a variable takes at what time *
+ *
+ * It is useful to model dynamic platforms, where an external load that makes the resource availability change over time.
+ * To model that, you have to set several traces per resource: one for the on/off state and one for each numerical value (computational speed, bandwidth and latency).
+ */
+XBT_PUBLIC_CLASS trace {
+public:
+ /** Creates an empty trace */
+ explicit trace();
+ virtual ~trace();
+//private:
+ std::vector<DatedValue> event_list;
+};
+
+/** @brief Future Event Set (collection of iterators over the traces)
+ * That's useful to quickly know which is the next occurring event in a set of traces. */
+XBT_PUBLIC_CLASS future_evt_set {
+public:
+ future_evt_set();
+ virtual ~future_evt_set();
+ double next_date() const;
+ tmgr_trace_event_t pop_leq(double date, double* value, simgrid::kernel::model::Resource** resource);
+ tmgr_trace_event_t add_trace(tmgr_trace_t trace, simgrid::kernel::model::Resource * resource);
+
+private:
+ typedef std::pair<double, tmgr_trace_event_t> Qelt;
+ std::priority_queue<Qelt, std::vector<Qelt>, std::greater<Qelt>> heap_;
+};