SVN checkout 11/12/2010
[monav:monav.git] / plugins / unicodetournamenttrie / unicodetournamenttrie.h
1 /*
2 Copyright 2010  Christian Vetter veaac.fdirct@gmail.com
3
4 This file is part of MoNav.
5
6 MoNav is free software: you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation, either version 3 of the License, or
9 (at your option) any later version.
10
11 MoNav is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with MoNav.  If not, see <http://www.gnu.org/licenses/>.
18 */
19
20 #ifndef UNICODETOURNAMENTTRIE_H
21 #define UNICODETOURNAMENTTRIE_H
22
23 #include "interfaces/ipreprocessor.h"
24 #include "trie.h"
25 #include "uttsettingsdialog.h"
26 #include <QFile>
27 #include <vector>
28
29 class UnicodeTournamentTrie : public QObject, public IPreprocessor {
30         Q_OBJECT
31         Q_INTERFACES( IPreprocessor )
32
33 public:
34
35                         UnicodeTournamentTrie();
36         virtual ~UnicodeTournamentTrie();
37
38         virtual QString GetName();
39         virtual int GetFileFormatVersion();
40         virtual Type GetType();
41         virtual QWidget* GetSettings();
42         virtual bool LoadSettings( QSettings* settings );
43         virtual bool SaveSettings( QSettings* settings );
44         virtual bool Preprocess( IImporter* importer, QString dir );
45
46 protected:
47
48         void insert( std::vector< utt::Node >* trie, unsigned importance, const QString& name, utt::Data data );
49         void writeTrie( std::vector< utt::Node >* trie, QFile& file );
50
51         struct PlaceImportance {
52                 QString name;
53                 int population;
54                 unsigned type;
55                 bool operator<( const PlaceImportance& right ) const {
56                         if ( population != right.population )
57                                 return population < right.population;
58                         if ( type != right.type )
59                                 return type < right.type;
60                         return name < right.name;
61                 }
62         };
63
64         UTTSettingsDialog* m_settingsDialog;
65 };
66
67 #endif // UNICODETOURNAMENTTRIE_H