librime 1.2
Rime Input Method Engine, the core library
syllabifier.h
Go to the documentation of this file.
1//
2// Copyright RIME Developers
3// Distributed under the BSD License
4//
5// 2011-7-12 Zou xu <zouivex@gmail.com>
6//
7
8#ifndef RIME_SYLLABIFIER_H_
9#define RIME_SYLLABIFIER_H_
10
11#include <stdint.h>
12#include <rime_api.h>
13#include <rime/common.h>
14#include "spelling.h"
15
16namespace rime {
17
18class Prism;
19class Corrector;
20
21using SyllableId = int32_t;
22
25 EdgeProperties() = default;
26 // 切分歧義編碼段的起始位置
28};
29
30using SpellingMap = map<SyllableId, EdgeProperties>;
31using VertexMap = map<size_t, SpellingType>;
32using EndVertexMap = map<size_t, SpellingMap>;
33using EdgeMap = map<size_t, EndVertexMap>;
34
35using SpellingPropertiesList = vector<const EdgeProperties*>;
36using SpellingIndex = map<SyllableId, SpellingPropertiesList>;
37using SpellingIndices = map<size_t, SpellingIndex>;
38
40 size_t input_length = 0;
45};
46
48 public:
49 Syllabifier() = default;
50 explicit Syllabifier(const string& delimiters,
51 bool enable_completion = false,
52 bool strict_spelling = false)
53 : delimiters_(delimiters),
54 enable_completion_(enable_completion),
55 strict_spelling_(strict_spelling) {}
56
57 RIME_DLL int BuildSyllableGraph(const string& input,
58 Prism& prism,
59 SyllableGraph* graph);
61
62 protected:
63 void CheckOverlappedSpellings(SyllableGraph* graph, size_t start, size_t end);
64 void Transpose(SyllableGraph* graph);
65
67 bool enable_completion_ = false;
68 bool strict_spelling_ = false;
70};
71
72} // namespace rime
73
74#endif // RIME_SYLLABIFIER_H_
#define RIME_DLL
Definition rime_api.h:33
Definition algebra.cc:12
map< SyllableId, SpellingPropertiesList > SpellingIndex
Definition syllabifier.h:36
map< size_t, SpellingIndex > SpellingIndices
Definition syllabifier.h:37
map< size_t, EndVertexMap > EdgeMap
Definition syllabifier.h:33
vector< const EdgeProperties * > SpellingPropertiesList
Definition syllabifier.h:35
map< SyllableId, EdgeProperties > SpellingMap
Definition syllabifier.h:30
map< size_t, SpellingType > VertexMap
Definition syllabifier.h:31
int32_t SyllableId
Definition syllabifier.h:21
map< size_t, SpellingMap > EndVertexMap
Definition syllabifier.h:32
Definition corrector.h:32
Definition prism.h:20
Definition spelling.h:24
EdgeProperties(SpellingProperties sup)
Definition syllabifier.h:24
set< size_t > ambiguous_source_positions
Definition syllabifier.h:27
EdgeProperties()=default
Definition syllabifier.h:39
VertexMap vertices
Definition syllabifier.h:42
SpellingIndices indices
Definition syllabifier.h:44
size_t input_length
Definition syllabifier.h:40
size_t interpreted_length
Definition syllabifier.h:41
EdgeMap edges
Definition syllabifier.h:43
bool strict_spelling_
Definition syllabifier.h:68
void Transpose(SyllableGraph *graph)
Definition syllabifier.cc:291
string delimiters_
Definition syllabifier.h:66
RIME_DLL void EnableCorrection(Corrector *corrector)
Definition syllabifier.cc:303
Syllabifier()=default
RIME_DLL int BuildSyllableGraph(const string &input, Prism &prism, SyllableGraph *graph)
Definition syllabifier.cc:30
Syllabifier(const string &delimiters, bool enable_completion=false, bool strict_spelling=false)
Definition syllabifier.h:50
void CheckOverlappedSpellings(SyllableGraph *graph, size_t start, size_t end)
Definition syllabifier.cc:257
bool enable_completion_
Definition syllabifier.h:67
Corrector * corrector_
Definition syllabifier.h:69
Definition corrector.h:56
Definition prism.h:67