Line data Source code
1 : // © 2016 and later: Unicode, Inc. and others.
2 : // License & terms of use: http://www.unicode.org/copyright.html
3 : /*
4 : **********************************************************************
5 : * Copyright (C) 2005-2015, International Business Machines
6 : * Corporation and others. All Rights Reserved.
7 : **********************************************************************
8 : */
9 :
10 : #ifndef __CSRSBCS_H
11 : #define __CSRSBCS_H
12 :
13 : #include "unicode/uobject.h"
14 :
15 : #if !UCONFIG_NO_CONVERSION
16 :
17 : #include "csrecog.h"
18 :
19 : U_NAMESPACE_BEGIN
20 :
21 : class NGramParser : public UMemory
22 : {
23 : private:
24 : int32_t ngram;
25 : const int32_t *ngramList;
26 :
27 : int32_t ngramCount;
28 : int32_t hitCount;
29 :
30 : protected:
31 : int32_t byteIndex;
32 : const uint8_t *charMap;
33 :
34 : void addByte(int32_t b);
35 :
36 : public:
37 : NGramParser(const int32_t *theNgramList, const uint8_t *theCharMap);
38 : virtual ~NGramParser();
39 :
40 : private:
41 : /*
42 : * Binary search for value in table, which must have exactly 64 entries.
43 : */
44 : int32_t search(const int32_t *table, int32_t value);
45 :
46 : void lookup(int32_t thisNgram);
47 :
48 : virtual int32_t nextByte(InputText *det);
49 : virtual void parseCharacters(InputText *det);
50 :
51 : public:
52 : int32_t parse(InputText *det);
53 :
54 : };
55 :
56 : #if !UCONFIG_ONLY_HTML_CONVERSION
57 : class NGramParser_IBM420 : public NGramParser
58 : {
59 : public:
60 : NGramParser_IBM420(const int32_t *theNgramList, const uint8_t *theCharMap);
61 : ~NGramParser_IBM420();
62 :
63 : private:
64 : int32_t alef;
65 : int32_t isLamAlef(int32_t b);
66 : int32_t nextByte(InputText *det);
67 : void parseCharacters(InputText *det);
68 : };
69 : #endif
70 :
71 :
72 : class CharsetRecog_sbcs : public CharsetRecognizer
73 : {
74 : public:
75 : CharsetRecog_sbcs();
76 : virtual ~CharsetRecog_sbcs();
77 : virtual const char *getName() const = 0;
78 : virtual UBool match(InputText *det, CharsetMatch *results) const = 0;
79 : virtual int32_t match_sbcs(InputText *det, const int32_t ngrams[], const uint8_t charMap[]) const;
80 : };
81 :
82 0 : class CharsetRecog_8859_1 : public CharsetRecog_sbcs
83 : {
84 : public:
85 : virtual ~CharsetRecog_8859_1();
86 : const char *getName() const;
87 : virtual UBool match(InputText *det, CharsetMatch *results) const;
88 : };
89 :
90 0 : class CharsetRecog_8859_2 : public CharsetRecog_sbcs
91 : {
92 : public:
93 : virtual ~CharsetRecog_8859_2();
94 : const char *getName() const;
95 : virtual UBool match(InputText *det, CharsetMatch *results) const;
96 : };
97 :
98 0 : class CharsetRecog_8859_5 : public CharsetRecog_sbcs
99 : {
100 : public:
101 : virtual ~CharsetRecog_8859_5();
102 : const char *getName() const;
103 : };
104 :
105 0 : class CharsetRecog_8859_6 : public CharsetRecog_sbcs
106 : {
107 : public:
108 : virtual ~CharsetRecog_8859_6();
109 :
110 : const char *getName() const;
111 : };
112 :
113 0 : class CharsetRecog_8859_7 : public CharsetRecog_sbcs
114 : {
115 : public:
116 : virtual ~CharsetRecog_8859_7();
117 :
118 : const char *getName() const;
119 : };
120 :
121 0 : class CharsetRecog_8859_8 : public CharsetRecog_sbcs
122 : {
123 : public:
124 : virtual ~CharsetRecog_8859_8();
125 :
126 : virtual const char *getName() const;
127 : };
128 :
129 0 : class CharsetRecog_8859_9 : public CharsetRecog_sbcs
130 : {
131 : public:
132 : virtual ~CharsetRecog_8859_9();
133 :
134 : const char *getName() const;
135 : };
136 :
137 :
138 :
139 0 : class CharsetRecog_8859_5_ru : public CharsetRecog_8859_5
140 : {
141 : public:
142 : virtual ~CharsetRecog_8859_5_ru();
143 :
144 : const char *getLanguage() const;
145 :
146 : virtual UBool match(InputText *det, CharsetMatch *results) const;
147 : };
148 :
149 0 : class CharsetRecog_8859_6_ar : public CharsetRecog_8859_6
150 : {
151 : public:
152 : virtual ~CharsetRecog_8859_6_ar();
153 :
154 : const char *getLanguage() const;
155 :
156 : virtual UBool match(InputText *det, CharsetMatch *results) const;
157 : };
158 :
159 0 : class CharsetRecog_8859_7_el : public CharsetRecog_8859_7
160 : {
161 : public:
162 : virtual ~CharsetRecog_8859_7_el();
163 :
164 : const char *getLanguage() const;
165 :
166 : virtual UBool match(InputText *det, CharsetMatch *results) const;
167 : };
168 :
169 0 : class CharsetRecog_8859_8_I_he : public CharsetRecog_8859_8
170 : {
171 : public:
172 : virtual ~CharsetRecog_8859_8_I_he();
173 :
174 : const char *getName() const;
175 :
176 : const char *getLanguage() const;
177 :
178 : virtual UBool match(InputText *det, CharsetMatch *results) const;
179 : };
180 :
181 0 : class CharsetRecog_8859_8_he : public CharsetRecog_8859_8
182 : {
183 : public:
184 : virtual ~CharsetRecog_8859_8_he ();
185 :
186 : const char *getLanguage() const;
187 :
188 : virtual UBool match(InputText *det, CharsetMatch *results) const;
189 : };
190 :
191 0 : class CharsetRecog_8859_9_tr : public CharsetRecog_8859_9
192 : {
193 : public:
194 : virtual ~CharsetRecog_8859_9_tr ();
195 :
196 : const char *getLanguage() const;
197 :
198 : virtual UBool match(InputText *det, CharsetMatch *results) const;
199 : };
200 :
201 0 : class CharsetRecog_windows_1256 : public CharsetRecog_sbcs
202 : {
203 : public:
204 : virtual ~CharsetRecog_windows_1256();
205 :
206 : const char *getName() const;
207 :
208 : const char *getLanguage() const;
209 :
210 : virtual UBool match(InputText *det, CharsetMatch *results) const;
211 : };
212 :
213 0 : class CharsetRecog_windows_1251 : public CharsetRecog_sbcs
214 : {
215 : public:
216 : virtual ~CharsetRecog_windows_1251();
217 :
218 : const char *getName() const;
219 :
220 : const char *getLanguage() const;
221 :
222 : virtual UBool match(InputText *det, CharsetMatch *results) const;
223 : };
224 :
225 :
226 0 : class CharsetRecog_KOI8_R : public CharsetRecog_sbcs
227 : {
228 : public:
229 : virtual ~CharsetRecog_KOI8_R();
230 :
231 : const char *getName() const;
232 :
233 : const char *getLanguage() const;
234 :
235 : virtual UBool match(InputText *det, CharsetMatch *results) const;
236 : };
237 :
238 : #if !UCONFIG_ONLY_HTML_CONVERSION
239 0 : class CharsetRecog_IBM424_he : public CharsetRecog_sbcs
240 : {
241 : public:
242 : virtual ~CharsetRecog_IBM424_he();
243 :
244 : const char *getLanguage() const;
245 : };
246 :
247 0 : class CharsetRecog_IBM424_he_rtl : public CharsetRecog_IBM424_he {
248 : public:
249 : virtual ~CharsetRecog_IBM424_he_rtl();
250 :
251 : const char *getName() const;
252 :
253 : virtual UBool match(InputText *det, CharsetMatch *results) const;
254 : };
255 :
256 0 : class CharsetRecog_IBM424_he_ltr : public CharsetRecog_IBM424_he {
257 : virtual ~CharsetRecog_IBM424_he_ltr();
258 :
259 : const char *getName() const;
260 :
261 : virtual UBool match(InputText *det, CharsetMatch *results) const;
262 : };
263 :
264 0 : class CharsetRecog_IBM420_ar : public CharsetRecog_sbcs
265 : {
266 : public:
267 : virtual ~CharsetRecog_IBM420_ar();
268 :
269 : const char *getLanguage() const;
270 : int32_t match_sbcs(InputText *det, const int32_t ngrams[], const uint8_t charMap[]) const;
271 :
272 : };
273 :
274 0 : class CharsetRecog_IBM420_ar_rtl : public CharsetRecog_IBM420_ar {
275 : public:
276 : virtual ~CharsetRecog_IBM420_ar_rtl();
277 :
278 : const char *getName() const;
279 :
280 : virtual UBool match(InputText *det, CharsetMatch *results) const;
281 : };
282 :
283 0 : class CharsetRecog_IBM420_ar_ltr : public CharsetRecog_IBM420_ar {
284 : virtual ~CharsetRecog_IBM420_ar_ltr();
285 :
286 : const char *getName() const;
287 :
288 : virtual UBool match(InputText *det, CharsetMatch *results) const;
289 : };
290 : #endif
291 :
292 : U_NAMESPACE_END
293 :
294 : #endif /* !UCONFIG_NO_CONVERSION */
295 : #endif /* __CSRSBCS_H */
|