]> git.tdb.fi Git - libs/core.git/blobdiff - source/io/poll.cpp
Use C++11 features with containers
[libs/core.git] / source / io / poll.cpp
index a5d2d023c81d3f1ae730fc69d8d903b5546926db..4ca2f3d9767ea3315d172ba25dd51831afb7f660 100644 (file)
@@ -1,4 +1,5 @@
 #include <stdexcept>
+#include <msp/core/algorithm.h>
 #include "eventobject.h"
 #include "poll.h"
 #include "poll_platform.h"
@@ -25,20 +26,20 @@ void Poller::set_object(EventObject &obj, PollEvent ev)
        if(ev)
                obj.get_event_handle();
 
-       for(vector<PolledObject>::iterator i=objects.begin(); i!=objects.end(); ++i)
-               if(i->object==&obj)
+       auto i = find_member(objects, &obj, &PolledObject::object);
+       if(i!=objects.end())
+       {
+               if(ev)
+                       i->events = ev;
+               else
                {
-                       if(ev)
-                               i->events = ev;
-                       else
-                       {
-                               *i = objects.back();
-                               objects.pop_back();
-                               objs_changed = true;
-                       }
-                       events_changed = true;
-                       return;
+                       *i = objects.back();
+                       objects.pop_back();
+                       objs_changed = true;
                }
+               events_changed = true;
+               return;
+       }
 
        if(!ev)
                return;