# core/simulator.h ## Free functions ### `std::numeric_limits::max();` ### `std::numeric_limits::max();` ## class Rng — public interface ### `Simulator() = default;` ### `static std::pair create_simulator(InstanceId id);` ### `static Simulator *get_simulator(InstanceId id) noexcept;` ### `Time now() const noexcept;` ### `EventId schedule_at(Time abs_time, F&& f, Args&&... args) { ... }` ### `_event_pq.push(std::move(it));` ### `EventId schedule_after(Time delay, F&& f, Args&&... args) { ... }` ### `bool cancel(EventId id);` ### `bool run_next();` ### `void run_until(Time end_time);` ### `void lock() noexcept;` ### `bool is_locked() const noexcept { ... }` ### `void flush_after(Time grace) noexcept;` ### `Rng* create_rng(std::uint64_t seed);` ### `Rng* get_rng() noexcept;` ### `Rng const* get_rng() const noexcept;` ### `Link* get_link(LinkId id) noexcept;` ### `Link const* get_link(LinkId id) const noexcept;`