Mercurial > mm7
annotate mm7text_ru.cpp @ 1674:2a5f2aaec367
Слияние
author | Ritor1 |
---|---|
date | Thu, 19 Sep 2013 09:29:30 +0600 |
parents | c4ab816fcc5e |
children | d28d3c006077 |
rev | line source |
---|---|
1165
29a8defbad9e
temporary _CRT_SECURE_NO_WARNINGS to remove some warnings
Grumpy7
parents:
809
diff
changeset
|
1 #ifdef _MSC_VER |
29a8defbad9e
temporary _CRT_SECURE_NO_WARNINGS to remove some warnings
Grumpy7
parents:
809
diff
changeset
|
2 #define _CRT_SECURE_NO_WARNINGS |
29a8defbad9e
temporary _CRT_SECURE_NO_WARNINGS to remove some warnings
Grumpy7
parents:
809
diff
changeset
|
3 #endif |
29a8defbad9e
temporary _CRT_SECURE_NO_WARNINGS to remove some warnings
Grumpy7
parents:
809
diff
changeset
|
4 |
246 | 5 #include <string.h> |
6 #include <stdlib.h> | |
7 #include <stdio.h> | |
8 | |
9 #include "Log.h" | |
1545 | 10 #include "ErrorHandling.h" |
246 | 11 |
12 | |
13 struct GenderTableEntry | |
14 { | |
15 const char *name; | |
16 int gender; | |
17 } gender_table_caps[] = | |
18 { | |
19 {"", 0}, | |
20 {"", 0}, | |
21 {"", 0}, | |
22 {"", 0}, | |
23 {"", 1}, | |
24 {"", 0}, | |
25 {"", 0}, | |
26 {"", 0}, | |
27 {"", 0}, | |
28 {"", 0}, | |
29 {"", 0}, | |
30 {"", 0}, | |
255 | 31 {"", 1}, |
246 | 32 {"", 0}, |
33 {"", 0}, | |
34 {"", 1}, | |
35 {"", 0}, | |
36 {"", 0}, | |
37 {"", 0}, | |
38 {"", 0}, | |
39 {"", 1}, | |
40 {"", 1}, | |
41 {"", 0}, | |
42 {"", 1}, | |
43 {"", 0}, | |
44 {"", 0}, | |
45 {"", 1}, | |
46 {"", 0}, | |
47 {"", 1}, | |
48 {"", 1}, | |
49 {"", 1}, | |
50 {"", 0}, | |
51 {"", 0}, | |
52 {"", 0}, | |
53 {"", 0}, | |
54 {"", 0}, | |
55 {"", 1}, | |
56 {"", 0}, | |
57 {"", 0}, | |
58 {"", 0}, | |
59 {"", 0}, | |
60 {"", 0}, | |
61 {"", 0}, | |
62 {"", 0}, | |
63 {"", 0}, | |
64 {"", 0}, | |
65 {"", 0}, | |
66 {"", 0}, | |
67 {"", 0}, | |
68 {"", 0}, | |
69 {"", 0}, | |
70 {"", 0}, | |
71 {"", 0}, | |
72 {"", 0}, | |
73 {"", 0}, | |
74 {"", 1}, | |
75 {"", 0}, | |
76 {"", 0}, | |
77 {"", 0}, | |
78 {"", 1}, | |
79 {"", 1}, | |
80 {"", 1}, | |
81 {"", 1}, | |
82 {"", 0}, | |
83 {"", 0}, | |
84 {"", 0}, | |
85 {"", 0}, | |
86 {"", 0}, | |
87 {"", 0}, | |
88 {"", 0}, | |
89 {"", 1}, | |
90 {"", 0}, | |
91 {"", 0}, | |
92 {"", 1}, | |
93 {"", 0}, | |
94 {"", 0}, | |
95 {"", 0}, | |
96 {"", 1}, | |
97 {"", 1}, | |
98 {"", 1}, | |
99 {"", 0}, | |
100 {"", 1}, | |
101 {"", 0}, | |
102 {"", 0}, | |
103 {"", 0}, | |
104 {"", 0}, | |
105 {"", 0}, | |
106 {"", 0}, | |
107 {"", 0}, | |
108 {"", 0}, | |
109 {"", 0}, | |
110 {"", 0}, | |
111 {"", 1}, | |
112 {"", 0}, | |
113 {"", 0}, | |
114 {"", 0}, | |
115 {"", 0}, | |
116 {"", 0}, | |
117 {"", 0}, | |
118 {"", 1}, | |
119 {"", 0}, | |
120 {"", 0}, | |
121 {"", 0}, | |
122 {"", 0}, | |
123 {"", 0}, | |
124 {"", 0}, | |
125 {"", 0}, | |
126 {"", 0}, | |
127 {"", 0}, | |
128 {"", 0}, | |
129 {"", 0}, | |
130 {"", 0}, | |
131 {"", 0}, | |
132 {"", 0}, | |
133 {"", 0}, | |
134 {"", 1}, | |
135 {"", 0}, | |
136 {"", 1}, | |
137 {"", 1}, | |
138 {"", 1}, | |
139 {"", 0}, | |
140 {"", 0}, | |
141 {"", 0}, | |
142 {"", 0}, | |
143 {"", 1}, | |
144 {"", 1}, | |
145 {"", 0}, | |
146 {"", 0}, | |
147 {"", 1}, | |
148 {"", 1}, | |
149 {"", 0}, | |
150 {"", 0}, | |
151 {"", 1}, | |
152 {"", 1}, | |
153 {"", 0}, | |
154 {"", 0}, | |
155 {"", 1}, | |
156 {"", 0}, | |
157 {"", 0}, | |
158 {"", 0}, | |
159 {"", 1}, | |
160 {"", 0}, | |
161 {"", 0}, | |
162 {"", 0}, | |
163 {"", 0}, | |
164 {"", 0}, | |
165 {"", 1}, | |
166 {"", 0}, | |
167 {"", 1}, | |
168 {"", 0}, | |
169 {"", 0}, | |
170 {"", 0}, | |
171 {"", 0}, | |
172 {"", 2}, | |
173 {"", 1}, | |
174 {"", 0}, | |
175 {"", 0}, | |
176 {"", 0}, | |
177 {"", 0}, | |
178 {"", 1}, | |
179 {"", 0}, | |
180 {"", 0}, | |
181 {"", 1}, | |
182 {"", 0}, | |
183 {"", 0}, | |
184 {"", 0}, | |
185 {"", 0}, | |
186 {"", 0}, | |
187 {"", 0}, | |
188 {"", 1}, | |
189 {"", 0}, | |
190 {"", 1}, | |
191 {"", 1}, | |
192 {"", 0}, | |
193 {"", 1}, | |
194 {"", 0}, | |
195 {"", 0}, | |
196 {"", 1}, | |
197 {"", 0}, | |
198 {"", 1}, | |
199 {"", 0}, | |
200 {"", 0}, | |
201 {"", 0}, | |
202 {"", 1}, | |
203 {"", 0}, | |
204 {"", 1}, | |
205 {"", 1}, | |
206 {"", 0}, | |
207 {"", 0}, | |
208 {"", 0}, | |
209 {"", 2}, | |
210 {"", 0}, | |
211 {"", 1}, | |
212 {"", 0}, | |
213 {"", 1}, | |
214 {"", 0}, | |
215 {"", 0}, | |
216 {"", 0}, | |
217 {"", 0}, | |
218 {"", 0}, | |
219 {"", 0}, | |
220 {"", 0}, | |
221 {"", 0}, | |
222 {"", 0}, | |
223 {"", 0}, | |
224 {"", 0}, | |
225 {"", 0}, | |
226 {"", 0}, | |
227 {"", 0}, | |
228 {"", 0}, | |
229 {"", 0}, | |
230 {"", 1}, | |
231 {"", 0}, | |
232 {"", 0}, | |
233 {"", 0}, | |
234 {"", 0}, | |
235 {"", 1}, | |
236 {"", 0}, | |
237 {"", 0}, | |
238 {"", 0}, | |
239 {"", 1}, | |
240 {"", 0}, | |
241 {"", 0}, | |
242 {"", 1}, | |
243 {"", 1}, | |
244 {"", 0}, | |
245 {"", 1}, | |
246 {"", 0}, | |
247 {"", 1}, | |
248 {"", 0}, | |
249 {"", 0}, | |
250 {"", 1}, | |
251 {"", 1}, | |
252 {"", 1}, | |
253 {"", 0}, | |
254 {"", 0}, | |
255 {"", 0}, | |
256 {"", 0}, | |
257 {"", 1}, | |
258 {"", 1}, | |
259 {"", 0}, | |
260 {"", 0}, | |
261 {"", 2}, | |
262 {"", 0}, | |
263 {"", 0}, | |
264 {"", 1}, | |
265 {"", 0}, | |
266 {"", 0}, | |
267 {"", 0}, | |
268 {"", 0}, | |
269 {"", 0}, | |
270 {"", 0}, | |
271 {"", 1}, | |
272 {"", 0}, | |
273 {"", 0}, | |
274 {"", 1}, | |
275 {"", 0}, | |
276 {"", 1}, | |
277 {"", 1}, | |
278 {"", 0}, | |
279 {"", 1}, | |
280 {"", 0}, | |
281 {"", 0}, | |
282 {"", 0}, | |
283 {"", 0}, | |
284 {"", 1}, | |
285 {"", 1}, | |
286 {"", 0}, | |
287 {"", 0}, | |
288 {"", 1}, | |
289 {"", 1}, | |
290 {"", 1}, | |
291 {"", 1}, | |
292 {"", 0}, | |
293 {"", 2}, | |
294 {"", 1}, | |
295 {"", 1}, | |
296 {"", 1}, | |
297 {"", 0}, | |
298 {"", 0}, | |
299 {"", 1}, | |
300 {"", 1}, | |
301 {"", 0}, | |
302 {"", 0}, | |
303 {"", 0}, | |
304 {"", 0}, | |
305 {"", 0}, | |
306 {"", 0}, | |
307 {"", 0}, | |
308 {"", 1}, | |
309 {"", 1}, | |
310 {"", 1}, | |
311 {"", 1}, | |
312 {"", 1}, | |
313 {"", 0}, | |
314 {"", 0}, | |
315 {"", 0}, | |
316 {"", 0}, | |
317 {"", 0}, | |
318 {"", 1}, | |
319 {"", 0}, | |
320 {"", 0}, | |
321 {"", 0}, | |
322 {"", 1}, | |
323 {"", 0}, | |
324 {"", 1}, | |
325 {"", 0}, | |
326 {"", 1}, | |
327 {"", 1}, | |
328 {"", 1}, | |
329 {"", 1}, | |
330 {"", 1}, | |
331 {"", 2}, | |
332 {"", 0}, | |
333 {"", 0}, | |
334 {"", 0}, | |
335 {"", 0}, | |
336 {"", 0}, | |
337 {"", 0}, | |
338 {"", 0}, | |
339 {"", 0}, | |
340 {"", 0}, | |
341 {"", 0}, | |
342 {"", 0}, | |
343 {"", 1}, | |
344 {"", 0}, | |
345 {"", 1}, | |
346 {"-", 0}, | |
347 {"-", 0}, | |
348 {"", 1}, | |
349 {"", 1}, | |
350 {"", 1}, | |
351 {"", 1}, | |
352 {"", 1}, | |
353 {"", 1}, | |
354 {"", 1}, | |
355 {"", 1}, | |
356 {"", 1}, | |
357 {"", 0}, | |
358 {"", 0}, | |
359 {"", 0}, | |
360 {"", 0}, | |
361 {"", 0}, | |
362 {"", 2}, | |
363 {"", 0}, | |
364 {"", 0}, | |
365 {"", 0}, | |
366 {"", 0}, | |
367 {"", 0}, | |
368 {"", 0}, | |
369 {"", 2}, | |
370 {"", 0}, | |
371 {"", 0}, | |
372 {"", 0}, | |
373 {"", 0}, | |
374 {"", 0}, | |
375 {"", 0}, | |
376 {"", 0}, | |
377 {"", 0}, | |
378 {"", 1}, | |
379 {"", 0}, | |
380 {"", 0}, | |
381 {"", 1}, | |
382 {"", 0}, | |
383 {"", 0}, | |
384 {"", 0}, | |
385 {"", 0}, | |
386 {"", 1}, | |
387 {"", 0}, | |
388 {"", 2}, | |
389 {"", 0}, | |
390 {"", 1}, | |
391 {"", 0}, | |
392 {"", 0}, | |
393 {"", 0}, | |
394 {"", 0}, | |
395 {"", 0}, | |
396 {"", 1}, | |
397 {"", 1}, | |
398 {"", 1}, | |
399 {"", 1}, | |
400 {"", 0}, | |
401 {"", 0}, | |
402 {"", 0}, | |
403 {"", 0}, | |
404 {"", 0}, | |
405 {"", 0}, | |
406 {"", 0}, | |
407 {"", 1}, | |
408 {"", 0}, | |
409 {"", 1}, | |
410 {"", 0}, | |
411 {"", 1}, | |
412 {"", 0}, | |
413 {"", 0}, | |
414 {"", 0}, | |
415 {"", 1}, | |
416 {"", 0}, | |
417 {"", 0}, | |
418 {"", 0}, | |
419 {"", 1}, | |
420 {"", 0}, | |
421 {"", 1}, | |
422 {"", 1}, | |
423 {"", 1}, | |
424 {"", 1}, | |
425 {"", 0}, | |
426 {"", 0}, | |
427 {"", 0}, | |
428 {"", 0}, | |
429 {"", 0}, | |
430 {"", 1}, | |
431 {"", 0}, | |
432 {"", 0}, | |
433 {"", 1}, | |
434 {"", 0}, | |
435 {"", 0}, | |
436 {"", 1}, | |
437 {"", 0}, | |
438 {"", 0}, | |
439 {"", 1}, | |
440 {"", 1}, | |
441 {"", 0}, | |
442 {"", 0}, | |
443 {"", 0}, | |
444 {"", 0}, | |
445 {"", 0}, | |
446 {"", 0}, | |
447 {"", 0}, | |
448 {"", 0}, | |
449 {"", 1}, | |
450 {"", 0}, | |
451 {"", 0}, | |
452 {"", 1}, | |
453 {"", 1}, | |
454 {"", 0}, | |
455 {"", 0}, | |
456 {"", 0}, | |
457 {"", 1}, | |
458 {"", 2}, | |
459 {"", 1}, | |
460 {"", 0}, | |
461 {"", 0}, | |
462 {"", 0}, | |
463 {"", 0}, | |
464 {"", 1}, | |
465 {"", 0}, | |
466 {"", 1}, | |
467 {"", 0}, | |
468 {"", 0}, | |
469 {"", 1}, | |
470 {"", 0}, | |
471 {"", 0}, | |
472 {"", 0}, | |
473 {"", 1}, | |
474 {"", 1}, | |
475 {"", 1}, | |
476 {"", 1}, | |
477 {"", 0}, | |
478 {"", 0}, | |
479 {"", 0}, | |
480 {"", 0}, | |
481 {"", 0}, | |
482 {"", 1}, | |
483 {"", 1}, | |
484 {"", 1}, | |
485 {"", 0}, | |
486 {"", 0}, | |
487 {"", 0}, | |
488 {"", 1}, | |
489 {"", 1}, | |
490 {"", 1}, | |
491 {"", 1}, | |
492 {"", 1}, | |
493 {"", 1}, | |
494 {"", 0}, | |
495 {"", 0}, | |
496 {"", 1}, | |
497 {"", 0}, | |
498 {"", 0}, | |
499 {"", 0}, | |
500 {"", 1}, | |
501 {"", 0}, | |
502 {"", 1}, | |
503 {"", 0}, | |
504 {"", 0}, | |
505 {"", 1}, | |
506 {"", 1}, | |
507 {"", 1}, | |
508 {"", 1}, | |
509 {"", 0}, | |
510 {"", 0}, | |
511 {"", 0}, | |
512 {"", 1}, | |
513 {"", 0}, | |
514 {"", 1}, | |
515 {"", 0}, | |
516 {"", 1}, | |
517 {"", 0}, | |
518 {"", 1}, | |
519 {"", 0}, | |
520 {"", 1}, | |
521 {"", 1}, | |
522 {"", 1}, | |
523 {"", 0}, | |
524 {"", 1}, | |
525 {"", 0}, | |
526 {"", 1}, | |
527 {"", 0}, | |
528 {"", 0}, | |
529 {"", 1}, | |
530 {"", 0}, | |
531 {"", 0}, | |
532 {"", 0}, | |
533 {"", 0}, | |
534 {"", 0}, | |
535 {"", 2}, | |
536 {"", 0}, | |
537 {"", 0}, | |
538 {"", 1}, | |
539 {"", 0}, | |
540 {"", 1}, | |
541 {"", 1}, | |
542 {"", 0}, | |
543 {"", 0}, | |
544 {"", 0}, | |
545 {"", 0}, | |
546 {"", 0}, | |
547 {"", 1}, | |
548 {"", 0}, | |
549 {"", 1}, | |
550 {"", 0}, | |
551 {"", 0}, | |
552 {"", 0}, | |
553 {"", 0}, | |
554 {"", 1}, | |
555 {"", 0}, | |
556 {"", 1}, | |
557 {"", 0}, | |
558 {"", 0}, | |
559 {"", 0}, | |
560 {"", 0}, | |
561 {"", 0}, | |
562 {"", 0}, | |
563 {"", 0}, | |
564 {"", 0}, | |
565 {"", 0}, | |
566 {"", 1}, | |
567 {"", 0}, | |
568 {"", 1}, | |
569 {"", 0}, | |
570 {"", 0}, | |
571 {"", 1}, | |
572 {"", 1}, | |
573 {"", 1}, | |
574 {"", 1}, | |
575 {"", 1}, | |
576 {"", 0}, | |
577 {"", 0}, | |
578 {"", 1}, | |
579 {"", 1}, | |
580 {"", 1}, | |
581 {"", 1}, | |
582 {"", 0}, | |
583 {"", 0}, | |
584 {"", 0}, | |
585 {"", 0}, | |
586 {"", 1}, | |
587 {"", 0}, | |
588 {"", 1}, | |
589 {"", 1}, | |
590 {"", 1}, | |
591 {"", 1}, | |
592 {"", 1}, | |
593 {"", 0}, | |
594 {"", 0}, | |
595 {"", 0}, | |
596 {"", 1}, | |
597 {"", 0}, | |
598 {"", 0}, | |
599 {"", 0}, | |
600 {"", 2}, | |
601 {"", 0}, | |
602 {"", 0}, | |
603 {"", 0}, | |
604 {"", 1}, | |
605 {"", 1}, | |
606 {"", 1}, | |
607 {"", 0}, | |
608 {"", 1}, | |
609 {"", 1}, | |
610 {"", 2}, | |
611 {"", 1}, | |
612 {"", 0}, | |
613 {"", 0}, | |
614 {"", 1}, | |
615 {"", 0}, | |
616 {"", 0}, | |
617 {"", 1}, | |
618 {"", 2}, | |
619 {"", 1}, | |
620 {"", 1}, | |
621 {"", 1}, | |
622 {"", 0}, | |
623 {"", 1}, | |
624 {"", 0}, | |
625 {"", 1}, | |
626 {"", 0}, | |
627 {"", 1}, | |
628 {"", 0}, | |
629 {"", 0}, | |
630 {"", 1}, | |
631 {"", 0}, | |
632 {"", 0}, | |
633 {"", 0}, | |
634 {"", 1}, | |
635 {"", 0}, | |
636 {"", 0}, | |
637 {"", 1}, | |
638 {"", 1}, | |
639 {"", 1}, | |
640 {"", 1}, | |
641 {"", 1}, | |
642 {"", 0}, | |
643 {"", 1}, | |
644 {"", 0}, | |
645 {"", 1}, | |
646 {"", 1}, | |
647 {"", 0}, | |
648 {"", 0}, | |
649 {"", 1}, | |
650 {"", 1}, | |
651 {"", 0}, | |
652 {"", 0}, | |
653 {"", 0}, | |
654 {"", 0}, | |
655 {"", 0}, | |
656 {"", 1}, | |
657 {"", 0}, | |
658 {"", 0}, | |
659 {"", 1}, | |
660 {"", 0}, | |
661 {"", 0}, | |
662 {"", 0}, | |
663 {"", 1}, | |
664 {"", 0}, | |
665 {"", 1}, | |
666 {"", 0}, | |
667 {"", 0}, | |
668 {"", 0}, | |
669 {"", 0}, | |
670 {"", 1}, | |
671 {"", 1}, | |
672 {"", 1}, | |
673 {"", 0}, | |
674 {"", 0}, | |
675 {"", 0}, | |
676 {"", 1}, | |
677 {"", 0}, | |
678 {"", 0}, | |
679 {"", 0}, | |
680 {"", 0}, | |
681 {"", 0}, | |
682 {"", 0}, | |
683 {"", 0}, | |
684 {"", 1}, | |
685 {"", 1}, | |
686 {"", 0}, | |
687 {"", 1}, | |
688 {"", 0}, | |
689 {"", 1}, | |
690 {"", 1}, | |
691 {"", 1}, | |
692 {"", 1}, | |
693 {"", 1}, | |
694 {"", 0}, | |
695 {"", 0}, | |
696 {"", 0}, | |
697 {"", 0}, | |
698 {"", 1}, | |
699 {"", 0}, | |
700 {"", 0}, | |
701 {"", 0}, | |
702 {"", 2}, | |
703 {"", 0}, | |
704 {"", 0}, | |
705 {"", 0}, | |
706 {"", 0}, | |
707 {"", 0}, | |
708 {"", 0}, | |
709 {"", 0}, | |
710 {"", 0}, | |
711 {"", 2}, | |
712 {"", 0}, | |
713 {"", 0}, | |
714 {"", 2}, | |
715 {"", 0}, | |
716 {"", 0}, | |
717 {"", 1}, | |
718 {"", 0}, | |
719 {"", 0}, | |
720 {"", 0}, | |
721 {"", 0}, | |
722 {"", 0}, | |
723 {"", 0}, | |
724 {"", 0}, | |
725 {"", 0}, | |
726 {"", 0}, | |
727 {"", 0}, | |
728 {"", 1}, | |
729 {"", 0}, | |
730 {"", 0}, | |
731 {"", 1}, | |
732 {"", 1}, | |
733 {"", 1}, | |
734 {"", 0}, | |
735 {"", 1}, | |
736 {"", 0}, | |
737 {"", 0}, | |
738 {"", 0}, | |
739 {"", 1}, | |
740 {"", 0}, | |
741 {"", 1}, | |
742 {"", 0}, | |
743 {"", 0}, | |
744 {"", 0}, | |
745 {"", 1}, | |
746 {"", 0}, | |
747 {"", 0}, | |
748 {"", 0}, | |
749 {"", 0}, | |
750 {"", 1}, | |
751 {"", 0}, | |
752 {"", 0}, | |
255 | 753 {"", 0}, |
246 | 754 {"", 0}, |
755 {"", 1}, | |
756 {"", 1}, | |
757 {"", 1}, | |
758 {"", 1}, | |
759 {"", 1}, | |
760 {"", 1}, | |
761 {"", 0}, | |
762 {"", 0}, | |
763 {"", 0}, | |
764 {"", 1}, | |
765 {"", 0}, | |
766 {"", 0}, | |
767 {"", 1}, | |
768 {"", 0}, | |
769 {"", 0}, | |
770 {"", 1}, | |
771 {"", 1}, | |
772 {"", 1}, | |
773 {"", 0}, | |
774 {"", 0}, | |
775 {"", 1}, | |
776 {"", 1}, | |
777 {"", 0}, | |
778 {"", 0}, | |
779 {"", 0}, | |
780 {"", 1}, | |
781 {"", 1}, | |
782 {"", 0}, | |
783 {"", 1}, | |
784 {"", 0}, | |
785 {"", 0}, | |
786 {"", 0}, | |
787 {"", 1}, | |
788 {"", 0}, | |
789 {"", 0}, | |
790 {"", 1}, | |
791 {"", 0}, | |
792 {"", 0}, | |
793 {"", 1}, | |
794 {"", 0}, | |
795 {"", 2}, | |
796 {"", 1}, | |
797 {"", 0}, | |
798 {"", 0}, | |
799 {"", 0}, | |
800 {"", 0}, | |
801 {"", 1}, | |
802 {"", 1}, | |
803 {"", 0}, | |
255 | 804 {"", 1}, |
246 | 805 {"", 0}, |
806 {"", 0}, | |
807 {"", 0}, | |
808 {"", 0}, | |
809 {"", 0}, | |
810 {"", 1}, | |
811 {"", 0}, | |
812 {"", 1}, | |
813 {"", 1}, | |
814 {"", 1}, | |
815 {"", 0}, | |
816 {"", 1}, | |
817 {"", 0}, | |
818 {"", 0}, | |
819 {"", 1}, | |
820 {"", 0}, | |
821 {"", 0}, | |
822 {"", 0}, | |
823 {"", 1}, | |
824 {"", 0}, | |
825 {"", 0}, | |
826 {"", 2}, | |
827 {"", 0}, | |
828 {"", 0}, | |
829 {"", 0}, | |
830 {"", 1}, | |
831 {"", 0}, | |
832 {"", 0}, | |
833 {"", 1}, | |
834 {"", 0}, | |
835 {"", 0}, | |
836 {"", 1}, | |
837 {"", 0}, | |
838 {"", 0}, | |
839 {"", 0}, | |
840 {"", 0}, | |
841 {"", 0}, | |
842 {"", 0}, | |
843 {"", 0}, | |
844 {"", 1}, | |
845 {"", 0}, | |
846 {"", 0}, | |
847 {"", 0}, | |
848 {"", 1}, | |
849 {"", 1}, | |
850 {"", 0}, | |
851 {"", 1}, | |
852 {"", 1}, | |
853 {"", 1}, | |
854 {"", 1}, | |
855 {"", 0}, | |
856 {"", 0}, | |
857 {"", 0}, | |
858 {"", 0}, | |
859 {"", 1}, | |
860 {"", 1}, | |
861 {"", 1}, | |
862 {"", 1}, | |
863 {"", 0}, | |
864 {"", 0}, | |
865 {"", 1}, | |
866 {"", 1}, | |
867 {"", 0}, | |
868 {"", 1}, | |
869 {"", 0}, | |
870 {"", 0}, | |
871 {"", 1}, | |
872 {"", 1}, | |
873 {"", 0}, | |
874 {"", 0}, | |
875 {"", 0}, | |
876 {"", 0}, | |
877 {"", 0}, | |
878 {"", 0}, | |
366 | 879 {"", 0}, |
246 | 880 {"", 0}, |
651 | 881 {"", 0}, |
246 | 882 {"", 1}, |
883 {"", 0}, | |
884 {"", 0}, | |
885 {"", 1}, | |
886 {"", 0}, | |
887 {"", 1}, | |
888 {"", 0}, | |
889 {"", 0}, | |
890 {"", 0}, | |
891 {"", 0}, | |
892 {"", 0}, | |
893 {"", 0}, | |
894 {"", 1}, | |
895 {"", 1}, | |
896 {"", 0}, | |
897 {"", 0}, | |
898 {"", 0}, | |
899 {"", 1}, | |
900 {"", 0}, | |
901 {"", 0}, | |
902 {"", 0}, | |
903 {"", 0}, | |
904 {"", 0}, | |
905 {"", 0}, | |
906 {"", 0}, | |
907 {"", 0}, | |
908 {"", 0}, | |
909 {"", 1}, | |
910 {"", 0}, | |
911 {"", 1}, | |
912 {"", 0}, | |
913 {"", 0}, | |
914 {"", 0}, | |
915 {"", 1}, | |
916 {"", 1}, | |
917 {"", 0}, | |
918 {"", 0}, | |
919 {"", 1}, | |
920 {"", 1}, | |
921 {"", 0}, | |
922 {"", 0}, | |
923 {"", 0}, | |
924 {"", 0}, | |
925 {"", 0}, | |
926 {"", 1}, | |
927 {"", 0}, | |
928 {"", 0}, | |
929 {"", 0}, | |
930 {"", 0}, | |
931 {"", 1}, | |
932 {"", 0}, | |
933 {"", 0}, | |
934 {"", 0}, | |
935 {"", 0}, | |
936 {"", 0}, | |
937 {"", 0}, | |
938 {"", 1}, | |
939 {"", 0}, | |
940 {"", 0}, | |
941 {"", 0}, | |
942 {"", 0}, | |
943 {"", 1}, | |
944 {"", 1}, | |
945 {"", 0}, | |
946 {"", 1}, | |
947 {"", 0}, | |
948 {"", 1}, | |
949 {"", 0}, | |
950 {"", 0}, | |
951 {"", 0}, | |
952 {"", 1}, | |
953 {"", 0}, | |
954 {"", 2}, | |
955 {"", 0}, | |
956 {"", 0}, | |
957 {"", 0}, | |
958 {"", 0}, | |
959 {"", 0}, | |
960 {"", 0}, | |
961 {"", 0}, | |
962 {"", 1}, | |
963 {"", 0}, | |
964 {"", 0}, | |
965 {"", 0}, | |
966 {"", 1}, | |
967 {"", 0}, | |
968 {"", 0}, | |
969 {"", 0}, | |
970 {"", 0}, | |
971 {"", 0}, | |
972 {"", 1}, | |
973 {"", 0}, | |
974 {"", 0}, | |
975 {"", 0}, | |
976 {"", 0}, | |
977 {"", 0}, | |
978 {"", 2}, | |
979 {"", 0}, | |
980 {"", 1}, | |
981 {"", 1}, | |
982 {"", 1}, | |
983 {"", 0}, | |
984 {"", 0}, | |
985 {"", 1}, | |
986 {"", 1}, | |
987 {"", 0}, | |
988 {"", 1}, | |
989 {"", 0}, | |
990 {"", 1}, | |
991 {"", 1}, | |
992 {"", 0}, | |
993 {"", 1}, | |
994 {"", 0}, | |
995 {"", 1}, | |
996 {"", 0}, | |
997 {"", 1}, | |
998 {"", 1}, | |
999 {"", 1}, | |
1000 {"", 0}, | |
1001 {"", 1}, | |
1002 {"", 0}, | |
1003 {"", 0}, | |
1004 {"", 0}, | |
1005 {"", 0}, | |
1006 {"", 1}, | |
1007 {"", 0}, | |
1008 {"", 1}, | |
1009 {"", 0}, | |
1010 {"", 1}, | |
1011 {"", 1}, | |
1012 {"", 1}, | |
1013 {"", 0}, | |
1014 {"", 0}, | |
1015 {"", 0}, | |
1016 {"", 1}, | |
1017 {"", 1}, | |
1018 {"", 0}, | |
1019 {"", 1}, | |
1020 {"", 1}, | |
1021 {"", 0}, | |
1022 {"", 1}, | |
1023 {"", 1}, | |
1024 {"", 1}, | |
1025 {"", 0}, | |
1026 {"", 0}, | |
1027 {"", 1}, | |
1028 {"", 0}, | |
1029 {"", 1}, | |
1030 {"", 0}, | |
1031 {"", 0}, | |
1032 {"", 1}, | |
1033 {"", 0}, | |
1034 {"", 1}, | |
1035 {"", 2}, | |
1036 {"", 0}, | |
1037 {"", 0}, | |
1038 {"", 0}, | |
1039 {"", 1}, | |
1040 {"", 0}, | |
1041 {"", 0}, | |
1042 {"", 0}, | |
1043 {"", 0}, | |
1044 {"", 0}, | |
1045 {"", 0}, | |
1046 {"", 1}, | |
1047 {"", 0}, | |
1048 {"", 0}, | |
1049 {"", 1}, | |
1050 {"", 0}, | |
1051 {"", 0}, | |
1052 {"", 0}, | |
1053 {"", 0}, | |
1054 {"", 0}, | |
1055 {"", 0}, | |
1056 {"", 0} | |
1057 }, | |
1058 gender_table[] = | |
1059 { | |
1060 {"", 0}, {"", 1}, {"", 0}, {"", 1}, {"", 0}, {"", 0}, {"", 1}, {"", 1}, {"", 0}, {"", 0}, {"", 1}, | |
1061 {"", 0}, {"", 0}, {"", 1}, {"", 0}, {"", 0}, {"", 1}, {"", 1}, {"", 0}, {"", 1}, {"", 0}, {"", 0}, | |
1062 {"", 0}, {"", 0}, {"", 0}, {"", 1}, {"", 0}, {"", 0}, {"", 1}, {"", 0}, {"", 0}, {"", 1}, {"", 1}, | |
1063 {"", 0}, {"", 1}, {"", 0}, {"", 1}, {"", 0}, {"", 0}, {"", 0}, {"", 0}, {"", 0}, {"", 1}, {"", 0}, | |
1064 {"", 1}, {"", 0}, {"", 0}, {"", 0}, {"", 1}, {"", 1}, {"", 0}, {"", 0}, {"", 0}, {"", 0}, {"", 1}, | |
1065 {"", 0}, {"", 0}, {"", 0}, {"", 0}, {"", 0}, {"", 0}, {"", 0}, {"", 0}, {"", 0}, {"", 0}, {"", 0}, | |
1066 {"", 0}, {"", 2}, {"", 1}, {"", 0} | |
1067 }; | |
1068 | |
1069 | |
1070 | |
1071 #include <mbstring.h> | |
1072 | |
1073 int GetGender(char *ansi_name, int name_len) | |
1074 { | |
1075 auto name = (unsigned char *)ansi_name; | |
1076 | |
1077 GenderTableEntry *table = nullptr; | |
1078 unsigned int table_size = 0; | |
1079 if (name[0] >= (unsigned char)'' && name[0] <= (unsigned char)'') | |
1080 { | |
1081 table = gender_table; | |
1082 table_size = sizeof(gender_table) / sizeof(*gender_table); | |
1083 } | |
1084 else if (name[0] >= (unsigned char)'' && name[0] <= (unsigned char)'') | |
1085 { | |
1086 table = gender_table_caps; | |
1087 table_size = sizeof(gender_table_caps) / sizeof(*gender_table_caps); | |
1088 } | |
1089 else return 0; | |
1090 | |
1091 int left = 0, | |
1092 right = table_size - 1, | |
1093 match = 0; | |
255 | 1094 while (left < right - 1) |
246 | 1095 { |
1096 match = left + (right - left) / 2; | |
250 | 1097 int rval = _mbsncmp(name, (unsigned char *)table[match].name, name_len); |
1098 if (rval < 0) | |
1099 right = match; | |
1100 else if (!rval) | |
1101 return table[match].gender; | |
1102 else | |
1103 left = match; | |
246 | 1104 } |
303 | 1105 |
1106 Log::Warning(L"sprintfex: unknown gender: %S", name); | |
246 | 1107 return 0; |
1108 } | |
1109 | |
1110 | |
1111 bool IsSpecialName(const char *ansi_name) | |
1112 { | |
1113 auto name = (unsigned char *)ansi_name; | |
1114 return !_mbsncmp(name, (unsigned char *)" ", 8) || !_mbsncmp(name, (unsigned char *)" ", 6) || | |
1115 !_mbsncmp(name, (unsigned char *)" ", 14) || !_mbsncmp(name, (unsigned char *)" ", 12); | |
1116 } | |
1117 int GetSpecialGender(const char *ansi_name) | |
1118 { | |
1119 auto name = (unsigned char *)ansi_name; | |
1120 if (!_mbsncmp(name, (unsigned char *)" ", 8)) | |
1121 return 1; | |
1122 if (!_mbsncmp(name, (unsigned char *)" ", 6)) | |
1123 return 1; | |
1124 if (!_mbsncmp(name, (unsigned char *)" ", 14)) | |
1125 return 1; | |
1126 if (!!_mbsncmp(name, (unsigned char *)" ", 12)) | |
1127 return 0; | |
1128 return 0; | |
1129 } | |
1130 const char *GetSpecialCase(const char *ansi_name, char c) | |
1131 { | |
1132 auto name = (unsigned char *)ansi_name; | |
1133 | |
1134 if (!_mbsncmp(name, (unsigned char *)" ", 8)) | |
1135 return " "; | |
1136 if (!_mbsncmp(name, (unsigned char *)" ", 6)) | |
1137 return " "; | |
1138 | |
1139 if (!_mbsncmp(name, (unsigned char *)" ", 14)) | |
1140 switch (c) | |
1141 { | |
1142 case 'I': case 'i': return " "; | |
1143 case 'R': case 'r': return " "; | |
1144 case 'D': case 'd': return " "; | |
1145 case 'V': case 'v': return " "; | |
1146 case 'T': case 't': return " "; | |
1147 case 'P': case 'p': return " "; | |
1148 } | |
1149 | |
1150 if (!_mbsncmp(name, (unsigned char *)" ", 12)) | |
1151 switch (c) | |
1152 { | |
1153 case 'I': case 'i': return " "; | |
1154 case 'R': case 'r': return " "; | |
1155 case 'D': case 'd': return " "; | |
1156 case 'V': case 'v': return " "; | |
1157 case 'T': case 't': return " "; | |
1158 case 'P': case 'p': return " "; | |
1159 } | |
1160 | |
1161 return nullptr; | |
1162 } | |
1163 | |
1545 | 1164 int sprintfex_internal(char *str) |
246 | 1165 { |
1166 auto p = strstr(str, "^"); | |
1167 if (!p) | |
1168 return strlen(str); | |
1169 | |
1170 char buf[8192]; | |
1545 | 1171 Assert(strlen(str) < sizeof(buf)); |
246 | 1172 |
648 | 1173 int next_integer_token = 0; |
649 | 1174 bool integer_tokens_defined[10] = {false, false, false, false, false, false, false, false, false, false}; |
1175 int integer_tokens[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; | |
246 | 1176 |
1177 bool gender_token_defined = false; | |
1178 int gender_token = 0; | |
1179 | |
1180 auto src = buf, | |
1181 dst = p; | |
1182 strcpy(buf, str + (p - str)); | |
1183 while (true) | |
1184 { | |
1185 switch (src[1]) | |
1186 { | |
1187 case 'I': | |
1188 { | |
1189 if (src[2] != '[') | |
1190 goto _invalid_token; | |
1191 src += 3; // ^I[ | |
649 | 1192 |
1545 | 1193 Assert(next_integer_token < 10); |
648 | 1194 if (sscanf(src, "%d", &integer_tokens[next_integer_token])) |
1195 integer_tokens_defined[next_integer_token++] = true; | |
246 | 1196 |
1197 auto int_begin = src; | |
1198 while (*src++ != ']'); | |
1199 | |
1200 int int_len = src - int_begin - 1; | |
1201 strncpy(dst, int_begin, int_len); | |
1202 dst += int_len; | |
1203 } | |
1204 break; | |
1205 | |
1206 case 'L': | |
1207 { | |
648 | 1208 int integer_token_idx = 0; |
1209 if (src[2] >= '1' && src[2] <= '9') | |
1210 { | |
1211 if (src[3] != '[') | |
1212 goto _invalid_token; | |
1213 integer_token_idx = src[2] - '1'; | |
1214 | |
1215 src += 1; | |
1216 } | |
1217 else if (src[2] != '[') | |
246 | 1218 goto _invalid_token; |
648 | 1219 |
1545 | 1220 Assert(integer_tokens_defined[integer_token_idx]); |
246 | 1221 src += 3; // ^L[ |
1222 | |
1223 auto ending1 = src; | |
1224 while (*src++ != ';'); | |
1225 auto ending2 = src; | |
1226 while (*src++ != ';'); | |
1227 auto ending3 = src; | |
1228 while (*src++ != ']'); | |
1229 | |
1230 char *actual_ending = nullptr; | |
1231 int actual_ending_len = 0; | |
1232 | |
648 | 1233 int modulo = abs(integer_tokens[integer_token_idx]) % 10; |
246 | 1234 if (modulo == 1) |
1235 { | |
1236 actual_ending = ending1; | |
1237 actual_ending_len = ending2 - ending1 - 1; | |
1238 } | |
1239 else if (modulo >= 2 && modulo <= 4) | |
1240 { | |
1241 actual_ending = ending2; | |
1242 actual_ending_len = ending3 - ending2 - 1; | |
1243 } | |
1244 else | |
1245 { | |
1246 actual_ending = ending3; | |
1247 actual_ending_len = src - ending3 - 1; | |
1248 } | |
1249 | |
1250 strncpy(dst, actual_ending, actual_ending_len); | |
1251 dst += actual_ending_len; | |
1252 } | |
1253 break; | |
1254 | |
1255 case 'R': | |
1256 { | |
1257 if (src[2] != '[') | |
1258 goto _invalid_token; | |
1545 | 1259 Assert(gender_token_defined); |
246 | 1260 |
1261 src += 3; // ^R[ | |
1262 | |
1263 auto ending1 = src; | |
1264 while (*src++ != ';'); | |
1265 auto ending2 = src; | |
1266 while (*src++ != ';'); | |
1267 auto ending3 = src; | |
1268 while (*src++ != ']'); | |
1269 | |
1270 char *actual_ending = nullptr; | |
1271 int actual_ending_len = 0; | |
1272 | |
1273 if (gender_token == 0) | |
1274 { | |
1275 actual_ending = ending1; | |
1276 actual_ending_len = ending2 - ending1 - 1; | |
1277 } | |
1278 else if (gender_token == 1) | |
1279 { | |
1280 actual_ending = ending2; | |
1281 actual_ending_len = ending3 - ending2 - 1; | |
1282 } | |
1283 else if (gender_token == 2) | |
1284 { | |
1285 actual_ending = ending3; | |
1286 actual_ending_len = src - ending3 - 1; | |
1287 } | |
1545 | 1288 else Error("Invalid gender token"); |
246 | 1289 |
1290 strncpy(dst, actual_ending, actual_ending_len); | |
1291 dst += actual_ending_len; | |
1292 } | |
1293 break; | |
1294 | |
1295 case 'P': | |
1296 { | |
1297 if (src[3] != '[') | |
1298 goto _invalid_token; | |
1299 switch (src[2]) | |
1300 { | |
1301 case 'I': case 'i': | |
1302 case 'R': case 'r': | |
1303 case 'D': case 'd': | |
1304 case 'V': case 'v': | |
1305 case 'T': case 't': | |
1306 case 'P': case 'p': break; | |
1307 default: | |
1308 goto _invalid_token; | |
1309 } | |
1310 | |
1311 if (IsSpecialName(src + 4)) | |
1312 { | |
1313 auto name = GetSpecialCase(src + 4, src[2]); | |
1314 int name_len = strlen(name); | |
1315 | |
1316 gender_token = GetSpecialGender(src + 4); | |
1317 gender_token_defined = true; | |
1318 | |
1319 strncpy(dst, name, name_len); | |
1320 dst += name_len; | |
1321 while (*src++ != ']'); | |
1322 break; | |
1323 } | |
1324 | |
1325 auto name_begin = src + 4; | |
1326 int name_len = 0; | |
1327 for (int i = 0; name_begin[i] != ']'; ++i) | |
1328 name_len++; | |
1329 gender_token = GetGender(name_begin, name_len); | |
1330 gender_token_defined = true; | |
1331 | |
1332 switch (src[2]) | |
1333 { | |
1334 case 'I': case 'i': | |
809 | 1335 case 'V': case 'v': |
1336 case 'R': case 'r': | |
1337 case 'D': case 'd': | |
1338 case 'T': case 't': | |
246 | 1339 { |
1340 strncpy(dst, name_begin, name_len); | |
1341 dst += name_len; | |
1342 } | |
1343 break; | |
1344 | |
1345 case 'P': case 'p': | |
1346 { | |
1347 auto token_begin = src; | |
651 | 1348 int token_len = 1; |
246 | 1349 for (int i = 0; token_begin[i] != ']'; ++i) |
1350 token_len++; | |
1351 strncpy(dst, token_begin, token_len); | |
1352 dst += token_len; | |
1353 } | |
1354 } | |
1355 while (*src++ != ']'); | |
1356 } | |
1357 break; | |
1358 | |
1359 default: | |
1360 { | |
1361 _invalid_token: | |
1362 auto token_begin = src; | |
1363 while (*src++ != ']'); | |
1364 | |
1365 int token_len = src - token_begin; | |
1366 char token[1024]; | |
1367 strncpy(token, token_begin, token_len); | |
1368 token[token_len] = 0; | |
1369 | |
1545 | 1370 Error("Invalid format token: %s", token); |
246 | 1371 } |
1372 break; | |
1373 } | |
1374 | |
1375 *dst = 0; | |
1376 | |
1377 auto copy_begin = src; | |
1378 src = strstr(src, "^"); | |
1379 if (!src) | |
1380 { | |
1381 strcpy(dst, copy_begin); // just copy the rest | |
1382 break; | |
1383 } | |
1384 | |
1385 int copy_len = src - copy_begin; | |
1386 strncpy(dst, copy_begin, copy_len); | |
1387 dst += copy_len; | |
1388 } | |
1389 | |
1390 return dst - str; | |
1391 } | |
1392 | |
1393 | |
1394 | |
1395 | |
1396 | |
1397 | |
1398 //mm6text.non -> c structure array | |
1399 /*FILE *f = fopen("_1.txt", "w+t"); | |
1400 FILE *in = fopen("mm6text.non", "rt"); | |
1401 fscanf(in, "%*[^\n]\n"); | |
1402 | |
1403 int idx = 0; | |
1404 auto pairs = new NameGender[8000]; | |
1405 | |
1406 char line[1024]; | |
1407 while (fscanf(in, "%[^\n]\n", line) && !feof(in)) | |
1408 { | |
1409 char name1[100], name2[100], name3[100]; | |
1410 int e = sscanf(line, "%s\t%s\t%s", pairs[idx].name, pairs[idx + 1].name, pairs[idx + 2].name); | |
1411 pairs[idx].gender = 0; | |
1412 pairs[idx+1].gender = 1; | |
1413 pairs[idx+2].gender = 2; | |
1414 idx += e; | |
1415 } | |
1416 | |
1417 for (int i = 0; i < idx; ++i) | |
1418 for (int j = 0; j < i; ++j) | |
1419 { | |
1420 if (_mbsicmp(pairs[i].name, pairs[j].name) < 0) | |
1421 { | |
1422 char n[1024]; | |
1423 strcpy(n, (char *)pairs[j].name); | |
1424 auto g = pairs[j].gender; | |
1425 | |
1426 strcpy((char *)pairs[j].name, (char *)pairs[i].name); | |
1427 pairs[j].gender = pairs[i].gender; | |
1428 | |
1429 strcpy((char *)pairs[i].name, n); | |
1430 pairs[i].gender = g; | |
1431 } | |
1432 } | |
1433 | |
1434 for (int i = 0; i < idx; ++i) | |
1435 { | |
1436 fprintf(f, " {\"%s\", %u},\n", pairs[i].name, pairs[i].gender); | |
1437 } | |
1438 fclose(f);*/ |