OLD | NEW |
1 /* | 1 /* |
2 ****************************************************************************** | 2 ****************************************************************************** |
3 * | 3 * |
4 * Copyright (C) 1999-2013, International Business Machines | 4 * Copyright (C) 1999-2013, International Business Machines |
5 * Corporation and others. All Rights Reserved. | 5 * Corporation and others. All Rights Reserved. |
6 * | 6 * |
7 ****************************************************************************** | 7 ****************************************************************************** |
8 * file name: ubidi.c | 8 * file name: ubidi.c |
9 * encoding: US-ASCII | 9 * encoding: US-ASCII |
10 * tab size: 8 (not used) | 10 * tab size: 8 (not used) |
(...skipping 653 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
664 bracketInit(UBiDi *pBiDi, BracketData *bd) { | 664 bracketInit(UBiDi *pBiDi, BracketData *bd) { |
665 bd->pBiDi=pBiDi; | 665 bd->pBiDi=pBiDi; |
666 bd->isoRunLast=0; | 666 bd->isoRunLast=0; |
667 bd->isoRuns[0].start=0; | 667 bd->isoRuns[0].start=0; |
668 bd->isoRuns[0].limit=0; | 668 bd->isoRuns[0].limit=0; |
669 bd->isoRuns[0].level=GET_PARALEVEL(pBiDi, 0); | 669 bd->isoRuns[0].level=GET_PARALEVEL(pBiDi, 0); |
670 bd->isoRuns[0].lastStrong=bd->isoRuns[0].contextDir=GET_PARALEVEL(pBiDi, 0)&
1; | 670 bd->isoRuns[0].lastStrong=bd->isoRuns[0].contextDir=GET_PARALEVEL(pBiDi, 0)&
1; |
671 bd->isoRuns[0].lastStrongPos=bd->isoRuns[0].contextPos=0; | 671 bd->isoRuns[0].lastStrongPos=bd->isoRuns[0].contextPos=0; |
672 if(pBiDi->openingsMemory) { | 672 if(pBiDi->openingsMemory) { |
673 bd->openings=pBiDi->openingsMemory; | 673 bd->openings=pBiDi->openingsMemory; |
674 bd->openingsSize=pBiDi->openingsSize; | 674 bd->openingsCount=pBiDi->openingsSize / sizeof(Opening); |
675 } else { | 675 } else { |
676 bd->openings=bd->simpleOpenings; | 676 bd->openings=bd->simpleOpenings; |
677 bd->openingsSize=SIMPLE_OPENINGS_SIZE; | 677 bd->openingsCount=SIMPLE_OPENINGS_SIZE; |
678 } | 678 } |
679 bd->isNumbersSpecial=bd->pBiDi->reorderingMode==UBIDI_REORDER_NUMBERS_SPECIA
L || | 679 bd->isNumbersSpecial=bd->pBiDi->reorderingMode==UBIDI_REORDER_NUMBERS_SPECIA
L || |
680 bd->pBiDi->reorderingMode==UBIDI_REORDER_INVERSE_FOR_NU
MBERS_SPECIAL; | 680 bd->pBiDi->reorderingMode==UBIDI_REORDER_INVERSE_FOR_NU
MBERS_SPECIAL; |
681 } | 681 } |
682 | 682 |
683 /* paragraph boundary */ | 683 /* paragraph boundary */ |
684 static void | 684 static void |
685 bracketProcessB(BracketData *bd, UBiDiLevel level) { | 685 bracketProcessB(BracketData *bd, UBiDiLevel level) { |
686 bd->isoRunLast=0; | 686 bd->isoRunLast=0; |
687 bd->isoRuns[0].limit=0; | 687 bd->isoRuns[0].limit=0; |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
725 static void | 725 static void |
726 bracketProcessPDI(BracketData *bd) { | 726 bracketProcessPDI(BracketData *bd) { |
727 bd->isoRunLast--; | 727 bd->isoRunLast--; |
728 } | 728 } |
729 | 729 |
730 /* newly found opening bracket: create an openings entry */ | 730 /* newly found opening bracket: create an openings entry */ |
731 static UBool /* return TRUE if success */ | 731 static UBool /* return TRUE if success */ |
732 bracketAddOpening(BracketData *bd, UChar match, int32_t position) { | 732 bracketAddOpening(BracketData *bd, UChar match, int32_t position) { |
733 IsoRun *pLastIsoRun=&bd->isoRuns[bd->isoRunLast]; | 733 IsoRun *pLastIsoRun=&bd->isoRuns[bd->isoRunLast]; |
734 Opening *pOpening; | 734 Opening *pOpening; |
735 if(pLastIsoRun->limit>=bd->openingsSize) { /* no available new entry */ | 735 if(pLastIsoRun->limit>=bd->openingsCount) { /* no available new entry */ |
736 UBiDi *pBiDi=bd->pBiDi; | 736 UBiDi *pBiDi=bd->pBiDi; |
737 if(!getInitialOpeningsMemory(pBiDi, pLastIsoRun->limit * 2)) | 737 if(!getInitialOpeningsMemory(pBiDi, pLastIsoRun->limit * 2)) |
738 return FALSE; | 738 return FALSE; |
739 if(bd->openings==bd->simpleOpenings) | 739 if(bd->openings==bd->simpleOpenings) |
740 uprv_memcpy(pBiDi->openingsMemory, bd->simpleOpenings, | 740 uprv_memcpy(pBiDi->openingsMemory, bd->simpleOpenings, |
741 SIMPLE_OPENINGS_SIZE * sizeof(Opening)); | 741 SIMPLE_OPENINGS_SIZE * sizeof(Opening)); |
742 bd->openings=pBiDi->openingsMemory; /* may have changed */ | 742 bd->openings=pBiDi->openingsMemory; /* may have changed */ |
743 bd->openingsSize=pBiDi->openingsSize; | 743 bd->openingsCount=pBiDi->openingsSize / sizeof(Opening); |
744 } | 744 } |
745 pOpening=&bd->openings[pLastIsoRun->limit]; | 745 pOpening=&bd->openings[pLastIsoRun->limit]; |
746 pOpening->position=position; | 746 pOpening->position=position; |
747 pOpening->match=match; | 747 pOpening->match=match; |
748 pOpening->contextDir=pLastIsoRun->contextDir; | 748 pOpening->contextDir=pLastIsoRun->contextDir; |
749 pOpening->contextPos=pLastIsoRun->contextPos; | 749 pOpening->contextPos=pLastIsoRun->contextPos; |
750 pOpening->flags=0; | 750 pOpening->flags=0; |
751 pLastIsoRun->limit++; | 751 pLastIsoRun->limit++; |
752 return TRUE; | 752 return TRUE; |
753 } | 753 } |
(...skipping 2154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2908 if( pBiDi->fnClassCallback == NULL || | 2908 if( pBiDi->fnClassCallback == NULL || |
2909 (dir = (*pBiDi->fnClassCallback)(pBiDi->coClassCallback, c)) == U_BIDI_C
LASS_DEFAULT ) | 2909 (dir = (*pBiDi->fnClassCallback)(pBiDi->coClassCallback, c)) == U_BIDI_C
LASS_DEFAULT ) |
2910 { | 2910 { |
2911 dir = ubidi_getClass(pBiDi->bdp, c); | 2911 dir = ubidi_getClass(pBiDi->bdp, c); |
2912 } | 2912 } |
2913 if(dir >= U_CHAR_DIRECTION_COUNT) { | 2913 if(dir >= U_CHAR_DIRECTION_COUNT) { |
2914 dir = ON; | 2914 dir = ON; |
2915 } | 2915 } |
2916 return dir; | 2916 return dir; |
2917 } | 2917 } |
OLD | NEW |