[{"id":24753,"web_url":"https://patchwork.libcamera.org/comment/24753/","msgid":"<8ab94c98-ef7d-d310-45e7-9409facb1ea4@ideasonboard.com>","date":"2022-08-24T06:29:16","subject":"Re: [libcamera-devel] [PATCH 1/6] utils: Satisfy\n\tLegacyInputIterator with StringSplitter::iterator","submitter":{"id":86,"url":"https://patchwork.libcamera.org/api/people/86/","name":"Umang Jain","email":"umang.jain@ideasonboard.com"},"content":"Hi Laurent,\nThank you for the patch,\n\nOn 8/23/22 11:13 PM, Laurent Pinchart via libcamera-devel wrote:\n> The StringSplitter::iterator is used with the utils::split() function to\n> iterate over components of a split string. Add the necessary member\n> types expected by std::iterator_trait in order to satisfy the\n> LegacyInputIterator requirement and make the iterator usable in\n> constructors for various containers.\n>\n> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\nReviewed-by: Umang Jain <umang.jain@ideasonboard.com>\n\n> ---\n>   include/libcamera/base/utils.h | 6 ++++++\n>   test/utils.cpp                 | 8 ++++++++\n>   2 files changed, 14 insertions(+)\n>\n> diff --git a/include/libcamera/base/utils.h b/include/libcamera/base/utils.h\n> index 889bb4a2270e..ed88b7163770 100644\n> --- a/include/libcamera/base/utils.h\n> +++ b/include/libcamera/base/utils.h\n> @@ -170,6 +170,12 @@ public:\n>   \tclass iterator\n>   \t{\n>   \tpublic:\n> +\t\tusing difference_type = std::size_t;\n> +\t\tusing value_type = std::string;\n> +\t\tusing pointer = value_type *;\n> +\t\tusing reference = value_type &;\n> +\t\tusing iterator_category = std::input_iterator_tag;\n> +\n>   \t\titerator(const StringSplitter *ss, std::string::size_type pos);\n>   \n>   \t\titerator &operator++();\n> diff --git a/test/utils.cpp b/test/utils.cpp\n> index 129807a63ec6..58b5a59dd17d 100644\n> --- a/test/utils.cpp\n> +++ b/test/utils.cpp\n> @@ -276,6 +276,14 @@ protected:\n>   \t\t\treturn TestFail;\n>   \t\t}\n>   \n> +\t\tconst auto &split = utils::split(path, \":\");\n> +\t\tdirs = std::vector<std::string>{ split.begin(), split.end() };\n> +\n> +\t\tif (dirs != elements) {\n> +\t\t\tcerr << \"utils::split() LegacyInputIterator test failed\" << endl;\n> +\t\t\treturn TestFail;\n> +\t\t}\n> +\n>   \t\t/* utils::join() with conversion function test. */\n>   \t\tstd::vector<Size> sizes = { { 0, 0 }, { 100, 100 } };\n>   \t\ts = utils::join(sizes, \"/\", [](const Size &size) {","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 7D4B6C3272\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 24 Aug 2022 06:29:24 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id B9FD061FBD;\n\tWed, 24 Aug 2022 08:29:23 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id A215561FA0\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 24 Aug 2022 08:29:22 +0200 (CEST)","from [IPV6:2401:4900:1f3f:806e:6647:8e5c:f441:ca9a] (unknown\n\t[IPv6:2401:4900:1f3f:806e:6647:8e5c:f441:ca9a])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 9D6292B3;\n\tWed, 24 Aug 2022 08:29:21 +0200 (CEST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1661322563;\n\tbh=t5O8cng0vt8n+o2nHjdQmQCJAIre8bHldobVJEFGhWk=;\n\th=Date:To:References:In-Reply-To:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:\n\tFrom;\n\tb=G/yTFCt7wQH8HDs50JsH6t5XdsQSjpRDf1iyYfEWEtEIkXGuaBOaK/yJ14qCCgYpy\n\tOQmjerA+JJdFNRIbZrwNP2z4/gFhNYDi1KhxgRIuZhSNW03gp5v0eO4YQL5U1D3scg\n\tWkKdJqZeDOHg0z9z5jEnCl29kC725RjmBqPbeX+k+oYieA5CPoXzLlj55tGQKW/Ssz\n\t/3nqG547EBdazB40nMwSRq1clytivl685I58GwkFQ9qQylKS7gQNF7hu9ICJcd3/XF\n\tCvkkeE7PacvsTbHMRShn19jWFNsJ144TTIosI3M7xWY2L2l4Mpd9y1zAUQDGre1+4O\n\twdgEMlzAYHiJw==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1661322562;\n\tbh=t5O8cng0vt8n+o2nHjdQmQCJAIre8bHldobVJEFGhWk=;\n\th=Date:Subject:To:References:From:In-Reply-To:From;\n\tb=JYI7IkRIW9nSmQOsDmN8/iXhIpvlreSBK/IfEReHbzQxo0/ixWjm3VOHYxok9YNle\n\tNup5FN+RX41APex2kEBXZefHtaIdls8k/dTl8BrOj1RQF1t4zNTpPMTOd4HMCn80Tx\n\tHyb8PdexNSklp2LlkpldmdOjgQAuq/6uuhbw1UAE="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"JYI7IkRI\"; dkim-atps=neutral","Message-ID":"<8ab94c98-ef7d-d310-45e7-9409facb1ea4@ideasonboard.com>","Date":"Wed, 24 Aug 2022 11:59:16 +0530","MIME-Version":"1.0","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101\n\tThunderbird/91.12.0","Content-Language":"en-US","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","References":"<20220823174314.14881-1-laurent.pinchart@ideasonboard.com>\n\t<20220823174314.14881-2-laurent.pinchart@ideasonboard.com>","In-Reply-To":"<20220823174314.14881-2-laurent.pinchart@ideasonboard.com>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"7bit","Subject":"Re: [libcamera-devel] [PATCH 1/6] utils: Satisfy\n\tLegacyInputIterator with StringSplitter::iterator","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","From":"Umang Jain via libcamera-devel <libcamera-devel@lists.libcamera.org>","Reply-To":"Umang Jain <umang.jain@ideasonboard.com>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":24775,"web_url":"https://patchwork.libcamera.org/comment/24775/","msgid":"<20220825173813.GM109174@pyrite.rasen.tech>","date":"2022-08-25T17:38:13","subject":"Re: [libcamera-devel] [PATCH 1/6] utils: Satisfy\n\tLegacyInputIterator with StringSplitter::iterator","submitter":{"id":97,"url":"https://patchwork.libcamera.org/api/people/97/","name":"Nicolas Dufresne via libcamera-devel","email":"libcamera-devel@lists.libcamera.org"},"content":"On Tue, Aug 23, 2022 at 08:43:09PM +0300, Laurent Pinchart via libcamera-devel wrote:\n> The StringSplitter::iterator is used with the utils::split() function to\n> iterate over components of a split string. Add the necessary member\n> types expected by std::iterator_trait in order to satisfy the\n> LegacyInputIterator requirement and make the iterator usable in\n> constructors for various containers.\n> \n> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\nReviewed-by: Paul Elder <paul.elder@ideasonboard.com>\n\n> ---\n>  include/libcamera/base/utils.h | 6 ++++++\n>  test/utils.cpp                 | 8 ++++++++\n>  2 files changed, 14 insertions(+)\n> \n> diff --git a/include/libcamera/base/utils.h b/include/libcamera/base/utils.h\n> index 889bb4a2270e..ed88b7163770 100644\n> --- a/include/libcamera/base/utils.h\n> +++ b/include/libcamera/base/utils.h\n> @@ -170,6 +170,12 @@ public:\n>  \tclass iterator\n>  \t{\n>  \tpublic:\n> +\t\tusing difference_type = std::size_t;\n> +\t\tusing value_type = std::string;\n> +\t\tusing pointer = value_type *;\n> +\t\tusing reference = value_type &;\n> +\t\tusing iterator_category = std::input_iterator_tag;\n> +\n>  \t\titerator(const StringSplitter *ss, std::string::size_type pos);\n>  \n>  \t\titerator &operator++();\n> diff --git a/test/utils.cpp b/test/utils.cpp\n> index 129807a63ec6..58b5a59dd17d 100644\n> --- a/test/utils.cpp\n> +++ b/test/utils.cpp\n> @@ -276,6 +276,14 @@ protected:\n>  \t\t\treturn TestFail;\n>  \t\t}\n>  \n> +\t\tconst auto &split = utils::split(path, \":\");\n> +\t\tdirs = std::vector<std::string>{ split.begin(), split.end() };\n> +\n> +\t\tif (dirs != elements) {\n> +\t\t\tcerr << \"utils::split() LegacyInputIterator test failed\" << endl;\n> +\t\t\treturn TestFail;\n> +\t\t}\n> +\n>  \t\t/* utils::join() with conversion function test. */\n>  \t\tstd::vector<Size> sizes = { { 0, 0 }, { 100, 100 } };\n>  \t\ts = utils::join(sizes, \"/\", [](const Size &size) {","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 13CADC0DA4\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 25 Aug 2022 17:38:22 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 84D4161FBF;\n\tThu, 25 Aug 2022 19:38:21 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id E526361FA0\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 25 Aug 2022 19:38:19 +0200 (CEST)","from pyrite.rasen.tech (unknown\n\t[IPv6:2604:2d80:ad8a:9000:1bf9:855b:22de:3645])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id A03F42B3;\n\tThu, 25 Aug 2022 19:38:18 +0200 (CEST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1661449101;\n\tbh=7t7DphaOaUDMp2vn/fyHsbPozFhP4+GeC4MK8pdS9GU=;\n\th=Date:To:References:In-Reply-To:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=LciDMUrGc/yYhDVlKTr6uPJVQn8XDOxYg+YWn4IZAsDjsk3IoQu7RaY0crbGTyMEW\n\tfvTtnrLbFgDnEcini4nAYSl4rxmND/QR0M4i5lUJ+K0lzTg7LDefgiWShoqr6O/YuQ\n\trTSIW/UjlxgJZ/tgmiYwhwuuCpLUkF9XPVzswoMJB+HbOsWhGbvm+2v2UmwkX6k3B4\n\tjHTUs1RkzpXB1qsHoNDC6E8t9OfX6r8E8J3khWbyJ59akt7v6RQvXraWDrVqY/Omku\n\tU+amkS7mO38pvUP/2V/bzVM45DWTUJLGBfQ/uGLv+vQFzTT7VBoGNpDyPOosRm/b14\n\t+d0k47ZjceKQg==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1661449099;\n\tbh=7t7DphaOaUDMp2vn/fyHsbPozFhP4+GeC4MK8pdS9GU=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=KjWKFsZIikJkkMnTvmR4R5zU92sRURhqPHm6jDwfQGrBmrYHSLQSQ77AgNeASQxkU\n\tU4vBnfYxfnVI+pHwwyBCgejGOkuVqstSbVjCdshivxZrrtYB4l4n9wosfTaxUkxpD5\n\tThEY9YjUKFiF5RJFs4iae1Ukp0nzw0tBOHIq/rR4="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"KjWKFsZI\"; dkim-atps=neutral","Date":"Thu, 25 Aug 2022 12:38:13 -0500","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Message-ID":"<20220825173813.GM109174@pyrite.rasen.tech>","References":"<20220823174314.14881-1-laurent.pinchart@ideasonboard.com>\n\t<20220823174314.14881-2-laurent.pinchart@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=us-ascii","Content-Disposition":"inline","In-Reply-To":"<20220823174314.14881-2-laurent.pinchart@ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH 1/6] utils: Satisfy\n\tLegacyInputIterator with StringSplitter::iterator","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","From":"Paul Elder via libcamera-devel <libcamera-devel@lists.libcamera.org>","Reply-To":"paul.elder@ideasonboard.com","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]