1 /*  phonetic.c - generic replacement aglogithms for phonetic transformation
2     Copyright (C) 2000 Bjoern Jacke
3 
4     This library is free software; you can redistribute it and/or
5     modify it under the terms of the GNU Lesser General Public
6     License version 2.1 as published by the Free Software Foundation;
7 
8     This library is distributed in the hope that it will be useful,
9     but WITHOUT ANY WARRANTY; without even the implied warranty of
10     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11     Lesser General Public License for more details.
12 
13     You should have received a copy of the GNU Lesser General Public
14     License along with this library; If not, see
15     <http://www.gnu.org/licenses/>.
16 
17     Changelog:
18 
19     2000-01-05  Bjoern Jacke <bjoern at j3e.de>
20                 Initial Release insprired by the article about phonetic
21                 transformations out of c't 25/1999
22 
23     2007-07-26  Bjoern Jacke <bjoern at j3e.de>
24                 Released under MPL/GPL/LGPL tri-license for Hunspell
25 
26     2007-08-23  Laszlo Nemeth <nemeth at OOo>
27                 Porting from Aspell to Hunspell using C-like structs
28 */
29 
30 #ifndef PHONET_HXX_
31 #define PHONET_HXX_
32 
33 #define HASHSIZE 256
34 #define MAXPHONETLEN 256
35 #define MAXPHONETUTF8LEN (MAXPHONETLEN * 4)
36 
37 #include "hunvisapi.h"
38 
39 struct phonetable {
40   char utf8;
41   std::vector<std::string> rules;
42   int hash[HASHSIZE];
43 };
44 
45 LIBHUNSPELL_DLL_EXPORTED void init_phonet_hash(phonetable& parms);
46 
47 LIBHUNSPELL_DLL_EXPORTED std::string phonet(const std::string& inword,
48                                             phonetable& phone);
49 
50 #endif
51