extensions/spellcheck/hunspell/src/affentry.hxx

Wed, 31 Dec 2014 13:27:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 13:27:57 +0100
branch
TOR_BUG_3246
changeset 6
8bccb770b82d
permissions
-rw-r--r--

Ignore runtime configuration files generated during quality assurance.

michael@0 1 /******* BEGIN LICENSE BLOCK *******
michael@0 2 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
michael@0 3 *
michael@0 4 * The contents of this file are subject to the Mozilla Public License Version
michael@0 5 * 1.1 (the "License"); you may not use this file except in compliance with
michael@0 6 * the License. You may obtain a copy of the License at
michael@0 7 * http://www.mozilla.org/MPL/
michael@0 8 *
michael@0 9 * Software distributed under the License is distributed on an "AS IS" basis,
michael@0 10 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
michael@0 11 * for the specific language governing rights and limitations under the
michael@0 12 * License.
michael@0 13 *
michael@0 14 * The Initial Developers of the Original Code are Kevin Hendricks (MySpell)
michael@0 15 * and László Németh (Hunspell). Portions created by the Initial Developers
michael@0 16 * are Copyright (C) 2002-2005 the Initial Developers. All Rights Reserved.
michael@0 17 *
michael@0 18 * Contributor(s): Kevin Hendricks (kevin.hendricks@sympatico.ca)
michael@0 19 * David Einstein (deinst@world.std.com)
michael@0 20 * László Németh (nemethl@gyorsposta.hu)
michael@0 21 * Caolan McNamara (caolanm@redhat.com)
michael@0 22 * Davide Prina
michael@0 23 * Giuseppe Modugno
michael@0 24 * Gianluca Turconi
michael@0 25 * Simon Brouwer
michael@0 26 * Noll Janos
michael@0 27 * Biro Arpad
michael@0 28 * Goldman Eleonora
michael@0 29 * Sarlos Tamas
michael@0 30 * Bencsath Boldizsar
michael@0 31 * Halacsy Peter
michael@0 32 * Dvornik Laszlo
michael@0 33 * Gefferth Andras
michael@0 34 * Nagy Viktor
michael@0 35 * Varga Daniel
michael@0 36 * Chris Halls
michael@0 37 * Rene Engelhard
michael@0 38 * Bram Moolenaar
michael@0 39 * Dafydd Jones
michael@0 40 * Harri Pitkanen
michael@0 41 * Andras Timar
michael@0 42 * Tor Lillqvist
michael@0 43 *
michael@0 44 * Alternatively, the contents of this file may be used under the terms of
michael@0 45 * either the GNU General Public License Version 2 or later (the "GPL"), or
michael@0 46 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
michael@0 47 * in which case the provisions of the GPL or the LGPL are applicable instead
michael@0 48 * of those above. If you wish to allow use of your version of this file only
michael@0 49 * under the terms of either the GPL or the LGPL, and not to allow others to
michael@0 50 * use your version of this file under the terms of the MPL, indicate your
michael@0 51 * decision by deleting the provisions above and replace them with the notice
michael@0 52 * and other provisions required by the GPL or the LGPL. If you do not delete
michael@0 53 * the provisions above, a recipient may use your version of this file under
michael@0 54 * the terms of any one of the MPL, the GPL or the LGPL.
michael@0 55 *
michael@0 56 ******* END LICENSE BLOCK *******/
michael@0 57
michael@0 58 #ifndef _AFFIX_HXX_
michael@0 59 #define _AFFIX_HXX_
michael@0 60
michael@0 61 #include "hunvisapi.h"
michael@0 62
michael@0 63 #include "atypes.hxx"
michael@0 64 #include "baseaffix.hxx"
michael@0 65 #include "affixmgr.hxx"
michael@0 66
michael@0 67 /* A Prefix Entry */
michael@0 68
michael@0 69 class LIBHUNSPELL_DLL_EXPORTED PfxEntry : protected AffEntry
michael@0 70 {
michael@0 71 AffixMgr* pmyMgr;
michael@0 72
michael@0 73 PfxEntry * next;
michael@0 74 PfxEntry * nexteq;
michael@0 75 PfxEntry * nextne;
michael@0 76 PfxEntry * flgnxt;
michael@0 77
michael@0 78 public:
michael@0 79
michael@0 80 PfxEntry(AffixMgr* pmgr, affentry* dp );
michael@0 81 ~PfxEntry();
michael@0 82
michael@0 83 inline bool allowCross() { return ((opts & aeXPRODUCT) != 0); }
michael@0 84 struct hentry * checkword(const char * word, int len, char in_compound,
michael@0 85 const FLAG needflag = FLAG_NULL);
michael@0 86
michael@0 87 struct hentry * check_twosfx(const char * word, int len, char in_compound, const FLAG needflag = FLAG_NULL);
michael@0 88
michael@0 89 char * check_morph(const char * word, int len, char in_compound,
michael@0 90 const FLAG needflag = FLAG_NULL);
michael@0 91
michael@0 92 char * check_twosfx_morph(const char * word, int len,
michael@0 93 char in_compound, const FLAG needflag = FLAG_NULL);
michael@0 94
michael@0 95 inline FLAG getFlag() { return aflag; }
michael@0 96 inline const char * getKey() { return appnd; }
michael@0 97 char * add(const char * word, int len);
michael@0 98
michael@0 99 inline short getKeyLen() { return appndl; }
michael@0 100
michael@0 101 inline const char * getMorph() { return morphcode; }
michael@0 102
michael@0 103 inline const unsigned short * getCont() { return contclass; }
michael@0 104 inline short getContLen() { return contclasslen; }
michael@0 105
michael@0 106 inline PfxEntry * getNext() { return next; }
michael@0 107 inline PfxEntry * getNextNE() { return nextne; }
michael@0 108 inline PfxEntry * getNextEQ() { return nexteq; }
michael@0 109 inline PfxEntry * getFlgNxt() { return flgnxt; }
michael@0 110
michael@0 111 inline void setNext(PfxEntry * ptr) { next = ptr; }
michael@0 112 inline void setNextNE(PfxEntry * ptr) { nextne = ptr; }
michael@0 113 inline void setNextEQ(PfxEntry * ptr) { nexteq = ptr; }
michael@0 114 inline void setFlgNxt(PfxEntry * ptr) { flgnxt = ptr; }
michael@0 115
michael@0 116 inline char * nextchar(char * p);
michael@0 117 inline int test_condition(const char * st);
michael@0 118 };
michael@0 119
michael@0 120
michael@0 121
michael@0 122
michael@0 123 /* A Suffix Entry */
michael@0 124
michael@0 125 class LIBHUNSPELL_DLL_EXPORTED SfxEntry : protected AffEntry
michael@0 126 {
michael@0 127 AffixMgr* pmyMgr;
michael@0 128 char * rappnd;
michael@0 129
michael@0 130 SfxEntry * next;
michael@0 131 SfxEntry * nexteq;
michael@0 132 SfxEntry * nextne;
michael@0 133 SfxEntry * flgnxt;
michael@0 134
michael@0 135 SfxEntry * l_morph;
michael@0 136 SfxEntry * r_morph;
michael@0 137 SfxEntry * eq_morph;
michael@0 138
michael@0 139 public:
michael@0 140
michael@0 141 SfxEntry(AffixMgr* pmgr, affentry* dp );
michael@0 142 ~SfxEntry();
michael@0 143
michael@0 144 inline bool allowCross() { return ((opts & aeXPRODUCT) != 0); }
michael@0 145 struct hentry * checkword(const char * word, int len, int optflags,
michael@0 146 PfxEntry* ppfx, char ** wlst, int maxSug, int * ns,
michael@0 147 // const FLAG cclass = FLAG_NULL, const FLAG needflag = FLAG_NULL, char in_compound=IN_CPD_NOT);
michael@0 148 const FLAG cclass = FLAG_NULL, const FLAG needflag = FLAG_NULL, const FLAG badflag = 0);
michael@0 149
michael@0 150 struct hentry * check_twosfx(const char * word, int len, int optflags, PfxEntry* ppfx, const FLAG needflag = FLAG_NULL);
michael@0 151
michael@0 152 char * check_twosfx_morph(const char * word, int len, int optflags,
michael@0 153 PfxEntry* ppfx, const FLAG needflag = FLAG_NULL);
michael@0 154 struct hentry * get_next_homonym(struct hentry * he);
michael@0 155 struct hentry * get_next_homonym(struct hentry * word, int optflags, PfxEntry* ppfx,
michael@0 156 const FLAG cclass, const FLAG needflag);
michael@0 157
michael@0 158
michael@0 159 inline FLAG getFlag() { return aflag; }
michael@0 160 inline const char * getKey() { return rappnd; }
michael@0 161 char * add(const char * word, int len);
michael@0 162
michael@0 163
michael@0 164 inline const char * getMorph() { return morphcode; }
michael@0 165
michael@0 166 inline const unsigned short * getCont() { return contclass; }
michael@0 167 inline short getContLen() { return contclasslen; }
michael@0 168 inline const char * getAffix() { return appnd; }
michael@0 169
michael@0 170 inline short getKeyLen() { return appndl; }
michael@0 171
michael@0 172 inline SfxEntry * getNext() { return next; }
michael@0 173 inline SfxEntry * getNextNE() { return nextne; }
michael@0 174 inline SfxEntry * getNextEQ() { return nexteq; }
michael@0 175
michael@0 176 inline SfxEntry * getLM() { return l_morph; }
michael@0 177 inline SfxEntry * getRM() { return r_morph; }
michael@0 178 inline SfxEntry * getEQM() { return eq_morph; }
michael@0 179 inline SfxEntry * getFlgNxt() { return flgnxt; }
michael@0 180
michael@0 181 inline void setNext(SfxEntry * ptr) { next = ptr; }
michael@0 182 inline void setNextNE(SfxEntry * ptr) { nextne = ptr; }
michael@0 183 inline void setNextEQ(SfxEntry * ptr) { nexteq = ptr; }
michael@0 184 inline void setFlgNxt(SfxEntry * ptr) { flgnxt = ptr; }
michael@0 185
michael@0 186 inline char * nextchar(char * p);
michael@0 187 inline int test_condition(const char * st, const char * begin);
michael@0 188
michael@0 189 };
michael@0 190
michael@0 191 #endif
michael@0 192
michael@0 193

mercurial