blob: c34170805fa96d4b275f7a4424e35522e1fa56da (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_THIRD_PARTY_HUNSPELL_GOOGLE_BDICT_WRITER_H__
#define CHROME_THIRD_PARTY_HUNSPELL_GOOGLE_BDICT_WRITER_H__
#include <string>
#include <vector>
#include "base/basictypes.h"
namespace hunspell {
class DicNode;
// Class for creating a binary dictionary file from data read from Hunspell
// spellchecker files.
class BDictWriter {
public:
typedef std::vector< std::pair<std::string, std::vector<int> > > WordList;
BDictWriter();
~BDictWriter();
// Affix setters.
void SetComment(const std::string& comment) {
comment_ = comment;
}
void SetAffixRules(const std::vector<std::string>& rules) {
affix_rules_ = rules;
}
void SetAffixGroups(const std::vector<std::string>& groups) {
affix_groups_ = groups;
}
void SetReplacements(
const std::vector< std::pair<std::string, std::string> >& replacements) {
replacements_ = replacements;
}
void SetOtherCommands(const std::vector<std::string>& commands) {
other_commands_ = commands;
}
// The words must be sorted already.
void SetWords(const WordList& words);
// Returns the serialized data for the entire file. You must call all the
// setters above before this.
std::string GetBDict() const;
private:
// Converts the affix members to a string.
void SerializeAff(std::string* output) const;
// Affix members.
std::string comment_;
std::vector<std::string> affix_rules_;
std::vector<std::string> affix_groups_;
std::vector< std::pair<std::string, std::string> > replacements_;
std::vector<std::string> other_commands_;
// Root of the generated trie. Filled by SetWords.
DicNode* trie_root_;
DISALLOW_EVIL_CONSTRUCTORS(BDictWriter);
};
} // namespace hunspell
#endif // CHROME_THIRD_PARTY_HUNSPELL_GOOGLE_BDICT_WRITER_H__
|