Commit 56db112
committed
refactor split_str_once
Rewrite `split_str_once` to be more robust, to handle Unicode, and to return length and position information rather than modifying the source string, taking the approach also used by `str_wrap_to_width`. In combination with the new length variants of common string utility functions, this allows strings to be split without copying them. In many cases, using the old design, strings were copied multiple times per frame in numerous places.
Includes unit tests to handle numerous usual and unusual cases. All of the historical string splitting anomalies should now be fixed, including a bug in the retail algorithm where an exactly matching string followed by whitespace wasn't split properly.
A followup PR will refactor `split_str`.1 parent fddedb3 commit 56db112
10 files changed
Lines changed: 515 additions & 422 deletions
File tree
- code
- hud
- missionui
- mission
- parse
- scripting/api/libs
- test/src
- parse
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
104 | 104 | | |
105 | 105 | | |
106 | 106 | | |
107 | | - | |
108 | 107 | | |
109 | 108 | | |
110 | 109 | | |
| |||
293 | 292 | | |
294 | 293 | | |
295 | 294 | | |
296 | | - | |
297 | | - | |
298 | | - | |
299 | | - | |
300 | | - | |
301 | | - | |
302 | | - | |
303 | | - | |
304 | | - | |
305 | | - | |
306 | | - | |
307 | | - | |
308 | | - | |
309 | | - | |
310 | | - | |
311 | | - | |
312 | | - | |
313 | | - | |
314 | | - | |
315 | | - | |
316 | | - | |
317 | | - | |
318 | | - | |
319 | | - | |
320 | | - | |
321 | | - | |
322 | | - | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
323 | 309 | | |
324 | | - | |
325 | | - | |
326 | | - | |
327 | | - | |
328 | | - | |
| 310 | + | |
329 | 311 | | |
330 | 312 | | |
331 | 313 | | |
332 | | - | |
| 314 | + | |
333 | 315 | | |
334 | 316 | | |
335 | 317 | | |
336 | | - | |
| 318 | + | |
337 | 319 | | |
338 | 320 | | |
339 | 321 | | |
| |||
829 | 811 | | |
830 | 812 | | |
831 | 813 | | |
832 | | - | |
833 | 814 | | |
834 | 815 | | |
835 | | - | |
836 | | - | |
837 | | - | |
838 | | - | |
839 | | - | |
840 | | - | |
841 | | - | |
842 | | - | |
| 816 | + | |
843 | 817 | | |
| 818 | + | |
| 819 | + | |
844 | 820 | | |
845 | | - | |
846 | | - | |
847 | | - | |
848 | | - | |
849 | | - | |
850 | | - | |
851 | | - | |
852 | | - | |
853 | | - | |
854 | | - | |
855 | | - | |
856 | | - | |
857 | | - | |
858 | | - | |
859 | | - | |
860 | | - | |
861 | | - | |
862 | 821 | | |
863 | | - | |
864 | | - | |
865 | | - | |
866 | | - | |
867 | | - | |
868 | | - | |
| 822 | + | |
| 823 | + | |
| 824 | + | |
| 825 | + | |
| 826 | + | |
| 827 | + | |
| 828 | + | |
| 829 | + | |
| 830 | + | |
| 831 | + | |
| 832 | + | |
| 833 | + | |
| 834 | + | |
| 835 | + | |
| 836 | + | |
| 837 | + | |
| 838 | + | |
| 839 | + | |
| 840 | + | |
| 841 | + | |
| 842 | + | |
| 843 | + | |
869 | 844 | | |
870 | 845 | | |
871 | 846 | | |
872 | 847 | | |
873 | 848 | | |
874 | 849 | | |
875 | | - | |
876 | 850 | | |
877 | 851 | | |
878 | 852 | | |
| |||
1050 | 1024 | | |
1051 | 1025 | | |
1052 | 1026 | | |
1053 | | - | |
1054 | | - | |
| 1027 | + | |
1055 | 1028 | | |
1056 | 1029 | | |
1057 | 1030 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
120 | 120 | | |
121 | 121 | | |
122 | 122 | | |
123 | | - | |
| 123 | + | |
124 | 124 | | |
125 | 125 | | |
126 | 126 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
437 | 437 | | |
438 | 438 | | |
439 | 439 | | |
440 | | - | |
| 440 | + | |
441 | 441 | | |
442 | 442 | | |
443 | | - | |
| 443 | + | |
444 | 444 | | |
445 | 445 | | |
446 | 446 | | |
447 | 447 | | |
448 | 448 | | |
449 | 449 | | |
450 | | - | |
| 450 | + | |
451 | 451 | | |
452 | | - | |
453 | | - | |
454 | | - | |
455 | | - | |
456 | | - | |
457 | | - | |
| 452 | + | |
458 | 453 | | |
459 | 454 | | |
460 | | - | |
| 455 | + | |
461 | 456 | | |
462 | | - | |
| 457 | + | |
463 | 458 | | |
464 | 459 | | |
465 | 460 | | |
466 | | - | |
467 | | - | |
468 | | - | |
469 | | - | |
470 | | - | |
471 | | - | |
472 | | - | |
473 | | - | |
474 | 461 | | |
475 | 462 | | |
476 | 463 | | |
477 | 464 | | |
478 | 465 | | |
479 | 466 | | |
480 | | - | |
481 | | - | |
| 467 | + | |
| 468 | + | |
| 469 | + | |
| 470 | + | |
482 | 471 | | |
483 | 472 | | |
484 | | - | |
485 | | - | |
| 473 | + | |
| 474 | + | |
486 | 475 | | |
487 | | - | |
488 | | - | |
489 | | - | |
490 | | - | |
491 | | - | |
492 | | - | |
493 | | - | |
494 | | - | |
495 | | - | |
496 | | - | |
497 | | - | |
498 | | - | |
499 | | - | |
500 | | - | |
501 | | - | |
502 | | - | |
503 | | - | |
504 | | - | |
| 476 | + | |
| 477 | + | |
| 478 | + | |
| 479 | + | |
| 480 | + | |
| 481 | + | |
| 482 | + | |
| 483 | + | |
| 484 | + | |
| 485 | + | |
| 486 | + | |
| 487 | + | |
| 488 | + | |
| 489 | + | |
| 490 | + | |
| 491 | + | |
505 | 492 | | |
506 | 493 | | |
507 | 494 | | |
508 | 495 | | |
509 | 496 | | |
510 | | - | |
| 497 | + | |
511 | 498 | | |
512 | 499 | | |
| 500 | + | |
| 501 | + | |
| 502 | + | |
| 503 | + | |
513 | 504 | | |
514 | | - | |
| 505 | + | |
515 | 506 | | |
516 | 507 | | |
517 | | - | |
518 | | - | |
519 | | - | |
520 | 508 | | |
521 | 509 | | |
522 | 510 | | |
| |||
691 | 679 | | |
692 | 680 | | |
693 | 681 | | |
694 | | - | |
695 | | - | |
| 682 | + | |
696 | 683 | | |
697 | 684 | | |
698 | 685 | | |
| |||
701 | 688 | | |
702 | 689 | | |
703 | 690 | | |
704 | | - | |
705 | | - | |
| 691 | + | |
706 | 692 | | |
707 | 693 | | |
708 | 694 | | |
| |||
0 commit comments