From 388918afc582f562afd9942bd19e70b7e7f2bb8e Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Sun, 5 Sep 2021 02:14:40 +0100 Subject: Add contains to flatmap --- icespider/core/flatMap.h | 12 ++++++++++++ icespider/fcgi/cgiRequestBase.cpp | 2 +- icespider/unittests/testFlatMap.cpp | 9 +++++++++ 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/icespider/core/flatMap.h b/icespider/core/flatMap.h index 33e1f24..e23bd46 100644 --- a/icespider/core/flatMap.h +++ b/icespider/core/flatMap.h @@ -18,6 +18,11 @@ namespace IceSpider { { return c(v.first, n); } + bool + operator()(const N & n, const V & v) const + { + return c(n, v.first); + } Comp c; }; @@ -41,6 +46,13 @@ namespace IceSpider { return std::lower_bound(begin(), end(), n, KeyComp {}); } + template + auto + contains(const N & n) const + { + return std::binary_search(begin(), end(), n, KeyComp {}); + } + template auto find(const N & n) const diff --git a/icespider/fcgi/cgiRequestBase.cpp b/icespider/fcgi/cgiRequestBase.cpp index 7d746b8..a1c804b 100644 --- a/icespider/fcgi/cgiRequestBase.cpp +++ b/icespider/fcgi/cgiRequestBase.cpp @@ -170,7 +170,7 @@ namespace IceSpider { bool CgiRequestBase::isSecure() const { - return envmap.find(HTTPS) != envmap.end(); + return envmap.contains(HTTPS); } OptionalString diff --git a/icespider/unittests/testFlatMap.cpp b/icespider/unittests/testFlatMap.cpp index 12d6900..c2fcea4 100644 --- a/icespider/unittests/testFlatMap.cpp +++ b/icespider/unittests/testFlatMap.cpp @@ -16,6 +16,7 @@ BOOST_AUTO_TEST_CASE(is_empty) BOOST_CHECK(empty()); BOOST_CHECK_EQUAL(find(""), end()); + BOOST_CHECK(!contains("")); } BOOST_AUTO_TEST_CASE(single) @@ -24,6 +25,9 @@ BOOST_AUTO_TEST_CASE(single) BOOST_CHECK_EQUAL(size(), 1); BOOST_CHECK(!empty()); + BOOST_CHECK(!contains("")); + BOOST_CHECK(contains("a")); + BOOST_CHECK(!contains("b")); BOOST_CHECK_EQUAL(begin()->first, "a"); BOOST_CHECK_EQUAL(begin()->second, 1); BOOST_CHECK_EQUAL(find("a"), begin()); @@ -42,6 +46,11 @@ BOOST_AUTO_TEST_CASE(several) BOOST_CHECK_EQUAL(size(), 3); BOOST_CHECK(!empty()); + BOOST_CHECK(!contains("")); + BOOST_CHECK(contains("a")); + BOOST_CHECK(!contains("b")); + BOOST_CHECK(contains("c")); + BOOST_CHECK(contains("f")); BOOST_CHECK_EQUAL(begin()->first, "a"); BOOST_CHECK_EQUAL(begin()->second, 1); BOOST_CHECK_EQUAL(find("a"), begin()); -- cgit v1.2.3