Lines Matching refs:pBiDi
127 UBiDi *pBiDi; in ubidi_openSized() local
138 pBiDi=(UBiDi *)uprv_malloc(sizeof(UBiDi)); in ubidi_openSized()
139 if(pBiDi==NULL) { in ubidi_openSized()
145 uprv_memset(pBiDi, 0, sizeof(UBiDi)); in ubidi_openSized()
148 pBiDi->bdp=ubidi_getSingleton(); in ubidi_openSized()
152 if( !getInitialDirPropsMemory(pBiDi, maxLength) || in ubidi_openSized()
153 !getInitialLevelsMemory(pBiDi, maxLength) in ubidi_openSized()
158 pBiDi->mayAllocateText=TRUE; in ubidi_openSized()
164 pBiDi->runsSize=sizeof(Run); in ubidi_openSized()
165 } else if(!getInitialRunsMemory(pBiDi, maxRunCount)) { in ubidi_openSized()
169 pBiDi->mayAllocateRuns=TRUE; in ubidi_openSized()
173 return pBiDi; in ubidi_openSized()
175 ubidi_close(pBiDi); in ubidi_openSized()
233 ubidi_close(UBiDi *pBiDi) { in ubidi_close() argument
234 if(pBiDi!=NULL) { in ubidi_close()
235 pBiDi->pParaBiDi=NULL; /* in case one tries to reuse this block */ in ubidi_close()
236 if(pBiDi->dirPropsMemory!=NULL) { in ubidi_close()
237 uprv_free(pBiDi->dirPropsMemory); in ubidi_close()
239 if(pBiDi->levelsMemory!=NULL) { in ubidi_close()
240 uprv_free(pBiDi->levelsMemory); in ubidi_close()
242 if(pBiDi->runsMemory!=NULL) { in ubidi_close()
243 uprv_free(pBiDi->runsMemory); in ubidi_close()
245 if(pBiDi->parasMemory!=NULL) { in ubidi_close()
246 uprv_free(pBiDi->parasMemory); in ubidi_close()
248 if(pBiDi->insertPoints.points!=NULL) { in ubidi_close()
249 uprv_free(pBiDi->insertPoints.points); in ubidi_close()
252 uprv_free(pBiDi); in ubidi_close()
259 ubidi_setInverse(UBiDi *pBiDi, UBool isInverse) { in ubidi_setInverse() argument
260 if(pBiDi!=NULL) { in ubidi_setInverse()
261 pBiDi->isInverse=isInverse; in ubidi_setInverse()
262 pBiDi->reorderingMode = isInverse ? UBIDI_REORDER_INVERSE_NUMBERS_AS_L in ubidi_setInverse()
268 ubidi_isInverse(UBiDi *pBiDi) { in ubidi_isInverse() argument
269 if(pBiDi!=NULL) { in ubidi_isInverse()
270 return pBiDi->isInverse; in ubidi_isInverse()
292 ubidi_setReorderingMode(UBiDi *pBiDi, UBiDiReorderingMode reorderingMode) { in ubidi_setReorderingMode() argument
293 if ((pBiDi!=NULL) && (reorderingMode >= UBIDI_REORDER_DEFAULT) in ubidi_setReorderingMode()
295 pBiDi->reorderingMode = reorderingMode; in ubidi_setReorderingMode()
296 pBiDi->isInverse = (UBool)(reorderingMode == UBIDI_REORDER_INVERSE_NUMBERS_AS_L); in ubidi_setReorderingMode()
301 ubidi_getReorderingMode(UBiDi *pBiDi) { in ubidi_getReorderingMode() argument
302 if (pBiDi!=NULL) { in ubidi_getReorderingMode()
303 return pBiDi->reorderingMode; in ubidi_getReorderingMode()
310 ubidi_setReorderingOptions(UBiDi *pBiDi, uint32_t reorderingOptions) { in ubidi_setReorderingOptions() argument
314 if (pBiDi!=NULL) { in ubidi_setReorderingOptions()
315 pBiDi->reorderingOptions=reorderingOptions; in ubidi_setReorderingOptions()
320 ubidi_getReorderingOptions(UBiDi *pBiDi) { in ubidi_getReorderingOptions() argument
321 if (pBiDi!=NULL) { in ubidi_getReorderingOptions()
322 return pBiDi->reorderingOptions; in ubidi_getReorderingOptions()
359 firstL_R_AL(UBiDi *pBiDi) { in firstL_R_AL() argument
361 const UChar *text=pBiDi->prologue; in firstL_R_AL()
362 int32_t length=pBiDi->proLength; in firstL_R_AL()
369 dirProp=(DirProp)ubidi_getCustomizedClass(pBiDi, uchar); in firstL_R_AL()
389 getDirProps(UBiDi *pBiDi) { in getDirProps() argument
390 const UChar *text=pBiDi->text; in getDirProps()
391 DirProp *dirProps=pBiDi->dirPropsMemory; /* pBiDi->dirProps is const */ in getDirProps()
393 int32_t i=0, i1, length=pBiDi->originalLength; in getDirProps()
397 UBool isDefaultLevel=IS_DEFAULT_LEVEL(pBiDi->paraLevel); in getDirProps()
401 (pBiDi->reorderingMode==UBIDI_REORDER_INVERSE_LIKE_DIRECT || in getDirProps()
402 pBiDi->reorderingMode==UBIDI_REORDER_INVERSE_FOR_NUMBERS_SPECIAL); in getDirProps()
405 UBool removeBiDiControls = (UBool)(pBiDi->reorderingOptions & in getDirProps()
420 if(pBiDi->reorderingOptions & UBIDI_OPTION_STREAMING) { in getDirProps()
421 pBiDi->length=0; in getDirProps()
426 paraDirDefault=pBiDi->paraLevel&1 ? CONTEXT_RTL : 0; in getDirProps()
427 if(pBiDi->proLength>0 && in getDirProps()
428 (lastStrong=firstL_R_AL(pBiDi))!=ON) { in getDirProps()
449 flags|=DIRPROP_FLAG(dirProp=(DirProp)ubidi_getCustomizedClass(pBiDi, uchar)); in getDirProps()
489 if(pBiDi->reorderingOptions & UBIDI_OPTION_STREAMING) { in getDirProps()
490 pBiDi->length=i; /* i is index to next character */ in getDirProps()
499 pBiDi->paraCount++; in getDirProps()
519 pBiDi->paraLevel=GET_PARALEVEL(pBiDi, 0); in getDirProps()
521 if(pBiDi->reorderingOptions & UBIDI_OPTION_STREAMING) { in getDirProps()
522 if((lastStrongLTR>pBiDi->length) && in getDirProps()
523 (GET_PARALEVEL(pBiDi, lastStrongLTR)==0)) { in getDirProps()
524 pBiDi->length = lastStrongLTR; in getDirProps()
526 if(pBiDi->length<pBiDi->originalLength) { in getDirProps()
527 pBiDi->paraCount--; in getDirProps()
532 flags|=DIRPROP_FLAG_LR(pBiDi->paraLevel); in getDirProps()
534 if(pBiDi->orderParagraphsLTR && (flags&DIRPROP_FLAG(B))) { in getDirProps()
538 pBiDi->controlCount = controlCount; in getDirProps()
539 pBiDi->flags=flags; in getDirProps()
540 pBiDi->lastArabicPos=lastArabicPos; in getDirProps()
547 directionFromFlags(UBiDi *pBiDi) { in directionFromFlags() argument
548 Flags flags=pBiDi->flags; in directionFromFlags()
612 resolveExplicitLevels(UBiDi *pBiDi) { in resolveExplicitLevels() argument
613 const DirProp *dirProps=pBiDi->dirProps; in resolveExplicitLevels()
614 UBiDiLevel *levels=pBiDi->levels; in resolveExplicitLevels()
615 const UChar *text=pBiDi->text; in resolveExplicitLevels()
617 int32_t i=0, length=pBiDi->length; in resolveExplicitLevels()
618 Flags flags=pBiDi->flags; /* collect all directionalities in the text */ in resolveExplicitLevels()
620 UBiDiLevel level=GET_PARALEVEL(pBiDi, 0); in resolveExplicitLevels()
626 direction=directionFromFlags(pBiDi); in resolveExplicitLevels()
630 if((direction!=UBIDI_MIXED) && (pBiDi->paraCount==1)) { in resolveExplicitLevels()
632 } else if((pBiDi->paraCount==1) && in resolveExplicitLevels()
634 (pBiDi->reorderingMode > UBIDI_REORDER_LAST_LOGICAL_TO_VISUAL))) { in resolveExplicitLevels()
719 level=GET_PARALEVEL(pBiDi, i); in resolveExplicitLevels()
721 embeddingLevel=GET_PARALEVEL(pBiDi, i+1); in resolveExplicitLevels()
723 pBiDi->paras[paraIndex++]=i+1; in resolveExplicitLevels()
756 flags|=DIRPROP_FLAG_LR(pBiDi->paraLevel); in resolveExplicitLevels()
758 if(pBiDi->orderParagraphsLTR && (flags&DIRPROP_FLAG(B))) { in resolveExplicitLevels()
765 pBiDi->flags=flags; in resolveExplicitLevels()
766 direction=directionFromFlags(pBiDi); in resolveExplicitLevels()
783 checkExplicitLevels(UBiDi *pBiDi, UErrorCode *pErrorCode) { in checkExplicitLevels() argument
784 const DirProp *dirProps=pBiDi->dirProps; in checkExplicitLevels()
786 UBiDiLevel *levels=pBiDi->levels; in checkExplicitLevels()
787 const UChar *text=pBiDi->text; in checkExplicitLevels()
789 int32_t i, length=pBiDi->length; in checkExplicitLevels()
805 if((level<GET_PARALEVEL(pBiDi, i) && in checkExplicitLevels()
814 pBiDi->paras[paraIndex++]=i+1; in checkExplicitLevels()
819 flags|=DIRPROP_FLAG_LR(pBiDi->paraLevel); in checkExplicitLevels()
823 pBiDi->flags=flags; in checkExplicitLevels()
824 return directionFromFlags(pBiDi); in checkExplicitLevels()
1193 addPoint(UBiDi *pBiDi, int32_t pos, int32_t flag) in addPoint() argument
1200 InsertPoints * pInsertPoints=&(pBiDi->insertPoints); in addPoint()
1248 processPropertySeq(UBiDi *pBiDi, LevState *pLevState, uint8_t _prop, in processPropertySeq() argument
1253 UBiDiLevel * levels=pBiDi->levels; in processPropertySeq()
1278 addPoint(pBiDi, pLevState->startL2EN, LRM_BEFORE); in processPropertySeq()
1282 pInsertPoints=&(pBiDi->insertPoints); in processPropertySeq()
1295 addPoint(pBiDi, start0, LRM_BEFORE); in processPropertySeq()
1311 addPoint(pBiDi, start0, LRM_BEFORE); in processPropertySeq()
1318 pInsertPoints=&(pBiDi->insertPoints); in processPropertySeq()
1329 if ((_prop == DirProp_AN) && (NO_CONTEXT_RTL(pBiDi->dirProps[start0]) == AN) && in processPropertySeq()
1330 (pBiDi->reorderingMode!=UBIDI_REORDER_INVERSE_FOR_NUMBERS_SPECIAL)) in processPropertySeq()
1341 addPoint(pBiDi, pLevState->startL2EN, LRM_BEFORE); in processPropertySeq()
1345 addPoint(pBiDi, start0, LRM_BEFORE); in processPropertySeq()
1363 addPoint(pBiDi, k, RLM_BEFORE); /* add RLM before */ in processPropertySeq()
1364 pInsertPoints=&(pBiDi->insertPoints); in processPropertySeq()
1373 addPoint(pBiDi, start0, LRM_BEFORE); /* add LRM before */ in processPropertySeq()
1374 addPoint(pBiDi, start0, LRM_AFTER); /* add LRM after */ in processPropertySeq()
1379 pInsertPoints=&(pBiDi->insertPoints); in processPropertySeq()
1383 addPoint(pBiDi, start0, RLM_BEFORE); in processPropertySeq()
1394 pInsertPoints=&(pBiDi->insertPoints); in processPropertySeq()
1441 lastL_R_AL(UBiDi *pBiDi) { in lastL_R_AL() argument
1443 const UChar *text=pBiDi->prologue; in lastL_R_AL()
1444 int32_t length=pBiDi->proLength; in lastL_R_AL()
1451 dirProp=(DirProp)ubidi_getCustomizedClass(pBiDi, uchar); in lastL_R_AL()
1466 firstL_R_AL_EN_AN(UBiDi *pBiDi) { in firstL_R_AL_EN_AN() argument
1468 const UChar *text=pBiDi->epilogue; in firstL_R_AL_EN_AN()
1469 int32_t length=pBiDi->epiLength; in firstL_R_AL_EN_AN()
1476 dirProp=(DirProp)ubidi_getCustomizedClass(pBiDi, uchar); in firstL_R_AL_EN_AN()
1494 resolveImplicitLevels(UBiDi *pBiDi, in resolveImplicitLevels() argument
1497 const DirProp *dirProps=pBiDi->dirProps; in resolveImplicitLevels()
1517 ((start<pBiDi->lastArabicPos) && (GET_PARALEVEL(pBiDi, start) & 1) && in resolveImplicitLevels()
1518 (pBiDi->reorderingMode==UBIDI_REORDER_INVERSE_LIKE_DIRECT || in resolveImplicitLevels()
1519 pBiDi->reorderingMode==UBIDI_REORDER_INVERSE_FOR_NUMBERS_SPECIAL)); in resolveImplicitLevels()
1524 levState.runLevel=pBiDi->levels[start]; in resolveImplicitLevels()
1525 levState.pImpTab=(const ImpTab*)((pBiDi->pImpTabPair)->pImpTab)[levState.runLevel&1]; in resolveImplicitLevels()
1526 levState.pImpAct=(const ImpAct*)((pBiDi->pImpTabPair)->pImpAct)[levState.runLevel&1]; in resolveImplicitLevels()
1527 if(start==0 && pBiDi->proLength>0) { in resolveImplicitLevels()
1528 DirProp lastStrong=lastL_R_AL(pBiDi); in resolveImplicitLevels()
1533 processPropertySeq(pBiDi, &levState, sor, start, start); in resolveImplicitLevels()
1587 processPropertySeq(pBiDi, &levState, resProp, start1, i); in resolveImplicitLevels()
1594 processPropertySeq(pBiDi, &levState, resProp, start1, start2); in resolveImplicitLevels()
1595 processPropertySeq(pBiDi, &levState, DirProp_ON, start2, i); in resolveImplicitLevels()
1599 processPropertySeq(pBiDi, &levState, resProp, start1, start2); in resolveImplicitLevels()
1610 if(limit==pBiDi->length && pBiDi->epiLength>0) { in resolveImplicitLevels()
1611 DirProp firstStrong=firstL_R_AL_EN_AN(pBiDi); in resolveImplicitLevels()
1616 processPropertySeq(pBiDi, &levState, eor, limit, limit); in resolveImplicitLevels()
1628 adjustWSLevels(UBiDi *pBiDi) { in adjustWSLevels() argument
1629 const DirProp *dirProps=pBiDi->dirProps; in adjustWSLevels()
1630 UBiDiLevel *levels=pBiDi->levels; in adjustWSLevels()
1633 if(pBiDi->flags&MASK_WS) { in adjustWSLevels()
1634 UBool orderParagraphsLTR=pBiDi->orderParagraphsLTR; in adjustWSLevels()
1637 i=pBiDi->trailingWSStart; in adjustWSLevels()
1644 levels[i]=GET_PARALEVEL(pBiDi, i); in adjustWSLevels()
1658 levels[i]=GET_PARALEVEL(pBiDi, i); in adjustWSLevels()
1667 ubidi_setContext(UBiDi *pBiDi, in ubidi_setContext() argument
1673 if(pBiDi==NULL || proLength<-1 || epiLength<-1 || in ubidi_setContext()
1680 pBiDi->proLength=u_strlen(prologue); in ubidi_setContext()
1682 pBiDi->proLength=proLength; in ubidi_setContext()
1685 pBiDi->epiLength=u_strlen(epilogue); in ubidi_setContext()
1687 pBiDi->epiLength=epiLength; in ubidi_setContext()
1689 pBiDi->prologue=prologue; in ubidi_setContext()
1690 pBiDi->epilogue=epilogue; in ubidi_setContext()
1694 setParaSuccess(UBiDi *pBiDi) { in setParaSuccess() argument
1695 pBiDi->proLength=0; /* forget the last context */ in setParaSuccess()
1696 pBiDi->epiLength=0; in setParaSuccess()
1697 pBiDi->pParaBiDi=pBiDi; /* mark successful setPara */ in setParaSuccess()
1703 setParaRunsOnly(UBiDi *pBiDi, const UChar *text, int32_t length, in setParaRunsOnly() argument
1720 pBiDi->reorderingMode=UBIDI_REORDER_DEFAULT; in setParaRunsOnly()
1722 ubidi_setPara(pBiDi, text, length, paraLevel, NULL, pErrorCode); in setParaRunsOnly()
1734 saveOptions=pBiDi->reorderingOptions; in setParaRunsOnly()
1736 pBiDi->reorderingOptions&=~UBIDI_OPTION_INSERT_MARKS; in setParaRunsOnly()
1737 pBiDi->reorderingOptions|=UBIDI_OPTION_REMOVE_CONTROLS; in setParaRunsOnly()
1740 ubidi_setPara(pBiDi, text, length, paraLevel, NULL, pErrorCode); in setParaRunsOnly()
1747 levels=ubidi_getLevels(pBiDi, pErrorCode); in setParaRunsOnly()
1748 uprv_memcpy(saveLevels, levels, pBiDi->length*sizeof(UBiDiLevel)); in setParaRunsOnly()
1749 saveTrailingWSStart=pBiDi->trailingWSStart; in setParaRunsOnly()
1750 saveLength=pBiDi->length; in setParaRunsOnly()
1751 saveDirection=pBiDi->direction; in setParaRunsOnly()
1759 visualLength=ubidi_writeReordered(pBiDi, visualText, length, in setParaRunsOnly()
1761 ubidi_getVisualMap(pBiDi, visualMap, pErrorCode); in setParaRunsOnly()
1765 pBiDi->reorderingOptions=saveOptions; in setParaRunsOnly()
1767 pBiDi->reorderingMode=UBIDI_REORDER_INVERSE_LIKE_DIRECT; in setParaRunsOnly()
1776 saveMayAllocateText=pBiDi->mayAllocateText; in setParaRunsOnly()
1777 pBiDi->mayAllocateText=FALSE; in setParaRunsOnly()
1778 ubidi_setPara(pBiDi, visualText, visualLength, paraLevel, NULL, pErrorCode); in setParaRunsOnly()
1779 pBiDi->mayAllocateText=saveMayAllocateText; in setParaRunsOnly()
1780 ubidi_getRuns(pBiDi, pErrorCode); in setParaRunsOnly()
1786 runCount=pBiDi->runCount; in setParaRunsOnly()
1787 runs=pBiDi->runs; in setParaRunsOnly()
1804 if(getRunsMemory(pBiDi, runCount+addedRuns)) { in setParaRunsOnly()
1807 pBiDi->runsMemory[0]=runs[0]; in setParaRunsOnly()
1809 runs=pBiDi->runs=pBiDi->runsMemory; in setParaRunsOnly()
1810 pBiDi->runCount+=addedRuns; in setParaRunsOnly()
1866 pBiDi->paraLevel^=1; in setParaRunsOnly()
1869 pBiDi->text=text; in setParaRunsOnly()
1870 pBiDi->length=saveLength; in setParaRunsOnly()
1871 pBiDi->originalLength=length; in setParaRunsOnly()
1872 pBiDi->direction=saveDirection; in setParaRunsOnly()
1874 if(saveLength>pBiDi->levelsSize) { in setParaRunsOnly()
1875 saveLength=pBiDi->levelsSize; in setParaRunsOnly()
1877 uprv_memcpy(pBiDi->levels, saveLevels, saveLength*sizeof(UBiDiLevel)); in setParaRunsOnly()
1878 pBiDi->trailingWSStart=saveTrailingWSStart; in setParaRunsOnly()
1881 if(pBiDi->runCount>1) { in setParaRunsOnly()
1882 pBiDi->direction=UBIDI_MIXED; in setParaRunsOnly()
1885 pBiDi->reorderingMode=UBIDI_REORDER_RUNS_ONLY; in setParaRunsOnly()
1891 ubidi_setPara(UBiDi *pBiDi, const UChar *text, int32_t length, in ubidi_setPara() argument
1898 if(pBiDi==NULL || text==NULL || length<-1 || in ubidi_setPara()
1909 if(pBiDi->reorderingMode==UBIDI_REORDER_RUNS_ONLY) { in ubidi_setPara()
1910 setParaRunsOnly(pBiDi, text, length, paraLevel, pErrorCode); in ubidi_setPara()
1915 pBiDi->pParaBiDi=NULL; /* mark unfinished setPara */ in ubidi_setPara()
1916 pBiDi->text=text; in ubidi_setPara()
1917 pBiDi->length=pBiDi->originalLength=pBiDi->resultLength=length; in ubidi_setPara()
1918 pBiDi->paraLevel=paraLevel; in ubidi_setPara()
1919 pBiDi->direction=UBIDI_LTR; in ubidi_setPara()
1920 pBiDi->paraCount=1; in ubidi_setPara()
1922 pBiDi->dirProps=NULL; in ubidi_setPara()
1923 pBiDi->levels=NULL; in ubidi_setPara()
1924 pBiDi->runs=NULL; in ubidi_setPara()
1925 pBiDi->insertPoints.size=0; /* clean up from last call */ in ubidi_setPara()
1926 pBiDi->insertPoints.confirmed=0; /* clean up from last call */ in ubidi_setPara()
1932 pBiDi->defaultParaLevel=paraLevel; in ubidi_setPara()
1934 pBiDi->defaultParaLevel=0; in ubidi_setPara()
1944 pBiDi->paraLevel&=1; in ubidi_setPara()
1945 pBiDi->defaultParaLevel=0; in ubidi_setPara()
1948 pBiDi->flags=DIRPROP_FLAG(R); in ubidi_setPara()
1949 pBiDi->direction=UBIDI_RTL; in ubidi_setPara()
1951 pBiDi->flags=DIRPROP_FLAG(L); in ubidi_setPara()
1952 pBiDi->direction=UBIDI_LTR; in ubidi_setPara()
1955 pBiDi->runCount=0; in ubidi_setPara()
1956 pBiDi->paraCount=0; in ubidi_setPara()
1957 setParaSuccess(pBiDi); /* mark successful setPara */ in ubidi_setPara()
1961 pBiDi->runCount=-1; in ubidi_setPara()
1968 if(getDirPropsMemory(pBiDi, length)) { in ubidi_setPara()
1969 pBiDi->dirProps=pBiDi->dirPropsMemory; in ubidi_setPara()
1970 getDirProps(pBiDi); in ubidi_setPara()
1976 length= pBiDi->length; in ubidi_setPara()
1977 pBiDi->trailingWSStart=length; /* the levels[] will reflect the WS run */ in ubidi_setPara()
1979 if(pBiDi->paraCount>1) { in ubidi_setPara()
1980 if(getInitialParasMemory(pBiDi, pBiDi->paraCount)) { in ubidi_setPara()
1981 pBiDi->paras=pBiDi->parasMemory; in ubidi_setPara()
1982 pBiDi->paras[pBiDi->paraCount-1]=length; in ubidi_setPara()
1989 pBiDi->paras=pBiDi->simpleParas; in ubidi_setPara()
1990 pBiDi->simpleParas[0]=length; in ubidi_setPara()
1996 if(getLevelsMemory(pBiDi, length)) { in ubidi_setPara()
1997 pBiDi->levels=pBiDi->levelsMemory; in ubidi_setPara()
1998 direction=resolveExplicitLevels(pBiDi); in ubidi_setPara()
2005 pBiDi->levels=embeddingLevels; in ubidi_setPara()
2006 direction=checkExplicitLevels(pBiDi, pErrorCode); in ubidi_setPara()
2016 pBiDi->direction=direction; in ubidi_setPara()
2020 pBiDi->paraLevel=(UBiDiLevel)((pBiDi->paraLevel+1)&~1); in ubidi_setPara()
2023 pBiDi->trailingWSStart=0; in ubidi_setPara()
2027 pBiDi->paraLevel|=1; in ubidi_setPara()
2030 pBiDi->trailingWSStart=0; in ubidi_setPara()
2036 switch(pBiDi->reorderingMode) { in ubidi_setPara()
2038 pBiDi->pImpTabPair=&impTab_DEFAULT; in ubidi_setPara()
2041 pBiDi->pImpTabPair=&impTab_NUMBERS_SPECIAL; in ubidi_setPara()
2044 pBiDi->pImpTabPair=&impTab_GROUP_NUMBERS_WITH_R; in ubidi_setPara()
2047 pBiDi->pImpTabPair=&impTab_INVERSE_NUMBERS_AS_L; in ubidi_setPara()
2050 if (pBiDi->reorderingOptions & UBIDI_OPTION_INSERT_MARKS) { in ubidi_setPara()
2051 pBiDi->pImpTabPair=&impTab_INVERSE_LIKE_DIRECT_WITH_MARKS; in ubidi_setPara()
2053 pBiDi->pImpTabPair=&impTab_INVERSE_LIKE_DIRECT; in ubidi_setPara()
2057 if (pBiDi->reorderingOptions & UBIDI_OPTION_INSERT_MARKS) { in ubidi_setPara()
2058 pBiDi->pImpTabPair=&impTab_INVERSE_FOR_NUMBERS_SPECIAL_WITH_MARKS; in ubidi_setPara()
2060 pBiDi->pImpTabPair=&impTab_INVERSE_FOR_NUMBERS_SPECIAL; in ubidi_setPara()
2079 if(embeddingLevels==NULL && pBiDi->paraCount<=1 && in ubidi_setPara()
2080 !(pBiDi->flags&DIRPROP_FLAG_MULTI_RUNS)) { in ubidi_setPara()
2081 resolveImplicitLevels(pBiDi, 0, length, in ubidi_setPara()
2082 GET_LR_FROM_LEVEL(GET_PARALEVEL(pBiDi, 0)), in ubidi_setPara()
2083 GET_LR_FROM_LEVEL(GET_PARALEVEL(pBiDi, length-1))); in ubidi_setPara()
2086 UBiDiLevel *levels=pBiDi->levels; in ubidi_setPara()
2092 level=GET_PARALEVEL(pBiDi, 0); in ubidi_setPara()
2106 if((start>0) && (NO_CONTEXT_RTL(pBiDi->dirProps[start-1])==B)) { in ubidi_setPara()
2108 sor=GET_LR_FROM_LEVEL(GET_PARALEVEL(pBiDi, start)); in ubidi_setPara()
2120 nextLevel=GET_PARALEVEL(pBiDi, length-1); in ubidi_setPara()
2133 resolveImplicitLevels(pBiDi, start, limit, sor, eor); in ubidi_setPara()
2143 if (U_FAILURE(pBiDi->insertPoints.errorCode)) in ubidi_setPara()
2145 *pErrorCode=pBiDi->insertPoints.errorCode; in ubidi_setPara()
2149 adjustWSLevels(pBiDi); in ubidi_setPara()
2155 if((pBiDi->defaultParaLevel>0) && in ubidi_setPara()
2156 (pBiDi->reorderingOptions & UBIDI_OPTION_INSERT_MARKS) && in ubidi_setPara()
2157 ((pBiDi->reorderingMode==UBIDI_REORDER_INVERSE_LIKE_DIRECT) || in ubidi_setPara()
2158 (pBiDi->reorderingMode==UBIDI_REORDER_INVERSE_FOR_NUMBERS_SPECIAL))) { in ubidi_setPara()
2161 for(i=0; i<pBiDi->paraCount; i++) { in ubidi_setPara()
2162 last=pBiDi->paras[i]-1; in ubidi_setPara()
2163 if((pBiDi->dirProps[last] & CONTEXT_RTL)==0) { in ubidi_setPara()
2166 start= i==0 ? 0 : pBiDi->paras[i - 1]; in ubidi_setPara()
2168 dirProp=NO_CONTEXT_RTL(pBiDi->dirProps[j]); in ubidi_setPara()
2171 while(NO_CONTEXT_RTL(pBiDi->dirProps[last])==B) { in ubidi_setPara()
2175 addPoint(pBiDi, last, RLM_BEFORE); in ubidi_setPara()
2185 if(pBiDi->reorderingOptions & UBIDI_OPTION_REMOVE_CONTROLS) { in ubidi_setPara()
2186 pBiDi->resultLength -= pBiDi->controlCount; in ubidi_setPara()
2188 pBiDi->resultLength += pBiDi->insertPoints.size; in ubidi_setPara()
2190 setParaSuccess(pBiDi); /* mark successful setPara */ in ubidi_setPara()
2194 ubidi_orderParagraphsLTR(UBiDi *pBiDi, UBool orderParagraphsLTR) { in ubidi_orderParagraphsLTR() argument
2195 if(pBiDi!=NULL) { in ubidi_orderParagraphsLTR()
2196 pBiDi->orderParagraphsLTR=orderParagraphsLTR; in ubidi_orderParagraphsLTR()
2201 ubidi_isOrderParagraphsLTR(UBiDi *pBiDi) { in ubidi_isOrderParagraphsLTR() argument
2202 if(pBiDi!=NULL) { in ubidi_isOrderParagraphsLTR()
2203 return pBiDi->orderParagraphsLTR; in ubidi_isOrderParagraphsLTR()
2210 ubidi_getDirection(const UBiDi *pBiDi) { in ubidi_getDirection() argument
2211 if(IS_VALID_PARA_OR_LINE(pBiDi)) { in ubidi_getDirection()
2212 return pBiDi->direction; in ubidi_getDirection()
2219 ubidi_getText(const UBiDi *pBiDi) { in ubidi_getText() argument
2220 if(IS_VALID_PARA_OR_LINE(pBiDi)) { in ubidi_getText()
2221 return pBiDi->text; in ubidi_getText()
2228 ubidi_getLength(const UBiDi *pBiDi) { in ubidi_getLength() argument
2229 if(IS_VALID_PARA_OR_LINE(pBiDi)) { in ubidi_getLength()
2230 return pBiDi->originalLength; in ubidi_getLength()
2237 ubidi_getProcessedLength(const UBiDi *pBiDi) { in ubidi_getProcessedLength() argument
2238 if(IS_VALID_PARA_OR_LINE(pBiDi)) { in ubidi_getProcessedLength()
2239 return pBiDi->length; in ubidi_getProcessedLength()
2246 ubidi_getResultLength(const UBiDi *pBiDi) { in ubidi_getResultLength() argument
2247 if(IS_VALID_PARA_OR_LINE(pBiDi)) { in ubidi_getResultLength()
2248 return pBiDi->resultLength; in ubidi_getResultLength()
2257 ubidi_getParaLevel(const UBiDi *pBiDi) { in ubidi_getParaLevel() argument
2258 if(IS_VALID_PARA_OR_LINE(pBiDi)) { in ubidi_getParaLevel()
2259 return pBiDi->paraLevel; in ubidi_getParaLevel()
2266 ubidi_countParagraphs(UBiDi *pBiDi) { in ubidi_countParagraphs() argument
2267 if(!IS_VALID_PARA_OR_LINE(pBiDi)) { in ubidi_countParagraphs()
2270 return pBiDi->paraCount; in ubidi_countParagraphs()
2275 ubidi_getParagraphByIndex(const UBiDi *pBiDi, int32_t paraIndex, in ubidi_getParagraphByIndex() argument
2282 RETURN_VOID_IF_NOT_VALID_PARA_OR_LINE(pBiDi, *pErrorCode); in ubidi_getParagraphByIndex()
2283 RETURN_VOID_IF_BAD_RANGE(paraIndex, 0, pBiDi->paraCount, *pErrorCode); in ubidi_getParagraphByIndex()
2285 pBiDi=pBiDi->pParaBiDi; /* get Para object if Line object */ in ubidi_getParagraphByIndex()
2287 paraStart=pBiDi->paras[paraIndex-1]; in ubidi_getParagraphByIndex()
2295 *pParaLimit=pBiDi->paras[paraIndex]; in ubidi_getParagraphByIndex()
2298 *pParaLevel=GET_PARALEVEL(pBiDi, paraStart); in ubidi_getParagraphByIndex()
2303 ubidi_getParagraph(const UBiDi *pBiDi, int32_t charIndex, in ubidi_getParagraph() argument
2311 RETURN_IF_NOT_VALID_PARA_OR_LINE(pBiDi, *pErrorCode, -1); in ubidi_getParagraph()
2312 pBiDi=pBiDi->pParaBiDi; /* get Para object if Line object */ in ubidi_getParagraph()
2313 RETURN_IF_BAD_RANGE(charIndex, 0, pBiDi->length, *pErrorCode, -1); in ubidi_getParagraph()
2315 for(paraIndex=0; charIndex>=pBiDi->paras[paraIndex]; paraIndex++); in ubidi_getParagraph()
2316 ubidi_getParagraphByIndex(pBiDi, paraIndex, pParaStart, pParaLimit, pParaLevel, pErrorCode); in ubidi_getParagraph()
2321 ubidi_setClassCallback(UBiDi *pBiDi, UBiDiClassCallback *newFn, in ubidi_setClassCallback() argument
2326 if(pBiDi==NULL) { in ubidi_setClassCallback()
2332 *oldFn = pBiDi->fnClassCallback; in ubidi_setClassCallback()
2336 *oldContext = pBiDi->coClassCallback; in ubidi_setClassCallback()
2338 pBiDi->fnClassCallback = newFn; in ubidi_setClassCallback()
2339 pBiDi->coClassCallback = newContext; in ubidi_setClassCallback()
2343 ubidi_getClassCallback(UBiDi *pBiDi, UBiDiClassCallback **fn, const void **context) in ubidi_getClassCallback() argument
2345 if(pBiDi==NULL) { in ubidi_getClassCallback()
2350 *fn = pBiDi->fnClassCallback; in ubidi_getClassCallback()
2354 *context = pBiDi->coClassCallback; in ubidi_getClassCallback()
2359 ubidi_getCustomizedClass(UBiDi *pBiDi, UChar32 c) in ubidi_getCustomizedClass() argument
2363 if( pBiDi->fnClassCallback == NULL || in ubidi_getCustomizedClass()
2364 (dir = (*pBiDi->fnClassCallback)(pBiDi->coClassCallback, c)) == U_BIDI_CLASS_DEFAULT ) in ubidi_getCustomizedClass()
2366 return ubidi_getClass(pBiDi->bdp, c); in ubidi_getCustomizedClass()