mirror of
https://github.com/bolero-MURAKAMI/Sprout.git
synced 2025-07-14 15:04:09 +00:00
add tristate_lexicographical_compare: delimiter version
This commit is contained in:
parent
0670013702
commit
e5332c18c2
5 changed files with 165 additions and 21 deletions
|
@ -44,13 +44,6 @@ namespace sprout {
|
|||
: found
|
||||
;
|
||||
}
|
||||
template<typename Iterator>
|
||||
static SPROUT_CONSTEXPR std::size_t len(Iterator s, std::size_t n) {
|
||||
return NS_SSCRISK_CEL_OR_SPROUT::distance(
|
||||
s,
|
||||
NS_SSCRISK_CEL_OR_SPROUT::find(s, s + n, char_type())
|
||||
);
|
||||
}
|
||||
public:
|
||||
static void assign(char_type& c1, char_type const& c2) SPROUT_NOEXCEPT {
|
||||
impl_type::assign(c1, c2);
|
||||
|
@ -63,8 +56,8 @@ namespace sprout {
|
|||
}
|
||||
static SPROUT_CONSTEXPR int compare(char_type const* s1, char_type const* s2, std::size_t n) {
|
||||
return sprout::tristate_lexicographical_compare(
|
||||
sprout::as_iterator(s1), sprout::as_iterator(s1, len(sprout::as_iterator(s1), n)),
|
||||
sprout::as_iterator(s2), sprout::as_iterator(s2, len(sprout::as_iterator(s2), n)),
|
||||
sprout::as_iterator(s1), sprout::as_iterator(s1, n), char_type(),
|
||||
sprout::as_iterator(s2), sprout::as_iterator(s2, n), char_type(),
|
||||
lt_()
|
||||
);
|
||||
}
|
||||
|
@ -112,24 +105,24 @@ namespace sprout {
|
|||
template<typename ConstIterator>
|
||||
static SPROUT_CONSTEXPR int compare(char_type const* s1, ConstIterator s2, std::size_t n) {
|
||||
return sprout::tristate_lexicographical_compare(
|
||||
sprout::as_iterator(s1), sprout::as_iterator(s1, len(sprout::as_iterator(s1), n)),
|
||||
s2, s2 + n,
|
||||
sprout::as_iterator(s1), sprout::as_iterator(s1, n), char_type(),
|
||||
s2, s2 + n, char_type(),
|
||||
lt_()
|
||||
);
|
||||
}
|
||||
template<typename ConstIterator>
|
||||
static SPROUT_CONSTEXPR int compare(ConstIterator s1, char_type const* s2, std::size_t n) {
|
||||
return sprout::tristate_lexicographical_compare(
|
||||
s1, s1 + n,
|
||||
sprout::as_iterator(s2), sprout::as_iterator(s2, len(sprout::as_iterator(s2), n)),
|
||||
s1, s1 + n, char_type(),
|
||||
sprout::as_iterator(s2), sprout::as_iterator(s2, n), char_type(),
|
||||
lt_()
|
||||
);
|
||||
}
|
||||
template<typename ConstIterator1, typename ConstIterator2>
|
||||
static SPROUT_CONSTEXPR int compare(ConstIterator1 s1, ConstIterator2 s2, std::size_t n) {
|
||||
return sprout::tristate_lexicographical_compare(
|
||||
s1, s1 + n,
|
||||
s2, s2 + n,
|
||||
s1, s1 + n, char_type(),
|
||||
s2, s2 + n, char_type(),
|
||||
lt_()
|
||||
);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue