-/** Convert a string representation of the path into a array of `simgrid::mc::Transition`
- */
-XBT_PRIVATE RecordTrace parseRecordTrace(const char* data);
-XBT_PRIVATE std::string traceToString(simgrid::mc::RecordTrace const& trace);
-XBT_PRIVATE void dumpRecordPath();
+public:
+ // Use rule-of-three, and implicitely disable the move constructor which cannot be 'noexcept' (as required by C++ Core
+ // Guidelines), due to the std::deque member.
+ RecordTrace() = default;
+ RecordTrace(const RecordTrace&) = default;
+ ~RecordTrace() = default;
+
+ /** Build a trace that can be replayed from a string representation */
+ explicit RecordTrace(const char* data);
+ /** Make a string representation that can later be used to create a new trace */
+ std::string to_string() const;
+
+ void push_front(Transition* t) { transitions_.push_front(t); }
+ void push_back(Transition* t) { transitions_.push_back(t); }
+ std::deque<Transition*>::const_iterator begin() const { return transitions_.begin(); }
+ std::deque<Transition*>::const_iterator end() const { return transitions_.end(); }
+
+ /** Replay all transitions of a trace */
+ void replay() const;