[libcamera-devel] [PATCH 1/6] utils: Satisfy LegacyInputIterator with StringSplitter::iterator
Umang Jain
umang.jain at ideasonboard.com
Wed Aug 24 08:29:16 CEST 2022
Hi Laurent,
Thank you for the patch,
On 8/23/22 11:13 PM, Laurent Pinchart via libcamera-devel wrote:
> The StringSplitter::iterator is used with the utils::split() function to
> iterate over components of a split string. Add the necessary member
> types expected by std::iterator_trait in order to satisfy the
> LegacyInputIterator requirement and make the iterator usable in
> constructors for various containers.
>
> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
Reviewed-by: Umang Jain <umang.jain at ideasonboard.com>
> ---
> include/libcamera/base/utils.h | 6 ++++++
> test/utils.cpp | 8 ++++++++
> 2 files changed, 14 insertions(+)
>
> diff --git a/include/libcamera/base/utils.h b/include/libcamera/base/utils.h
> index 889bb4a2270e..ed88b7163770 100644
> --- a/include/libcamera/base/utils.h
> +++ b/include/libcamera/base/utils.h
> @@ -170,6 +170,12 @@ public:
> class iterator
> {
> public:
> + using difference_type = std::size_t;
> + using value_type = std::string;
> + using pointer = value_type *;
> + using reference = value_type &;
> + using iterator_category = std::input_iterator_tag;
> +
> iterator(const StringSplitter *ss, std::string::size_type pos);
>
> iterator &operator++();
> diff --git a/test/utils.cpp b/test/utils.cpp
> index 129807a63ec6..58b5a59dd17d 100644
> --- a/test/utils.cpp
> +++ b/test/utils.cpp
> @@ -276,6 +276,14 @@ protected:
> return TestFail;
> }
>
> + const auto &split = utils::split(path, ":");
> + dirs = std::vector<std::string>{ split.begin(), split.end() };
> +
> + if (dirs != elements) {
> + cerr << "utils::split() LegacyInputIterator test failed" << endl;
> + return TestFail;
> + }
> +
> /* utils::join() with conversion function test. */
> std::vector<Size> sizes = { { 0, 0 }, { 100, 100 } };
> s = utils::join(sizes, "/", [](const Size &size) {
More information about the libcamera-devel
mailing list