33a34
> #include <list>
39a41,44
> class ScEvent;
>
> typedef std::list<ScEvent *> ScEvents;
>
45c50,51
< bool _scheduled;
---
> ScEvents *_events;
> ScEvents::iterator _it;
50c56
< schedule(Tick w)
---
> schedule(ScEvents &events, Tick w)
53c59,63
< _scheduled = true;
---
> assert(!scheduled());
> _events = &events;
> _events->push_back(this);
> _it = _events->end();
> _it--;
56c66,72
< void deschedule() { _scheduled = false; }
---
> void
> deschedule()
> {
> assert(scheduled());
> _events->erase(_it);
> _events = nullptr;
> }
59c75
< work(work), _when(MaxTick), _scheduled(false)
---
> work(work), _when(MaxTick), _events(nullptr)
64c80,81
< bool scheduled() { return _scheduled; }
---
> bool scheduled() { return _events != nullptr; }
> ScEvents *scheduledOn() { return _events; }