brotli_decompressor/transform.rs
1#![allow(non_upper_case_globals)]
2
3const kIdentity: u8 = 0;
4const kOmitLast1: u8 = 1;
5const kOmitLast2: u8 = 2;
6const kOmitLast3: u8 = 3;
7const kOmitLast4: u8 = 4;
8const kOmitLast5: u8 = 5;
9const kOmitLast6: u8 = 6;
10const kOmitLast7: u8 = 7;
11const kOmitLast8: u8 = 8;
12const kOmitLast9: u8 = 9;
13const kUppercaseFirst: u8 = 10;
14const kUppercaseAll: u8 = 11;
15const kOmitFirst1: u8 = 12;
16const kOmitFirst2: u8 = 13;
17const kOmitFirst3: u8 = 14;
18const kOmitFirst4: u8 = 15;
19const kOmitFirst5: u8 = 16;
20const kOmitFirst6: u8 = 17;
21const kOmitFirst7: u8 = 18;
22// const kOmitFirst8 : u8 = 19; // <-- unused (reserved)
23const kOmitFirst9: u8 = 20;
24
25
26pub struct Transform {
27 pub prefix_id: u8,
28 pub transform: u8,
29 pub suffix_id: u8,
30}
31
32const kPrefixSuffix: [u8; 208] =
33 [0x00, 0x20, 0x00, 0x2c, 0x20, 0x00, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x00, 0x20,
34 0x6f, 0x66, 0x20, 0x00, 0x73, 0x20, 0x00, 0x2e, 0x00, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x00, 0x20,
35 0x69, 0x6e, 0x20, 0x00, 0x22, 0x00, 0x20, 0x74, 0x6f, 0x20, 0x00, 0x22, 0x3e, 0x00, 0x0a, 0x00,
36 0x2e, 0x20, 0x00, 0x5d, 0x00, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x00, 0x20, 0x61, 0x20, 0x00, 0x20,
37 0x74, 0x68, 0x61, 0x74, 0x20, 0x00, 0x27, 0x00, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x00, 0x20,
38 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x00, 0x20, 0x62, 0x79, 0x20, 0x00, 0x28, 0x00, 0x2e, 0x20, 0x54,
39 0x68, 0x65, 0x20, 0x00, 0x20, 0x6f, 0x6e, 0x20, 0x00, 0x20, 0x61, 0x73, 0x20, 0x00, 0x20, 0x69,
40 0x73, 0x20, 0x00, 0x69, 0x6e, 0x67, 0x20, 0x00, 0x0a, 0x09, 0x00, 0x3a, 0x00, 0x65, 0x64, 0x20,
41 0x00, 0x3d, 0x22, 0x00, 0x20, 0x61, 0x74, 0x20, 0x00, 0x6c, 0x79, 0x20, 0x00, 0x2c, 0x00, 0x3d,
42 0x27, 0x00, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x00, 0x2e, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x00,
43 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x00, 0x65, 0x72, 0x20, 0x00, 0x61, 0x6c, 0x20, 0x00, 0x66, 0x75,
44 0x6c, 0x20, 0x00, 0x69, 0x76, 0x65, 0x20, 0x00, 0x6c, 0x65, 0x73, 0x73, 0x20, 0x00, 0x65, 0x73,
45 0x74, 0x20, 0x00, 0x69, 0x7a, 0x65, 0x20, 0x00, 0xc2, 0xa0, 0x00, 0x6f, 0x75, 0x73, 0x20, 0x00];
46// "\0 \0, \0 of the \0 of \0s \0.\0 and \0 in \0\"\0 to \0\">\0\n\0. \0]\0"
47// " for \0 a \0 that \0\'\0 with \0 from \0 by \0(\0. The \0 on \0 as \0"
48// " is \0ing \0\n\t\0:\0ed \0=\"\0 at \0ly \0,\0=\'\0.com/\0. This \0"
49// " not \0er \0al \0ful \0ive \0less \0est \0ize \0\xc2\xa0\0ous ";
50
51// EMPTY = ""
52// SP = " "
53// DQUOT = "\""
54// SQUOT = "'"
55// CLOSEBR = "]"
56// OPEN = "("
57// SLASH = "/"
58// NBSP = non-breaking space "\0xc2\xa0"
59//
60const kPFix_EMPTY: u8 = 0;
61const kPFix_SP: u8 = 1;
62const kPFix_COMMASP: u8 = 3;
63const kPFix_SPofSPtheSP: u8 = 6;
64const kPFix_SPtheSP: u8 = 9;
65const kPFix_eSP: u8 = 12;
66const kPFix_SPofSP: u8 = 15;
67const kPFix_sSP: u8 = 20;
68const kPFix_DOT: u8 = 23;
69const kPFix_SPandSP: u8 = 25;
70const kPFix_SPinSP: u8 = 31;
71const kPFix_DQUOT: u8 = 36;
72const kPFix_SPtoSP: u8 = 38;
73const kPFix_DQUOTGT: u8 = 43;
74const kPFix_NEWLINE: u8 = 46;
75const kPFix_DOTSP: u8 = 48;
76const kPFix_CLOSEBR: u8 = 51;
77const kPFix_SPforSP: u8 = 53;
78const kPFix_SPaSP: u8 = 59;
79const kPFix_SPthatSP: u8 = 63;
80const kPFix_SQUOT: u8 = 70;
81const kPFix_SPwithSP: u8 = 72;
82const kPFix_SPfromSP: u8 = 79;
83const kPFix_SPbySP: u8 = 86;
84const kPFix_OPEN: u8 = 91;
85const kPFix_DOTSPTheSP: u8 = 93;
86const kPFix_SPonSP: u8 = 100;
87const kPFix_SPasSP: u8 = 105;
88const kPFix_SPisSP: u8 = 110;
89const kPFix_ingSP: u8 = 115;
90const kPFix_NEWLINETAB: u8 = 120;
91const kPFix_COLON: u8 = 123;
92const kPFix_edSP: u8 = 125;
93const kPFix_EQDQUOT: u8 = 129;
94const kPFix_SPatSP: u8 = 132;
95const kPFix_lySP: u8 = 137;
96const kPFix_COMMA: u8 = 141;
97const kPFix_EQSQUOT: u8 = 143;
98const kPFix_DOTcomSLASH: u8 = 146;
99const kPFix_DOTSPThisSP: u8 = 152;
100const kPFix_SPnotSP: u8 = 160;
101const kPFix_erSP: u8 = 166;
102const kPFix_alSP: u8 = 170;
103const kPFix_fulSP: u8 = 174;
104const kPFix_iveSP: u8 = 179;
105const kPFix_lessSP: u8 = 184;
106const kPFix_estSP: u8 = 190;
107const kPFix_izeSP: u8 = 195;
108const kPFix_NBSP: u8 = 200;
109const kPFix_ousSP: u8 = 203;
110
111pub const kNumTransforms: i32 = 121;
112pub const kTransforms: [Transform; kNumTransforms as usize] = [Transform {
113 prefix_id: kPFix_EMPTY,
114 transform: kIdentity,
115 suffix_id: kPFix_EMPTY,
116 },
117 Transform {
118 prefix_id: kPFix_EMPTY,
119 transform: kIdentity,
120 suffix_id: kPFix_SP,
121 },
122 Transform {
123 prefix_id: kPFix_SP,
124 transform: kIdentity,
125 suffix_id: kPFix_SP,
126 },
127 Transform {
128 prefix_id: kPFix_EMPTY,
129 transform: kOmitFirst1,
130 suffix_id: kPFix_EMPTY,
131 },
132 Transform {
133 prefix_id: kPFix_EMPTY,
134 transform: kUppercaseFirst,
135 suffix_id: kPFix_SP,
136 },
137 Transform {
138 prefix_id: kPFix_EMPTY,
139 transform: kIdentity,
140 suffix_id: kPFix_SPtheSP,
141 },
142 Transform {
143 prefix_id: kPFix_SP,
144 transform: kIdentity,
145 suffix_id: kPFix_EMPTY,
146 },
147 Transform {
148 prefix_id: kPFix_sSP,
149 transform: kIdentity,
150 suffix_id: kPFix_SP,
151 },
152 Transform {
153 prefix_id: kPFix_EMPTY,
154 transform: kIdentity,
155 suffix_id: kPFix_SPofSP,
156 },
157 Transform {
158 prefix_id: kPFix_EMPTY,
159 transform: kUppercaseFirst,
160 suffix_id: kPFix_EMPTY,
161 },
162 Transform {
163 prefix_id: kPFix_EMPTY,
164 transform: kIdentity,
165 suffix_id: kPFix_SPandSP,
166 },
167 Transform {
168 prefix_id: kPFix_EMPTY,
169 transform: kOmitFirst2,
170 suffix_id: kPFix_EMPTY,
171 },
172 Transform {
173 prefix_id: kPFix_EMPTY,
174 transform: kOmitLast1,
175 suffix_id: kPFix_EMPTY,
176 },
177 Transform {
178 prefix_id: kPFix_COMMASP,
179 transform: kIdentity,
180 suffix_id: kPFix_SP,
181 },
182 Transform {
183 prefix_id: kPFix_EMPTY,
184 transform: kIdentity,
185 suffix_id: kPFix_COMMASP,
186 },
187 Transform {
188 prefix_id: kPFix_SP,
189 transform: kUppercaseFirst,
190 suffix_id: kPFix_SP,
191 },
192 Transform {
193 prefix_id: kPFix_EMPTY,
194 transform: kIdentity,
195 suffix_id: kPFix_SPinSP,
196 },
197 Transform {
198 prefix_id: kPFix_EMPTY,
199 transform: kIdentity,
200 suffix_id: kPFix_SPtoSP,
201 },
202 Transform {
203 prefix_id: kPFix_eSP,
204 transform: kIdentity,
205 suffix_id: kPFix_SP,
206 },
207 Transform {
208 prefix_id: kPFix_EMPTY,
209 transform: kIdentity,
210 suffix_id: kPFix_DQUOT,
211 },
212 Transform {
213 prefix_id: kPFix_EMPTY,
214 transform: kIdentity,
215 suffix_id: kPFix_DOT,
216 },
217 Transform {
218 prefix_id: kPFix_EMPTY,
219 transform: kIdentity,
220 suffix_id: kPFix_DQUOTGT,
221 },
222 Transform {
223 prefix_id: kPFix_EMPTY,
224 transform: kIdentity,
225 suffix_id: kPFix_NEWLINE,
226 },
227 Transform {
228 prefix_id: kPFix_EMPTY,
229 transform: kOmitLast3,
230 suffix_id: kPFix_EMPTY,
231 },
232 Transform {
233 prefix_id: kPFix_EMPTY,
234 transform: kIdentity,
235 suffix_id: kPFix_CLOSEBR,
236 },
237 Transform {
238 prefix_id: kPFix_EMPTY,
239 transform: kIdentity,
240 suffix_id: kPFix_SPforSP,
241 },
242 Transform {
243 prefix_id: kPFix_EMPTY,
244 transform: kOmitFirst3,
245 suffix_id: kPFix_EMPTY,
246 },
247 Transform {
248 prefix_id: kPFix_EMPTY,
249 transform: kOmitLast2,
250 suffix_id: kPFix_EMPTY,
251 },
252 Transform {
253 prefix_id: kPFix_EMPTY,
254 transform: kIdentity,
255 suffix_id: kPFix_SPaSP,
256 },
257 Transform {
258 prefix_id: kPFix_EMPTY,
259 transform: kIdentity,
260 suffix_id: kPFix_SPthatSP,
261 },
262 Transform {
263 prefix_id: kPFix_SP,
264 transform: kUppercaseFirst,
265 suffix_id: kPFix_EMPTY,
266 },
267 Transform {
268 prefix_id: kPFix_EMPTY,
269 transform: kIdentity,
270 suffix_id: kPFix_DOTSP,
271 },
272 Transform {
273 prefix_id: kPFix_DOT,
274 transform: kIdentity,
275 suffix_id: kPFix_EMPTY,
276 },
277 Transform {
278 prefix_id: kPFix_SP,
279 transform: kIdentity,
280 suffix_id: kPFix_COMMASP,
281 },
282 Transform {
283 prefix_id: kPFix_EMPTY,
284 transform: kOmitFirst4,
285 suffix_id: kPFix_EMPTY,
286 },
287 Transform {
288 prefix_id: kPFix_EMPTY,
289 transform: kIdentity,
290 suffix_id: kPFix_SPwithSP,
291 },
292 Transform {
293 prefix_id: kPFix_EMPTY,
294 transform: kIdentity,
295 suffix_id: kPFix_SQUOT,
296 },
297 Transform {
298 prefix_id: kPFix_EMPTY,
299 transform: kIdentity,
300 suffix_id: kPFix_SPfromSP,
301 },
302 Transform {
303 prefix_id: kPFix_EMPTY,
304 transform: kIdentity,
305 suffix_id: kPFix_SPbySP,
306 },
307 Transform {
308 prefix_id: kPFix_EMPTY,
309 transform: kOmitFirst5,
310 suffix_id: kPFix_EMPTY,
311 },
312 Transform {
313 prefix_id: kPFix_EMPTY,
314 transform: kOmitFirst6,
315 suffix_id: kPFix_EMPTY,
316 },
317 Transform {
318 prefix_id: kPFix_SPtheSP,
319 transform: kIdentity,
320 suffix_id: kPFix_EMPTY,
321 },
322 Transform {
323 prefix_id: kPFix_EMPTY,
324 transform: kOmitLast4,
325 suffix_id: kPFix_EMPTY,
326 },
327 Transform {
328 prefix_id: kPFix_EMPTY,
329 transform: kIdentity,
330 suffix_id: kPFix_DOTSPTheSP,
331 },
332 Transform {
333 prefix_id: kPFix_EMPTY,
334 transform: kUppercaseAll,
335 suffix_id: kPFix_EMPTY,
336 },
337 Transform {
338 prefix_id: kPFix_EMPTY,
339 transform: kIdentity,
340 suffix_id: kPFix_SPonSP,
341 },
342 Transform {
343 prefix_id: kPFix_EMPTY,
344 transform: kIdentity,
345 suffix_id: kPFix_SPasSP,
346 },
347 Transform {
348 prefix_id: kPFix_EMPTY,
349 transform: kIdentity,
350 suffix_id: kPFix_SPisSP,
351 },
352 Transform {
353 prefix_id: kPFix_EMPTY,
354 transform: kOmitLast7,
355 suffix_id: kPFix_EMPTY,
356 },
357 Transform {
358 prefix_id: kPFix_EMPTY,
359 transform: kOmitLast1,
360 suffix_id: kPFix_ingSP,
361 },
362 Transform {
363 prefix_id: kPFix_EMPTY,
364 transform: kIdentity,
365 suffix_id: kPFix_NEWLINETAB,
366 },
367 Transform {
368 prefix_id: kPFix_EMPTY,
369 transform: kIdentity,
370 suffix_id: kPFix_COLON,
371 },
372 Transform {
373 prefix_id: kPFix_SP,
374 transform: kIdentity,
375 suffix_id: kPFix_DOTSP,
376 },
377 Transform {
378 prefix_id: kPFix_EMPTY,
379 transform: kIdentity,
380 suffix_id: kPFix_edSP,
381 },
382 Transform {
383 prefix_id: kPFix_EMPTY,
384 transform: kOmitFirst9,
385 suffix_id: kPFix_EMPTY,
386 },
387 Transform {
388 prefix_id: kPFix_EMPTY,
389 transform: kOmitFirst7,
390 suffix_id: kPFix_EMPTY,
391 },
392 Transform {
393 prefix_id: kPFix_EMPTY,
394 transform: kOmitLast6,
395 suffix_id: kPFix_EMPTY,
396 },
397 Transform {
398 prefix_id: kPFix_EMPTY,
399 transform: kIdentity,
400 suffix_id: kPFix_OPEN,
401 },
402 Transform {
403 prefix_id: kPFix_EMPTY,
404 transform: kUppercaseFirst,
405 suffix_id: kPFix_COMMASP,
406 },
407 Transform {
408 prefix_id: kPFix_EMPTY,
409 transform: kOmitLast8,
410 suffix_id: kPFix_EMPTY,
411 },
412 Transform {
413 prefix_id: kPFix_EMPTY,
414 transform: kIdentity,
415 suffix_id: kPFix_SPatSP,
416 },
417 Transform {
418 prefix_id: kPFix_EMPTY,
419 transform: kIdentity,
420 suffix_id: kPFix_lySP,
421 },
422 Transform {
423 prefix_id: kPFix_SPtheSP,
424 transform: kIdentity,
425 suffix_id: kPFix_SPofSP,
426 },
427 Transform {
428 prefix_id: kPFix_EMPTY,
429 transform: kOmitLast5,
430 suffix_id: kPFix_EMPTY,
431 },
432 Transform {
433 prefix_id: kPFix_EMPTY,
434 transform: kOmitLast9,
435 suffix_id: kPFix_EMPTY,
436 },
437 Transform {
438 prefix_id: kPFix_SP,
439 transform: kUppercaseFirst,
440 suffix_id: kPFix_COMMASP,
441 },
442 Transform {
443 prefix_id: kPFix_EMPTY,
444 transform: kUppercaseFirst,
445 suffix_id: kPFix_DQUOT,
446 },
447 Transform {
448 prefix_id: kPFix_DOT,
449 transform: kIdentity,
450 suffix_id: kPFix_OPEN,
451 },
452 Transform {
453 prefix_id: kPFix_EMPTY,
454 transform: kUppercaseAll,
455 suffix_id: kPFix_SP,
456 },
457 Transform {
458 prefix_id: kPFix_EMPTY,
459 transform: kUppercaseFirst,
460 suffix_id: kPFix_DQUOTGT,
461 },
462 Transform {
463 prefix_id: kPFix_EMPTY,
464 transform: kIdentity,
465 suffix_id: kPFix_EQDQUOT,
466 },
467 Transform {
468 prefix_id: kPFix_SP,
469 transform: kIdentity,
470 suffix_id: kPFix_DOT,
471 },
472 Transform {
473 prefix_id: kPFix_DOTcomSLASH,
474 transform: kIdentity,
475 suffix_id: kPFix_EMPTY,
476 },
477 Transform {
478 prefix_id: kPFix_SPtheSP,
479 transform: kIdentity,
480 suffix_id: kPFix_SPofSPtheSP,
481 },
482 Transform {
483 prefix_id: kPFix_EMPTY,
484 transform: kUppercaseFirst,
485 suffix_id: kPFix_SQUOT,
486 },
487 Transform {
488 prefix_id: kPFix_EMPTY,
489 transform: kIdentity,
490 suffix_id: kPFix_DOTSPThisSP,
491 },
492 Transform {
493 prefix_id: kPFix_EMPTY,
494 transform: kIdentity,
495 suffix_id: kPFix_COMMA,
496 },
497 Transform {
498 prefix_id: kPFix_DOT,
499 transform: kIdentity,
500 suffix_id: kPFix_SP,
501 },
502 Transform {
503 prefix_id: kPFix_EMPTY,
504 transform: kUppercaseFirst,
505 suffix_id: kPFix_OPEN,
506 },
507 Transform {
508 prefix_id: kPFix_EMPTY,
509 transform: kUppercaseFirst,
510 suffix_id: kPFix_DOT,
511 },
512 Transform {
513 prefix_id: kPFix_EMPTY,
514 transform: kIdentity,
515 suffix_id: kPFix_SPnotSP,
516 },
517 Transform {
518 prefix_id: kPFix_SP,
519 transform: kIdentity,
520 suffix_id: kPFix_EQDQUOT,
521 },
522 Transform {
523 prefix_id: kPFix_EMPTY,
524 transform: kIdentity,
525 suffix_id: kPFix_erSP,
526 },
527 Transform {
528 prefix_id: kPFix_SP,
529 transform: kUppercaseAll,
530 suffix_id: kPFix_SP,
531 },
532 Transform {
533 prefix_id: kPFix_EMPTY,
534 transform: kIdentity,
535 suffix_id: kPFix_alSP,
536 },
537 Transform {
538 prefix_id: kPFix_SP,
539 transform: kUppercaseAll,
540 suffix_id: kPFix_EMPTY,
541 },
542 Transform {
543 prefix_id: kPFix_EMPTY,
544 transform: kIdentity,
545 suffix_id: kPFix_EQSQUOT,
546 },
547 Transform {
548 prefix_id: kPFix_EMPTY,
549 transform: kUppercaseAll,
550 suffix_id: kPFix_DQUOT,
551 },
552 Transform {
553 prefix_id: kPFix_EMPTY,
554 transform: kUppercaseFirst,
555 suffix_id: kPFix_DOTSP,
556 },
557 Transform {
558 prefix_id: kPFix_SP,
559 transform: kIdentity,
560 suffix_id: kPFix_OPEN,
561 },
562 Transform {
563 prefix_id: kPFix_EMPTY,
564 transform: kIdentity,
565 suffix_id: kPFix_fulSP,
566 },
567 Transform {
568 prefix_id: kPFix_SP,
569 transform: kUppercaseFirst,
570 suffix_id: kPFix_DOTSP,
571 },
572 Transform {
573 prefix_id: kPFix_EMPTY,
574 transform: kIdentity,
575 suffix_id: kPFix_iveSP,
576 },
577 Transform {
578 prefix_id: kPFix_EMPTY,
579 transform: kIdentity,
580 suffix_id: kPFix_lessSP,
581 },
582 Transform {
583 prefix_id: kPFix_EMPTY,
584 transform: kUppercaseAll,
585 suffix_id: kPFix_SQUOT,
586 },
587 Transform {
588 prefix_id: kPFix_EMPTY,
589 transform: kIdentity,
590 suffix_id: kPFix_estSP,
591 },
592 Transform {
593 prefix_id: kPFix_SP,
594 transform: kUppercaseFirst,
595 suffix_id: kPFix_DOT,
596 },
597 Transform {
598 prefix_id: kPFix_EMPTY,
599 transform: kUppercaseAll,
600 suffix_id: kPFix_DQUOTGT,
601 },
602 Transform {
603 prefix_id: kPFix_SP,
604 transform: kIdentity,
605 suffix_id: kPFix_EQSQUOT,
606 },
607 Transform {
608 prefix_id: kPFix_EMPTY,
609 transform: kUppercaseFirst,
610 suffix_id: kPFix_COMMA,
611 },
612 Transform {
613 prefix_id: kPFix_EMPTY,
614 transform: kIdentity,
615 suffix_id: kPFix_izeSP,
616 },
617 Transform {
618 prefix_id: kPFix_EMPTY,
619 transform: kUppercaseAll,
620 suffix_id: kPFix_DOT,
621 },
622 Transform {
623 prefix_id: kPFix_NBSP,
624 transform: kIdentity,
625 suffix_id: kPFix_EMPTY,
626 },
627 Transform {
628 prefix_id: kPFix_SP,
629 transform: kIdentity,
630 suffix_id: kPFix_COMMA,
631 },
632 Transform {
633 prefix_id: kPFix_EMPTY,
634 transform: kUppercaseFirst,
635 suffix_id: kPFix_EQDQUOT,
636 },
637 Transform {
638 prefix_id: kPFix_EMPTY,
639 transform: kUppercaseAll,
640 suffix_id: kPFix_EQDQUOT,
641 },
642 Transform {
643 prefix_id: kPFix_EMPTY,
644 transform: kIdentity,
645 suffix_id: kPFix_ousSP,
646 },
647 Transform {
648 prefix_id: kPFix_EMPTY,
649 transform: kUppercaseAll,
650 suffix_id: kPFix_COMMASP,
651 },
652 Transform {
653 prefix_id: kPFix_EMPTY,
654 transform: kUppercaseFirst,
655 suffix_id: kPFix_EQSQUOT,
656 },
657 Transform {
658 prefix_id: kPFix_SP,
659 transform: kUppercaseFirst,
660 suffix_id: kPFix_COMMA,
661 },
662 Transform {
663 prefix_id: kPFix_SP,
664 transform: kUppercaseAll,
665 suffix_id: kPFix_EQDQUOT,
666 },
667 Transform {
668 prefix_id: kPFix_SP,
669 transform: kUppercaseAll,
670 suffix_id: kPFix_COMMASP,
671 },
672 Transform {
673 prefix_id: kPFix_EMPTY,
674 transform: kUppercaseAll,
675 suffix_id: kPFix_COMMA,
676 },
677 Transform {
678 prefix_id: kPFix_EMPTY,
679 transform: kUppercaseAll,
680 suffix_id: kPFix_OPEN,
681 },
682 Transform {
683 prefix_id: kPFix_EMPTY,
684 transform: kUppercaseAll,
685 suffix_id: kPFix_DOTSP,
686 },
687 Transform {
688 prefix_id: kPFix_SP,
689 transform: kUppercaseAll,
690 suffix_id: kPFix_DOT,
691 },
692 Transform {
693 prefix_id: kPFix_EMPTY,
694 transform: kUppercaseAll,
695 suffix_id: kPFix_EQSQUOT,
696 },
697 Transform {
698 prefix_id: kPFix_SP,
699 transform: kUppercaseAll,
700 suffix_id: kPFix_DOTSP,
701 },
702 Transform {
703 prefix_id: kPFix_SP,
704 transform: kUppercaseFirst,
705 suffix_id: kPFix_EQDQUOT,
706 },
707 Transform {
708 prefix_id: kPFix_SP,
709 transform: kUppercaseAll,
710 suffix_id: kPFix_EQSQUOT,
711 },
712 Transform {
713 prefix_id: kPFix_SP,
714 transform: kUppercaseFirst,
715 suffix_id: kPFix_EQSQUOT,
716 }];
717
718
719
720fn ToUpperCase(p: &mut [u8]) -> i32 {
721 if (fast!((p)[0]) < 0xc0) {
722 if (fast!((p)[0]) >= b'a' && fast!((p)[0]) <= b'z') {
723 fast_mut!((p)[0]) ^= 32;
724 }
725 return 1;
726 }
727 // An overly simplified uppercasing model for utf-8.
728 if (fast!((p)[0]) < 0xe0) {
729 fast_mut!((p)[1]) ^= 32;
730 return 2;
731 }
732 // An arbitrary transform for three byte characters.
733 fast_mut!((p)[2]) ^= 5;
734 3
735}
736
737pub fn TransformDictionaryWord(dst: &mut [u8],
738 mut word: &[u8],
739 mut len: i32,
740 transform: i32)
741 -> i32 {
742 let mut idx: i32 = 0;
743 {
744 let prefix =
745 &fast!((kPrefixSuffix)[fast_inner!((kTransforms)[transform as usize]).prefix_id as usize;]);
746 while (fast!((prefix)[idx as usize]) != 0) {
747 fast_mut!((dst)[idx as usize]) = fast!((prefix)[idx as usize]);
748 idx += 1;
749 }
750 }
751 {
752 let t = fast_ref!((kTransforms)[transform as usize]).transform;
753 let mut skip: i32 = if t < kOmitFirst1 {
754 0
755 } else {
756 t as i32 - (kOmitFirst1 - 1) as i32
757 };
758 let mut i: i32 = 0;
759 if (skip > len) {
760 skip = len;
761 }
762 word = fast!((word)[skip as usize;]);
763 len -= skip;
764 if (t <= kOmitLast9) {
765 len -= t as i32;
766 }
767 while (i < len) {
768 fast_mut!((dst)[idx as usize]) = fast!((word)[i as usize]);
769 idx += 1;
770 i += 1;
771 }
772 let uppercase = &mut fast_mut!((dst)[(idx - len) as usize ;]);
773 if (t == kUppercaseFirst) {
774 ToUpperCase(uppercase);
775 } else if (t == kUppercaseAll) {
776 let mut uppercase_offset: usize = 0;
777 while (len > 0) {
778 let step = ToUpperCase(&mut fast_mut!((uppercase)[uppercase_offset;]));
779 uppercase_offset += step as usize;
780 len -= step;
781 }
782 }
783 }
784 {
785 let suffix =
786 &fast!((kPrefixSuffix)[fast_inner!((kTransforms)[transform as usize]).suffix_id as usize ; ]);
787 let mut i: usize = 0;
788 while (fast!((suffix)[i as usize]) != 0) {
789 fast_mut!((dst)[idx as usize]) = fast!((suffix)[i]);
790 idx += 1;
791 i += 1;
792 }
793 idx
794 }
795}