diff --git a/doomsday/libappfw/include/de/framework/data.h b/doomsday/libappfw/include/de/framework/data.h index bae21bc774..ded9cbfa51 100644 --- a/doomsday/libappfw/include/de/framework/data.h +++ b/doomsday/libappfw/include/de/framework/data.h @@ -20,6 +20,7 @@ #define LIBAPPFW_UI_DATA_H #include +#include #include "../GuiWidget" namespace de { @@ -128,6 +129,8 @@ class LIBAPPFW_PUBLIC Data */ virtual dsize size() const = 0; + LoopResult forAll(std::function func) const; + private: DENG2_PRIVATE(d) }; diff --git a/doomsday/libappfw/src/data.cpp b/doomsday/libappfw/src/data.cpp index 70f107a97d..5f2337951c 100644 --- a/doomsday/libappfw/src/data.cpp +++ b/doomsday/libappfw/src/data.cpp @@ -65,5 +65,15 @@ void Data::sort(SortMethod method) } } +LoopResult Data::forAll(std::function func) const +{ + for(DataPos pos = 0; pos < size(); ++pos) + { + if(auto result = func(at(pos))) + return result; + } + return LoopContinue; +} + } // namespace ui } // namespace de