X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fio%2Fpoll.h;h=0fb1ebc700a86126822464b3ec3c4bdcfd45e5a4;hb=f804a61c1c58529e7c98555a921b56bc05059d5e;hp=b65166d24bffb7cf8d7aea7e30f09f525c7b84d2;hpb=c3e242c2629cbc9645258b30aaf07b7285d4372b;p=libs%2Fcore.git diff --git a/source/io/poll.h b/source/io/poll.h index b65166d..0fb1ebc 100644 --- a/source/io/poll.h +++ b/source/io/poll.h @@ -1,7 +1,6 @@ #ifndef MSP_IO_POLL_H_ #define MSP_IO_POLL_H_ -#include #include #include #include @@ -35,38 +34,36 @@ inline PollEvent operator~(PollEvent e) class Poller: private NonCopyable { public: - struct Slot + struct PolledObject { EventObject *object; PollEvent events; - Slot(EventObject *o, PollEvent e): object(o), events(e) { } + PolledObject(EventObject *o, PollEvent e): object(o), events(e) { } }; - typedef std::list SlotList; private: - typedef std::map EventMap; - struct Private; - EventMap objects; + std::vector objects; Private *priv; + bool events_changed; bool objs_changed; - SlotList poll_result; + std::vector poll_result; public: Poller(); ~Poller(); void set_object(EventObject &, PollEvent); - int poll(); - int poll(const Time::TimeDelta &); + unsigned poll(); + unsigned poll(const Time::TimeDelta &); private: void rebuild_array(); - int do_poll(int); + unsigned do_poll(int); void platform_poll(int); public: - const SlotList &get_result() const { return poll_result; } + const std::vector &get_result() const { return poll_result; } }; PollEvent poll(EventObject &, PollEvent);