Const conversions for edict and kanjidic objects. Removal of obsolete dictionary...
[jben.git] / kanjilist.h
bloba612d72400b1b6e91b5c79d11e3997a3d644261d
1 /*
2 Project: J-Ben
3 Author: Paul Goins
4 Website: http://www.vultaire.net/software/jben/
5 License: GNU General Public License (GPL) version 2
6 (http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt)
8 File: kanjilist.h
10 This program is free software; you can redistribute it and/or modify
11 it under the terms of the GNU General Public License as published by
12 the Free Software Foundation; either version 2 of the License, or
13 (at your option) any later version.
15 This program is distributed in the hope that it will be useful,
16 but WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 GNU General Public License for more details.
20 You should have received a copy of the GNU General Public License
21 along with this program. If not, see <http://www.gnu.org/licenses/>
24 #ifndef kanjilist_h
25 #define kanjilist_h
27 /* Stock wxWidgets includes */
28 #include "wx/wxprec.h"
29 #ifdef __BORLANDC__
30 #pragma hdrstop
31 #endif
32 #ifndef WX_PRECOMP
33 #include "wx/wx.h"
34 #endif
35 #include "kanjidic.h"
36 #include "boosthm.h"
37 #include <vector>
38 using namespace std;
40 #define ST_GRADE 1
41 #define ST_FREQUENCY 2
43 class KanjiList {
44 public:
45 KanjiList(const BoostHM<wxChar,string>* const kanjiDicHash);
46 int AddFromString(const wxString& s);
47 int AddByGrade(int lowGrade, int highGrade);
48 int AddByFrequency(int lowFreq, int highFreq);
49 wxString ToString();
50 wxString ToString(int lineWidth);
51 int Size();
52 #if 0
53 vector<wxChar>::iterator Find(wxChar c);
54 #endif
55 void Clear();
56 void Sort(int sortType, bool reverseOrder=false);
57 wxChar operator[](unsigned int index);
58 #if 0
59 wxChar GetCharByIndex(unsigned int index);
60 #endif
61 int GetIndexByChar(wxChar c);
62 vector<wxChar>& GetVector();
64 private:
65 void InplaceMerge(vector<wxChar>& v, BoostHM<wxChar,int>& indexer, int start, int middle, int end);
67 const BoostHM<wxChar,string> *kanjiHash;
68 vector<wxChar> kanjiList;
69 BoostHM<wxChar, int> *myCharIndexer;
70 /* NOTE:
71 The wxWidgets documentation does say to avoid using templates, but at
72 the same time, wx has been around for a -long- time, and since gcc is
73 pretty well universally supported and supports templates, I think for
74 the purposes of my program the convenience of templates outweighs the
75 compatibility loss with certain seldom-used obscure compilers.
77 If desired, we can do the hunky-dory wxWidgets ARRAY mechanism,
78 or we can just create a custom vector class by hand. But until the STL
79 class fails us, I see no reason not to use it. */
82 #endif