-/* Copyright (c) 2021. The SimGrid Team.
- * All rights reserved. */
+/* Copyright (c) 2021-2023. The SimGrid Team. All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
inline auto& kernel_timers() // avoid static initialization order fiasco
{
- using TimerQelt = std::pair<double, std::shared_ptr<Timer>>;
+ using TimerQelt = std::pair<double, Timer*>;
static boost::heap::fibonacci_heap<TimerQelt, boost::heap::compare<xbt::HeapComparator<TimerQelt>>> value;
return value;
}
public:
double get_date() const { return date_; }
-
Timer(double date, xbt::Task<void()>&& callback) : date_(date), callback(std::move(callback)) {}
void remove();
- template <class F> static inline std::shared_ptr<Timer> set(double date, F callback)
+ template <class F> static inline Timer* set(double date, F callback)
{
return set(date, xbt::Task<void()>(std::move(callback)));
}
- static std::shared_ptr<Timer> set(double date, xbt::Task<void()>&& callback);
+ static Timer* set(double date, xbt::Task<void()>&& callback);
static double next() { return kernel_timers().empty() ? -1.0 : kernel_timers().top().first; }
/** Handle any pending timer. Returns if something was actually run. */