blob: c34170805fa96d4b275f7a4424e35522e1fa56da [file] [log] [blame]
// 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__