Skip to content

Commit

Permalink
Update scan lib and use latest API (#354)
Browse files Browse the repository at this point in the history
  • Loading branch information
Twon authored Feb 9, 2025
1 parent 7a3725b commit a78f740
Show file tree
Hide file tree
Showing 5 changed files with 8 additions and 5 deletions.
2 changes: 1 addition & 1 deletion conanfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ class Morpheus(ConanFile):
"ms-gsl/4.0.0",
"rapidjson/cci.20230929",
"range-v3/0.12.0",
"scnlib/2.0.2",
"scnlib/4.0.1",
)

build_requires = (
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#pragma once

#include "morpheus/core/conformance/ranges.hpp"
#include "morpheus/core/conformance/scan.hpp"
#include "morpheus/core/meta/concepts/scannable.hpp"

Expand Down
3 changes: 2 additions & 1 deletion libraries/core/src/morpheus/core/meta/concepts/scannable.hpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#pragma once

#include "morpheus/core/conformance/ranges.hpp"
#include "morpheus/core/conformance/scan.hpp"
#include "morpheus/core/meta/detail/scannable.hpp"

Expand All @@ -11,6 +12,6 @@ namespace morpheus::meta::concepts
/// \concept Scannable
/// Verifies a given T is a scannable type.
template <class T, class CharT>
concept Scannable = detail::ScannableWith<std::remove_reference_t<T>, scan_ns::basic_scan_context<CharT>>;
concept Scannable = detail::ScannableWith<std::remove_reference_t<T>, scan_ns::basic_scan_context<morpheus::ranges::subrange<const CharT*, const CharT*>, CharT>>;

} // namespace morpheus::meta::concepts
2 changes: 1 addition & 1 deletion libraries/core/src/morpheus/core/meta/detail/scannable.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ template <class T, class Context, class Scanner = typename Context::template sca
concept ScannableWith =
std::semiregular<Scanner> &&
requires(Scanner& s, const Scanner& cs, T& t, Context& ctx, scan_ns::basic_scan_parse_context<typename Context::char_type> pctx) {
{ s.parse(pctx) } -> std::same_as<scan_ns::scan_expected<typename decltype(pctx)::iterator>>;
{ s.parse(pctx) } -> std::same_as<typename decltype(pctx)::iterator>;
{ cs.scan(t, ctx) } -> std::same_as<scan_ns::scan_expected<typename Context::iterator>>;
};

Expand Down
5 changes: 3 additions & 2 deletions libraries/core/tests/meta/concepts/scannable.tests.cpp
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
#include "morpheus/core/conformance/ranges.hpp"
#include "morpheus/core/conformance/scan.hpp"
#include "morpheus/core/meta/concepts/scannable.hpp"

Expand Down Expand Up @@ -35,8 +36,8 @@ class UnscannableType;

TEST_CASE("Meta concept scannable_with verifies a given type customises scan_ns::scanner", "[morpheus.meta.concepts.scannable_with]")
{
STATIC_REQUIRE(!detail::ScannableWith<UnscannableType, scan_ns::basic_scan_context<char>>);
STATIC_REQUIRE(detail::ScannableWith<ScannableType, scan_ns::basic_scan_context<char>>);
STATIC_REQUIRE(!detail::ScannableWith<UnscannableType, scan_ns::basic_scan_context<morpheus::ranges::subrange<char*, char*>, char>>);
STATIC_REQUIRE(detail::ScannableWith<ScannableType, scan_ns::basic_scan_context<morpheus::ranges::subrange<char*, char*>, char>>);
}

TEST_CASE("Meta concept scannable_with verifies a given type customises scan_ns::scanner", "[morpheus.meta.concepts.scannable]")
Expand Down

0 comments on commit a78f740

Please sign in to comment.