RapidFuzz
Loading...
Searching...
No Matches
Postfix_impl.hpp
1/* SPDX-License-Identifier: MIT */
2/* Copyright © 2021 Max Bachmann */
3
4#pragma once
5#include <rapidfuzz/details/Range.hpp>
6#include <rapidfuzz/details/common.hpp>
7#include <rapidfuzz/details/distance.hpp>
8
9namespace rapidfuzz {
10namespace detail {
11
12class Postfix : public SimilarityBase<Postfix, size_t, 0, std::numeric_limits<int64_t>::max()> {
13 friend SimilarityBase<Postfix, size_t, 0, std::numeric_limits<int64_t>::max()>;
14 friend NormalizedMetricBase<Postfix>;
15
16 template <typename InputIt1, typename InputIt2>
17 static size_t maximum(const Range<InputIt1>& s1, const Range<InputIt2>& s2)
18 {
19 return std::max(s1.size(), s2.size());
20 }
21
22 template <typename InputIt1, typename InputIt2>
23 static size_t _similarity(Range<InputIt1> s1, Range<InputIt2> s2, size_t score_cutoff, size_t)
24 {
25 size_t dist = remove_common_suffix(s1, s2);
26 return (dist >= score_cutoff) ? dist : 0;
27 }
28};
29
30} // namespace detail
31} // namespace rapidfuzz