/* Copyright (C) 2008-2013 Børre Gaup This file is part of the program wordlist2hunspell. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef WORDLISTPARSER_H #define WORDLISTPARSER_H #include // needed for file identifiers to .dic and .aff files #include #include #include "stringparser.h" typedef std::map< std::set, std::set > SuffixSetStemSetMap; typedef std::map SuffixMap; class WordlistParser { public: WordlistParser(); ~WordlistParser(); virtual void processFile(std::istream* instream) = 0; void addSuffix(std::string str); void addStem(); void updateStemSuffixMap(int stemid); void addSuffixes(int stemid); SuffixSetStemSetMap getSuffixSetStemSet() const; SuffixMap getSuffixMap() const; std::map getStems() const; std::set getPlxClasses() const; void writeStatistics(); void setPreviousStem(std::string stem); void handleStem(std::string currentStem, std::string suffix); void updateAndPrintLineCount(); std::set getPlxParts(std::string plxPart); void addPlxClass(const std::string suffix); virtual void handleSuffixes(std::string currentStem, std::string suffix, std::string plcplxPart) = 0; void setFirstChar(); private: void updateSuffixsetStemsetMap(); std::string getPreviousStem() const; void replaceSlash(); int _stemid; int _id; int _lineCount; SuffixMap _suffixMap; SuffixSetStemSetMap _suffixSetStemSet; std::map _stemMap; std::set _suffixSet; std::set _plxClasses; std::string _previousStem; std::map > _stemSuffixMap; std::set _currentSuffixes; std::string _firstChar; }; #endif // WORDLISTPARSER_H