Open Chinese Convert: PrefixMatch.hpp Source File

Open Chinese Convert 1.4.0+g4813e9d34.dirty A project for conversion between Traditional and Simplified Chinese

Loading...
Searching...
No Matches
PrefixMatch.hpp
1/*
2 * Open Chinese Convert
3 *
4 * Copyright 2010-2026 Carbo Kuo and contributors
5 *
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 */
18
19#pragma once
20
21#include "Common.hpp"
22#include "Dict.hpp"
23
24namespace opencc {
25
26 class OPENCC_EXPORT PrefixMatch {
27public:
28 class Tables;
29
30 struct Match {
31 bool matched;
32 size_t keyLength;
33 const std::string* key;
34 const std::string* value;
35 };
36
37 explicit PrefixMatch(const DictPtr& dict);
38 ~PrefixMatch();
39
40 Match MatchPrefix(const char* word, size_t len) const;
41
55 PrefixMatchView MatchPrefixView(const char* word, size_t len) const;
56
57private:
58 static void AppendCacheKey(const DictPtr& dict, std::string* output);
59 static void CollectLeafDicts(const DictPtr& dict,
60 std::vector<std::weak_ptr<const Dict>>* output);
61
62 std::shared_ptr<const Tables> tables;
63 DictPtr singleDict;
64};
65
66} // namespace opencc
opencc::PrefixMatch::MatchPrefixView
PrefixMatchView MatchPrefixView(const char *word, size_t len) const
Like MatchPrefix but returns non-owning string_view fields without copying key or value into thread-l...
opencc::PrefixMatch::Match
Definition PrefixMatch.hpp:30
opencc::PrefixMatchView
Result of a PrefixMatch fast-path lookup.
Definition Dict.hpp:52