Lines Matching refs:pBiDi

135     UBiDi *pBiDi;  in ubidi_openSized()  local
146 pBiDi=(UBiDi *)uprv_malloc(sizeof(UBiDi)); in ubidi_openSized()
147 if(pBiDi==NULL) { in ubidi_openSized()
153 uprv_memset(pBiDi, 0, sizeof(UBiDi)); in ubidi_openSized()
156 pBiDi->bdp=ubidi_getSingleton(); in ubidi_openSized()
160 if( !getInitialDirPropsMemory(pBiDi, maxLength) || in ubidi_openSized()
161 !getInitialLevelsMemory(pBiDi, maxLength) in ubidi_openSized()
166 pBiDi->mayAllocateText=TRUE; in ubidi_openSized()
172 pBiDi->runsSize=sizeof(Run); in ubidi_openSized()
173 } else if(!getInitialRunsMemory(pBiDi, maxRunCount)) { in ubidi_openSized()
177 pBiDi->mayAllocateRuns=TRUE; in ubidi_openSized()
181 return pBiDi; in ubidi_openSized()
183 ubidi_close(pBiDi); in ubidi_openSized()
241 ubidi_close(UBiDi *pBiDi) { in ubidi_close() argument
242 if(pBiDi!=NULL) { in ubidi_close()
243 pBiDi->pParaBiDi=NULL; /* in case one tries to reuse this block */ in ubidi_close()
244 if(pBiDi->dirPropsMemory!=NULL) { in ubidi_close()
245 uprv_free(pBiDi->dirPropsMemory); in ubidi_close()
247 if(pBiDi->levelsMemory!=NULL) { in ubidi_close()
248 uprv_free(pBiDi->levelsMemory); in ubidi_close()
250 if(pBiDi->openingsMemory!=NULL) { in ubidi_close()
251 uprv_free(pBiDi->openingsMemory); in ubidi_close()
253 if(pBiDi->parasMemory!=NULL) { in ubidi_close()
254 uprv_free(pBiDi->parasMemory); in ubidi_close()
256 if(pBiDi->runsMemory!=NULL) { in ubidi_close()
257 uprv_free(pBiDi->runsMemory); in ubidi_close()
259 if(pBiDi->isolatesMemory!=NULL) { in ubidi_close()
260 uprv_free(pBiDi->isolatesMemory); in ubidi_close()
262 if(pBiDi->insertPoints.points!=NULL) { in ubidi_close()
263 uprv_free(pBiDi->insertPoints.points); in ubidi_close()
266 uprv_free(pBiDi); in ubidi_close()
273 ubidi_setInverse(UBiDi *pBiDi, UBool isInverse) { in ubidi_setInverse() argument
274 if(pBiDi!=NULL) { in ubidi_setInverse()
275 pBiDi->isInverse=isInverse; in ubidi_setInverse()
276 pBiDi->reorderingMode = isInverse ? UBIDI_REORDER_INVERSE_NUMBERS_AS_L in ubidi_setInverse()
282 ubidi_isInverse(UBiDi *pBiDi) { in ubidi_isInverse() argument
283 if(pBiDi!=NULL) { in ubidi_isInverse()
284 return pBiDi->isInverse; in ubidi_isInverse()
306 ubidi_setReorderingMode(UBiDi *pBiDi, UBiDiReorderingMode reorderingMode) { in ubidi_setReorderingMode() argument
307 if ((pBiDi!=NULL) && (reorderingMode >= UBIDI_REORDER_DEFAULT) in ubidi_setReorderingMode()
309 pBiDi->reorderingMode = reorderingMode; in ubidi_setReorderingMode()
310 pBiDi->isInverse = (UBool)(reorderingMode == UBIDI_REORDER_INVERSE_NUMBERS_AS_L); in ubidi_setReorderingMode()
315 ubidi_getReorderingMode(UBiDi *pBiDi) { in ubidi_getReorderingMode() argument
316 if (pBiDi!=NULL) { in ubidi_getReorderingMode()
317 return pBiDi->reorderingMode; in ubidi_getReorderingMode()
324 ubidi_setReorderingOptions(UBiDi *pBiDi, uint32_t reorderingOptions) { in ubidi_setReorderingOptions() argument
328 if (pBiDi!=NULL) { in ubidi_setReorderingOptions()
329 pBiDi->reorderingOptions=reorderingOptions; in ubidi_setReorderingOptions()
334 ubidi_getReorderingOptions(UBiDi *pBiDi) { in ubidi_getReorderingOptions() argument
335 if (pBiDi!=NULL) { in ubidi_getReorderingOptions()
336 return pBiDi->reorderingOptions; in ubidi_getReorderingOptions()
378 firstL_R_AL(UBiDi *pBiDi) { in firstL_R_AL() argument
379 const UChar *text=pBiDi->prologue; in firstL_R_AL()
380 int32_t length=pBiDi->proLength; in firstL_R_AL()
387 dirProp=(DirProp)ubidi_getCustomizedClass(pBiDi, uchar); in firstL_R_AL()
405 checkParaCount(UBiDi *pBiDi) { in checkParaCount() argument
406 int32_t count=pBiDi->paraCount; in checkParaCount()
407 if(pBiDi->paras==pBiDi->simpleParas) { in checkParaCount()
410 if(!getInitialParasMemory(pBiDi, SIMPLE_PARAS_COUNT * 2)) in checkParaCount()
412 pBiDi->paras=pBiDi->parasMemory; in checkParaCount()
413 uprv_memcpy(pBiDi->parasMemory, pBiDi->simpleParas, SIMPLE_PARAS_COUNT * sizeof(Para)); in checkParaCount()
416 if(!getInitialParasMemory(pBiDi, count * 2)) in checkParaCount()
418 pBiDi->paras=pBiDi->parasMemory; in checkParaCount()
431 getDirProps(UBiDi *pBiDi) { in getDirProps() argument
432 const UChar *text=pBiDi->text; in getDirProps()
433 DirProp *dirProps=pBiDi->dirPropsMemory; /* pBiDi->dirProps is const */ in getDirProps()
435 int32_t i=0, originalLength=pBiDi->originalLength; in getDirProps()
439 UBool isDefaultLevel=IS_DEFAULT_LEVEL(pBiDi->paraLevel); in getDirProps()
443 (pBiDi->reorderingMode==UBIDI_REORDER_INVERSE_LIKE_DIRECT || in getDirProps()
444 pBiDi->reorderingMode==UBIDI_REORDER_INVERSE_FOR_NUMBERS_SPECIAL); in getDirProps()
447 UBool removeBiDiControls = (UBool)(pBiDi->reorderingOptions & in getDirProps()
472 if(pBiDi->reorderingOptions & UBIDI_OPTION_STREAMING) in getDirProps()
473 pBiDi->length=0; in getDirProps()
474 defaultParaLevel=pBiDi->paraLevel&1; in getDirProps()
476 pBiDi->paras[0].level=defaultParaLevel; in getDirProps()
478 if(pBiDi->proLength>0 && /* there is a prologue */ in getDirProps()
479 (dirProp=firstL_R_AL(pBiDi))!=ON) { /* with a strong character */ in getDirProps()
481 pBiDi->paras[0].level=0; /* set the default para level */ in getDirProps()
483 pBiDi->paras[0].level=1; /* set the default para level */ in getDirProps()
489 pBiDi->paras[0].level=pBiDi->paraLevel; in getDirProps()
501 flags|=DIRPROP_FLAG(dirProp=(DirProp)ubidi_getCustomizedClass(pBiDi, uchar)); in getDirProps()
511 pBiDi->paras[pBiDi->paraCount-1].level=0; in getDirProps()
527 pBiDi->paras[pBiDi->paraCount-1].level=1; in getDirProps()
574 pBiDi->paras[pBiDi->paraCount-1].limit=i; in getDirProps()
576 pBiDi->paras[pBiDi->paraCount-1].level=1; in getDirProps()
577 if(pBiDi->reorderingOptions & UBIDI_OPTION_STREAMING) { in getDirProps()
580 pBiDi->length=i; /* i is index to next character */ in getDirProps()
581 pBiDi->controlCount=controlCount; in getDirProps()
584 pBiDi->paraCount++; in getDirProps()
585 if(checkParaCount(pBiDi)==FALSE) /* not enough memory for a new para entry */ in getDirProps()
588 pBiDi->paras[pBiDi->paraCount-1].level=defaultParaLevel; in getDirProps()
592 pBiDi->paras[pBiDi->paraCount-1].level=pBiDi->paraLevel; in getDirProps()
617 if(pBiDi->reorderingOptions & UBIDI_OPTION_STREAMING) { in getDirProps()
618 if(pBiDi->length<originalLength) in getDirProps()
619 pBiDi->paraCount--; in getDirProps()
621 pBiDi->paras[pBiDi->paraCount-1].limit=originalLength; in getDirProps()
622 pBiDi->controlCount=controlCount; in getDirProps()
627 pBiDi->paras[pBiDi->paraCount-1].level=1; in getDirProps()
630 pBiDi->paraLevel=pBiDi->paras[0].level; in getDirProps()
634 for(i=0; i<pBiDi->paraCount; i++) in getDirProps()
635 flags|=DIRPROP_FLAG_LR(pBiDi->paras[i].level); in getDirProps()
637 if(pBiDi->orderParagraphsLTR && (flags&DIRPROP_FLAG(B))) { in getDirProps()
640 pBiDi->flags=flags; in getDirProps()
641 pBiDi->lastArabicPos=lastArabicPos; in getDirProps()
647 ubidi_getParaLevelAtIndex(const UBiDi *pBiDi, int32_t pindex) { in ubidi_getParaLevelAtIndex() argument
649 for(i=0; i<pBiDi->paraCount; i++) in ubidi_getParaLevelAtIndex()
650 if(pindex<pBiDi->paras[i].limit) in ubidi_getParaLevelAtIndex()
652 if(i>=pBiDi->paraCount) in ubidi_getParaLevelAtIndex()
653 i=pBiDi->paraCount-1; in ubidi_getParaLevelAtIndex()
654 return (UBiDiLevel)(pBiDi->paras[i].level); in ubidi_getParaLevelAtIndex()
674 bracketInit(UBiDi *pBiDi, BracketData *bd) { in bracketInit() argument
675 bd->pBiDi=pBiDi; in bracketInit()
679 bd->isoRuns[0].level=GET_PARALEVEL(pBiDi, 0); in bracketInit()
680 …bd->isoRuns[0].lastStrong=bd->isoRuns[0].lastBase=bd->isoRuns[0].contextDir=GET_PARALEVEL(pBiDi, 0… in bracketInit()
682 if(pBiDi->openingsMemory) { in bracketInit()
683 bd->openings=pBiDi->openingsMemory; in bracketInit()
684 bd->openingsCount=pBiDi->openingsSize / sizeof(Opening); in bracketInit()
689 bd->isNumbersSpecial=bd->pBiDi->reorderingMode==UBIDI_REORDER_NUMBERS_SPECIAL || in bracketInit()
690 bd->pBiDi->reorderingMode==UBIDI_REORDER_INVERSE_FOR_NUMBERS_SPECIAL; in bracketInit()
708 DirProp *dirProps=bd->pBiDi->dirProps; in bracketProcessBoundary()
749 UBiDi *pBiDi=bd->pBiDi; in bracketAddOpening() local
750 if(!getInitialOpeningsMemory(pBiDi, pLastIsoRun->limit * 2)) in bracketAddOpening()
753 uprv_memcpy(pBiDi->openingsMemory, bd->simpleOpenings, in bracketAddOpening()
755 bd->openings=pBiDi->openingsMemory; /* may have changed */ in bracketAddOpening()
756 bd->openingsCount=pBiDi->openingsSize / sizeof(Opening); in bracketAddOpening()
774 DirProp *dirProps=bd->pBiDi->dirProps; in fixN0c()
842 bd->pBiDi->dirProps[pOpening->position]=newProp; in bracketProcessClosing()
843 bd->pBiDi->dirProps[position]=newProp; in bracketProcessClosing()
879 dirProps=bd->pBiDi->dirProps; in bracketProcessChar()
886 c=bd->pBiDi->text[position]; in bracketProcessChar()
899 level=bd->pBiDi->levels[position]; in bracketProcessChar()
909 bd->pBiDi->levels[position]&=~UBIDI_LEVEL_OVERRIDE; in bracketProcessChar()
912 bd->pBiDi->levels[bd->openings[idx].position]&=~UBIDI_LEVEL_OVERRIDE; in bracketProcessChar()
923 ubidi_getPairedBracketType(bd->pBiDi->bdp, c)==U_BPT_OPEN) { /* opening bracket */ in bracketProcessChar()
938 level=bd->pBiDi->levels[position]; in bracketProcessChar()
1006 directionFromFlags(UBiDi *pBiDi) { in directionFromFlags() argument
1007 Flags flags=pBiDi->flags; in directionFromFlags()
1070 resolveExplicitLevels(UBiDi *pBiDi, UErrorCode *pErrorCode) { in resolveExplicitLevels() argument
1071 DirProp *dirProps=pBiDi->dirProps; in resolveExplicitLevels()
1072 UBiDiLevel *levels=pBiDi->levels; in resolveExplicitLevels()
1073 const UChar *text=pBiDi->text; in resolveExplicitLevels()
1075 int32_t i=0, length=pBiDi->length; in resolveExplicitLevels()
1076 Flags flags=pBiDi->flags; /* collect all directionalities in the text */ in resolveExplicitLevels()
1078 UBiDiLevel level=GET_PARALEVEL(pBiDi, 0); in resolveExplicitLevels()
1080 pBiDi->isolateCount=0; in resolveExplicitLevels()
1085 direction=directionFromFlags(pBiDi); in resolveExplicitLevels()
1092 if(pBiDi->reorderingMode > UBIDI_REORDER_LAST_LOGICAL_TO_VISUAL) { in resolveExplicitLevels()
1096 for(paraIndex=0; paraIndex<pBiDi->paraCount; paraIndex++) { in resolveExplicitLevels()
1100 start=pBiDi->paras[paraIndex-1].limit; in resolveExplicitLevels()
1101 limit=pBiDi->paras[paraIndex].limit; in resolveExplicitLevels()
1102 level=pBiDi->paras[paraIndex].level; in resolveExplicitLevels()
1113 bracketInit(pBiDi, &bracketData); in resolveExplicitLevels()
1114 for(paraIndex=0; paraIndex<pBiDi->paraCount; paraIndex++) { in resolveExplicitLevels()
1118 start=pBiDi->paras[paraIndex-1].limit; in resolveExplicitLevels()
1119 limit=pBiDi->paras[paraIndex].limit; in resolveExplicitLevels()
1120 level=pBiDi->paras[paraIndex].level; in resolveExplicitLevels()
1160 bracketInit(pBiDi, &bracketData); in resolveExplicitLevels()
1239 if(validIsolateCount>pBiDi->isolateCount) in resolveExplicitLevels()
1240 pBiDi->isolateCount=validIsolateCount; in resolveExplicitLevels()
1284 levels[i]=GET_PARALEVEL(pBiDi, i); in resolveExplicitLevels()
1291 previousLevel=embeddingLevel=GET_PARALEVEL(pBiDi, i+1); in resolveExplicitLevels()
1323 flags|=DIRPROP_FLAG_LR(pBiDi->paraLevel); in resolveExplicitLevels()
1324 if(pBiDi->orderParagraphsLTR && (flags&DIRPROP_FLAG(B))) in resolveExplicitLevels()
1327 pBiDi->flags=flags; in resolveExplicitLevels()
1328 direction=directionFromFlags(pBiDi); in resolveExplicitLevels()
1344 checkExplicitLevels(UBiDi *pBiDi, UErrorCode *pErrorCode) { in checkExplicitLevels() argument
1345 DirProp *dirProps=pBiDi->dirProps; in checkExplicitLevels()
1347 UBiDiLevel *levels=pBiDi->levels; in checkExplicitLevels()
1350 int32_t i, length=pBiDi->length; in checkExplicitLevels()
1353 pBiDi->isolateCount=0; in checkExplicitLevels()
1360 if(isolateCount>pBiDi->isolateCount) in checkExplicitLevels()
1361 pBiDi->isolateCount=isolateCount; in checkExplicitLevels()
1375 if((level<GET_PARALEVEL(pBiDi, i) && in checkExplicitLevels()
1384 flags|=DIRPROP_FLAG_LR(pBiDi->paraLevel); in checkExplicitLevels()
1386 pBiDi->flags=flags; in checkExplicitLevels()
1387 return directionFromFlags(pBiDi); in checkExplicitLevels()
1764 addPoint(UBiDi *pBiDi, int32_t pos, int32_t flag) in addPoint() argument
1771 InsertPoints * pInsertPoints=&(pBiDi->insertPoints); in addPoint()
1804 setLevelsOutsideIsolates(UBiDi *pBiDi, int32_t start, int32_t limit, UBiDiLevel level) in setLevelsOutsideIsolates() argument
1806 DirProp *dirProps=pBiDi->dirProps, dirProp; in setLevelsOutsideIsolates()
1807 UBiDiLevel *levels=pBiDi->levels; in setLevelsOutsideIsolates()
1836 processPropertySeq(UBiDi *pBiDi, LevState *pLevState, uint8_t _prop, in processPropertySeq() argument
1841 UBiDiLevel * levels=pBiDi->levels; in processPropertySeq()
1865 setLevelsOutsideIsolates(pBiDi, pLevState->startON, start0, level); in processPropertySeq()
1870 setLevelsOutsideIsolates(pBiDi, pLevState->startON, start0, level); in processPropertySeq()
1876 addPoint(pBiDi, pLevState->startL2EN, LRM_BEFORE); in processPropertySeq()
1880 pInsertPoints=&(pBiDi->insertPoints); in processPropertySeq()
1893 addPoint(pBiDi, start0, LRM_BEFORE); in processPropertySeq()
1909 addPoint(pBiDi, start0, LRM_BEFORE); in processPropertySeq()
1916 pInsertPoints=&(pBiDi->insertPoints); in processPropertySeq()
1927 if ((_prop == DirProp_AN) && (pBiDi->dirProps[start0] == AN) && in processPropertySeq()
1928 (pBiDi->reorderingMode!=UBIDI_REORDER_INVERSE_FOR_NUMBERS_SPECIAL)) in processPropertySeq()
1939 addPoint(pBiDi, pLevState->startL2EN, LRM_BEFORE); in processPropertySeq()
1943 addPoint(pBiDi, start0, LRM_BEFORE); in processPropertySeq()
1961 addPoint(pBiDi, k, RLM_BEFORE); /* add RLM before */ in processPropertySeq()
1962 pInsertPoints=&(pBiDi->insertPoints); in processPropertySeq()
1971 addPoint(pBiDi, start0, LRM_BEFORE); /* add LRM before */ in processPropertySeq()
1972 addPoint(pBiDi, start0, LRM_AFTER); /* add LRM after */ in processPropertySeq()
1977 pInsertPoints=&(pBiDi->insertPoints); in processPropertySeq()
1981 addPoint(pBiDi, start0, RLM_BEFORE); in processPropertySeq()
1992 pInsertPoints=&(pBiDi->insertPoints); in processPropertySeq()
2037 setLevelsOutsideIsolates(pBiDi, start, limit, level); in processPropertySeq()
2047 lastL_R_AL(UBiDi *pBiDi) { in lastL_R_AL() argument
2048 const UChar *text=pBiDi->prologue; in lastL_R_AL()
2049 int32_t length=pBiDi->proLength; in lastL_R_AL()
2056 dirProp=(DirProp)ubidi_getCustomizedClass(pBiDi, uchar); in lastL_R_AL()
2075 firstL_R_AL_EN_AN(UBiDi *pBiDi) { in firstL_R_AL_EN_AN() argument
2076 const UChar *text=pBiDi->epilogue; in firstL_R_AL_EN_AN()
2077 int32_t length=pBiDi->epiLength; in firstL_R_AL_EN_AN()
2084 dirProp=(DirProp)ubidi_getCustomizedClass(pBiDi, uchar); in firstL_R_AL_EN_AN()
2102 resolveImplicitLevels(UBiDi *pBiDi, in resolveImplicitLevels() argument
2105 const DirProp *dirProps=pBiDi->dirProps; in resolveImplicitLevels()
2123 ((start<pBiDi->lastArabicPos) && (GET_PARALEVEL(pBiDi, start) & 1) && in resolveImplicitLevels()
2124 (pBiDi->reorderingMode==UBIDI_REORDER_INVERSE_LIKE_DIRECT || in resolveImplicitLevels()
2125 pBiDi->reorderingMode==UBIDI_REORDER_INVERSE_FOR_NUMBERS_SPECIAL)); in resolveImplicitLevels()
2131 levState.runLevel=pBiDi->levels[start]; in resolveImplicitLevels()
2132 levState.pImpTab=(const ImpTab*)((pBiDi->pImpTabPair)->pImpTab)[levState.runLevel&1]; in resolveImplicitLevels()
2133 levState.pImpAct=(const ImpAct*)((pBiDi->pImpTabPair)->pImpAct)[levState.runLevel&1]; in resolveImplicitLevels()
2134 if(start==0 && pBiDi->proLength>0) { in resolveImplicitLevels()
2135 DirProp lastStrong=lastL_R_AL(pBiDi); in resolveImplicitLevels()
2143 if(dirProps[start]==PDI && pBiDi->isolateCount >= 0) { in resolveImplicitLevels()
2144 levState.startON=pBiDi->isolates[pBiDi->isolateCount].startON; in resolveImplicitLevels()
2145 start1=pBiDi->isolates[pBiDi->isolateCount].start1; in resolveImplicitLevels()
2146 stateImp=pBiDi->isolates[pBiDi->isolateCount].stateImp; in resolveImplicitLevels()
2147 levState.state=pBiDi->isolates[pBiDi->isolateCount].state; in resolveImplicitLevels()
2148 pBiDi->isolateCount--; in resolveImplicitLevels()
2157 processPropertySeq(pBiDi, &levState, sor, start, start); in resolveImplicitLevels()
2173 pBiDi->isolateCount=-1; /* current isolates stack entry == none */ in resolveImplicitLevels()
2213 processPropertySeq(pBiDi, &levState, resProp, start1, i); in resolveImplicitLevels()
2220 processPropertySeq(pBiDi, &levState, resProp, start1, start2); in resolveImplicitLevels()
2221 processPropertySeq(pBiDi, &levState, DirProp_ON, start2, i); in resolveImplicitLevels()
2225 processPropertySeq(pBiDi, &levState, resProp, start1, start2); in resolveImplicitLevels()
2237 if(limit==pBiDi->length && pBiDi->epiLength>0) { in resolveImplicitLevels()
2238 DirProp firstStrong=firstL_R_AL_EN_AN(pBiDi); in resolveImplicitLevels()
2247 if((dirProp==LRI || dirProp==RLI) && limit<pBiDi->length) { in resolveImplicitLevels()
2248 pBiDi->isolateCount++; in resolveImplicitLevels()
2249 pBiDi->isolates[pBiDi->isolateCount].stateImp=stateImp; in resolveImplicitLevels()
2250 pBiDi->isolates[pBiDi->isolateCount].state=levState.state; in resolveImplicitLevels()
2251 pBiDi->isolates[pBiDi->isolateCount].start1=start1; in resolveImplicitLevels()
2252 pBiDi->isolates[pBiDi->isolateCount].startON=levState.startON; in resolveImplicitLevels()
2255 processPropertySeq(pBiDi, &levState, eor, limit, limit); in resolveImplicitLevels()
2267 adjustWSLevels(UBiDi *pBiDi) { in adjustWSLevels() argument
2268 const DirProp *dirProps=pBiDi->dirProps; in adjustWSLevels()
2269 UBiDiLevel *levels=pBiDi->levels; in adjustWSLevels()
2272 if(pBiDi->flags&MASK_WS) { in adjustWSLevels()
2273 UBool orderParagraphsLTR=pBiDi->orderParagraphsLTR; in adjustWSLevels()
2276 i=pBiDi->trailingWSStart; in adjustWSLevels()
2283 levels[i]=GET_PARALEVEL(pBiDi, i); in adjustWSLevels()
2297 levels[i]=GET_PARALEVEL(pBiDi, i); in adjustWSLevels()
2306 ubidi_setContext(UBiDi *pBiDi, in ubidi_setContext() argument
2312 if(pBiDi==NULL || proLength<-1 || epiLength<-1 || in ubidi_setContext()
2319 pBiDi->proLength=u_strlen(prologue); in ubidi_setContext()
2321 pBiDi->proLength=proLength; in ubidi_setContext()
2324 pBiDi->epiLength=u_strlen(epilogue); in ubidi_setContext()
2326 pBiDi->epiLength=epiLength; in ubidi_setContext()
2328 pBiDi->prologue=prologue; in ubidi_setContext()
2329 pBiDi->epilogue=epilogue; in ubidi_setContext()
2333 setParaSuccess(UBiDi *pBiDi) { in setParaSuccess() argument
2334 pBiDi->proLength=0; /* forget the last context */ in setParaSuccess()
2335 pBiDi->epiLength=0; in setParaSuccess()
2336 pBiDi->pParaBiDi=pBiDi; /* mark successful setPara */ in setParaSuccess()
2343 setParaRunsOnly(UBiDi *pBiDi, const UChar *text, int32_t length, in setParaRunsOnly() argument
2360 pBiDi->reorderingMode=UBIDI_REORDER_DEFAULT; in setParaRunsOnly()
2362 ubidi_setPara(pBiDi, text, length, paraLevel, NULL, pErrorCode); in setParaRunsOnly()
2374 saveOptions=pBiDi->reorderingOptions; in setParaRunsOnly()
2376 pBiDi->reorderingOptions&=~UBIDI_OPTION_INSERT_MARKS; in setParaRunsOnly()
2377 pBiDi->reorderingOptions|=UBIDI_OPTION_REMOVE_CONTROLS; in setParaRunsOnly()
2380 ubidi_setPara(pBiDi, text, length, paraLevel, NULL, pErrorCode); in setParaRunsOnly()
2387 levels=ubidi_getLevels(pBiDi, pErrorCode); in setParaRunsOnly()
2388 uprv_memcpy(saveLevels, levels, (size_t)pBiDi->length*sizeof(UBiDiLevel)); in setParaRunsOnly()
2389 saveTrailingWSStart=pBiDi->trailingWSStart; in setParaRunsOnly()
2390 saveLength=pBiDi->length; in setParaRunsOnly()
2391 saveDirection=pBiDi->direction; in setParaRunsOnly()
2399 visualLength=ubidi_writeReordered(pBiDi, visualText, length, in setParaRunsOnly()
2401 ubidi_getVisualMap(pBiDi, visualMap, pErrorCode); in setParaRunsOnly()
2405 pBiDi->reorderingOptions=saveOptions; in setParaRunsOnly()
2407 pBiDi->reorderingMode=UBIDI_REORDER_INVERSE_LIKE_DIRECT; in setParaRunsOnly()
2416 saveMayAllocateText=pBiDi->mayAllocateText; in setParaRunsOnly()
2417 pBiDi->mayAllocateText=FALSE; in setParaRunsOnly()
2418 ubidi_setPara(pBiDi, visualText, visualLength, paraLevel, NULL, pErrorCode); in setParaRunsOnly()
2419 pBiDi->mayAllocateText=saveMayAllocateText; in setParaRunsOnly()
2420 ubidi_getRuns(pBiDi, pErrorCode); in setParaRunsOnly()
2426 runCount=pBiDi->runCount; in setParaRunsOnly()
2427 runs=pBiDi->runs; in setParaRunsOnly()
2444 if(getRunsMemory(pBiDi, runCount+addedRuns)) { in setParaRunsOnly()
2447 pBiDi->runsMemory[0]=runs[0]; in setParaRunsOnly()
2449 runs=pBiDi->runs=pBiDi->runsMemory; in setParaRunsOnly()
2450 pBiDi->runCount+=addedRuns; in setParaRunsOnly()
2506 pBiDi->paraLevel^=1; in setParaRunsOnly()
2509 pBiDi->text=text; in setParaRunsOnly()
2510 pBiDi->length=saveLength; in setParaRunsOnly()
2511 pBiDi->originalLength=length; in setParaRunsOnly()
2512 pBiDi->direction=saveDirection; in setParaRunsOnly()
2514 if(saveLength>pBiDi->levelsSize) { in setParaRunsOnly()
2515 saveLength=pBiDi->levelsSize; in setParaRunsOnly()
2517 uprv_memcpy(pBiDi->levels, saveLevels, (size_t)saveLength*sizeof(UBiDiLevel)); in setParaRunsOnly()
2518 pBiDi->trailingWSStart=saveTrailingWSStart; in setParaRunsOnly()
2519 if(pBiDi->runCount>1) { in setParaRunsOnly()
2520 pBiDi->direction=UBIDI_MIXED; in setParaRunsOnly()
2526 pBiDi->reorderingMode=UBIDI_REORDER_RUNS_ONLY; in setParaRunsOnly()
2532 ubidi_setPara(UBiDi *pBiDi, const UChar *text, int32_t length, in ubidi_setPara() argument
2540 if(pBiDi==NULL || text==NULL || length<-1 || in ubidi_setPara()
2551 if(pBiDi->reorderingMode==UBIDI_REORDER_RUNS_ONLY) { in ubidi_setPara()
2552 setParaRunsOnly(pBiDi, text, length, paraLevel, pErrorCode); in ubidi_setPara()
2557 pBiDi->pParaBiDi=NULL; /* mark unfinished setPara */ in ubidi_setPara()
2558 pBiDi->text=text; in ubidi_setPara()
2559 pBiDi->length=pBiDi->originalLength=pBiDi->resultLength=length; in ubidi_setPara()
2560 pBiDi->paraLevel=paraLevel; in ubidi_setPara()
2561 pBiDi->direction=paraLevel&1; in ubidi_setPara()
2562 pBiDi->paraCount=1; in ubidi_setPara()
2564 pBiDi->dirProps=NULL; in ubidi_setPara()
2565 pBiDi->levels=NULL; in ubidi_setPara()
2566 pBiDi->runs=NULL; in ubidi_setPara()
2567 pBiDi->insertPoints.size=0; /* clean up from last call */ in ubidi_setPara()
2568 pBiDi->insertPoints.confirmed=0; /* clean up from last call */ in ubidi_setPara()
2573 pBiDi->defaultParaLevel=IS_DEFAULT_LEVEL(paraLevel); in ubidi_setPara()
2582 pBiDi->paraLevel&=1; in ubidi_setPara()
2583 pBiDi->defaultParaLevel=0; in ubidi_setPara()
2585 pBiDi->flags=DIRPROP_FLAG_LR(paraLevel); in ubidi_setPara()
2586 pBiDi->runCount=0; in ubidi_setPara()
2587 pBiDi->paraCount=0; in ubidi_setPara()
2588 setParaSuccess(pBiDi); /* mark successful setPara */ in ubidi_setPara()
2592 pBiDi->runCount=-1; in ubidi_setPara()
2595 if(pBiDi->parasMemory) in ubidi_setPara()
2596 pBiDi->paras=pBiDi->parasMemory; in ubidi_setPara()
2598 pBiDi->paras=pBiDi->simpleParas; in ubidi_setPara()
2605 if(getDirPropsMemory(pBiDi, length)) { in ubidi_setPara()
2606 pBiDi->dirProps=pBiDi->dirPropsMemory; in ubidi_setPara()
2607 if(!getDirProps(pBiDi)) { in ubidi_setPara()
2615 dirProps=pBiDi->dirProps; in ubidi_setPara()
2617 length= pBiDi->length; in ubidi_setPara()
2618 pBiDi->trailingWSStart=length; /* the levels[] will reflect the WS run */ in ubidi_setPara()
2623 if(getLevelsMemory(pBiDi, length)) { in ubidi_setPara()
2624 pBiDi->levels=pBiDi->levelsMemory; in ubidi_setPara()
2625 direction=resolveExplicitLevels(pBiDi, pErrorCode); in ubidi_setPara()
2635 pBiDi->levels=embeddingLevels; in ubidi_setPara()
2636 direction=checkExplicitLevels(pBiDi, pErrorCode); in ubidi_setPara()
2643 if(pBiDi->isolateCount<=SIMPLE_ISOLATES_COUNT) in ubidi_setPara()
2644 pBiDi->isolates=pBiDi->simpleIsolates; in ubidi_setPara()
2646 if((int32_t)(pBiDi->isolateCount*sizeof(Isolate))<=pBiDi->isolatesSize) in ubidi_setPara()
2647 pBiDi->isolates=pBiDi->isolatesMemory; in ubidi_setPara()
2649 if(getInitialIsolatesMemory(pBiDi, pBiDi->isolateCount)) { in ubidi_setPara()
2650 pBiDi->isolates=pBiDi->isolatesMemory; in ubidi_setPara()
2656 pBiDi->isolateCount=-1; /* current isolates stack entry == none */ in ubidi_setPara()
2662 pBiDi->direction=direction; in ubidi_setPara()
2666 pBiDi->trailingWSStart=0; in ubidi_setPara()
2670 pBiDi->trailingWSStart=0; in ubidi_setPara()
2676 switch(pBiDi->reorderingMode) { in ubidi_setPara()
2678 pBiDi->pImpTabPair=&impTab_DEFAULT; in ubidi_setPara()
2681 pBiDi->pImpTabPair=&impTab_NUMBERS_SPECIAL; in ubidi_setPara()
2684 pBiDi->pImpTabPair=&impTab_GROUP_NUMBERS_WITH_R; in ubidi_setPara()
2687 pBiDi->pImpTabPair=&impTab_INVERSE_NUMBERS_AS_L; in ubidi_setPara()
2690 if (pBiDi->reorderingOptions & UBIDI_OPTION_INSERT_MARKS) { in ubidi_setPara()
2691 pBiDi->pImpTabPair=&impTab_INVERSE_LIKE_DIRECT_WITH_MARKS; in ubidi_setPara()
2693 pBiDi->pImpTabPair=&impTab_INVERSE_LIKE_DIRECT; in ubidi_setPara()
2697 if (pBiDi->reorderingOptions & UBIDI_OPTION_INSERT_MARKS) { in ubidi_setPara()
2698 pBiDi->pImpTabPair=&impTab_INVERSE_FOR_NUMBERS_SPECIAL_WITH_MARKS; in ubidi_setPara()
2700 pBiDi->pImpTabPair=&impTab_INVERSE_FOR_NUMBERS_SPECIAL; in ubidi_setPara()
2719 if(embeddingLevels==NULL && pBiDi->paraCount<=1 && in ubidi_setPara()
2720 !(pBiDi->flags&DIRPROP_FLAG_MULTI_RUNS)) { in ubidi_setPara()
2721 resolveImplicitLevels(pBiDi, 0, length, in ubidi_setPara()
2722 GET_LR_FROM_LEVEL(GET_PARALEVEL(pBiDi, 0)), in ubidi_setPara()
2723 GET_LR_FROM_LEVEL(GET_PARALEVEL(pBiDi, length-1))); in ubidi_setPara()
2726 UBiDiLevel *levels=pBiDi->levels; in ubidi_setPara()
2732 level=GET_PARALEVEL(pBiDi, 0); in ubidi_setPara()
2748 sor=GET_LR_FROM_LEVEL(GET_PARALEVEL(pBiDi, start)); in ubidi_setPara()
2762 nextLevel=GET_PARALEVEL(pBiDi, length-1); in ubidi_setPara()
2775 resolveImplicitLevels(pBiDi, start, limit, sor, eor); in ubidi_setPara()
2785 if (U_FAILURE(pBiDi->insertPoints.errorCode)) in ubidi_setPara()
2787 *pErrorCode=pBiDi->insertPoints.errorCode; in ubidi_setPara()
2791 adjustWSLevels(pBiDi); in ubidi_setPara()
2797 if((pBiDi->defaultParaLevel>0) && in ubidi_setPara()
2798 (pBiDi->reorderingOptions & UBIDI_OPTION_INSERT_MARKS) && in ubidi_setPara()
2799 ((pBiDi->reorderingMode==UBIDI_REORDER_INVERSE_LIKE_DIRECT) || in ubidi_setPara()
2800 (pBiDi->reorderingMode==UBIDI_REORDER_INVERSE_FOR_NUMBERS_SPECIAL))) { in ubidi_setPara()
2804 for(i=0; i<pBiDi->paraCount; i++) { in ubidi_setPara()
2805 last=(pBiDi->paras[i].limit)-1; in ubidi_setPara()
2806 level=pBiDi->paras[i].level; in ubidi_setPara()
2809 start= i==0 ? 0 : pBiDi->paras[i-1].limit; in ubidi_setPara()
2818 addPoint(pBiDi, last, RLM_BEFORE); in ubidi_setPara()
2828 if(pBiDi->reorderingOptions & UBIDI_OPTION_REMOVE_CONTROLS) { in ubidi_setPara()
2829 pBiDi->resultLength -= pBiDi->controlCount; in ubidi_setPara()
2831 pBiDi->resultLength += pBiDi->insertPoints.size; in ubidi_setPara()
2833 setParaSuccess(pBiDi); /* mark successful setPara */ in ubidi_setPara()
2837 ubidi_orderParagraphsLTR(UBiDi *pBiDi, UBool orderParagraphsLTR) { in ubidi_orderParagraphsLTR() argument
2838 if(pBiDi!=NULL) { in ubidi_orderParagraphsLTR()
2839 pBiDi->orderParagraphsLTR=orderParagraphsLTR; in ubidi_orderParagraphsLTR()
2844 ubidi_isOrderParagraphsLTR(UBiDi *pBiDi) { in ubidi_isOrderParagraphsLTR() argument
2845 if(pBiDi!=NULL) { in ubidi_isOrderParagraphsLTR()
2846 return pBiDi->orderParagraphsLTR; in ubidi_isOrderParagraphsLTR()
2853 ubidi_getDirection(const UBiDi *pBiDi) { in ubidi_getDirection() argument
2854 if(IS_VALID_PARA_OR_LINE(pBiDi)) { in ubidi_getDirection()
2855 return pBiDi->direction; in ubidi_getDirection()
2862 ubidi_getText(const UBiDi *pBiDi) { in ubidi_getText() argument
2863 if(IS_VALID_PARA_OR_LINE(pBiDi)) { in ubidi_getText()
2864 return pBiDi->text; in ubidi_getText()
2871 ubidi_getLength(const UBiDi *pBiDi) { in ubidi_getLength() argument
2872 if(IS_VALID_PARA_OR_LINE(pBiDi)) { in ubidi_getLength()
2873 return pBiDi->originalLength; in ubidi_getLength()
2880 ubidi_getProcessedLength(const UBiDi *pBiDi) { in ubidi_getProcessedLength() argument
2881 if(IS_VALID_PARA_OR_LINE(pBiDi)) { in ubidi_getProcessedLength()
2882 return pBiDi->length; in ubidi_getProcessedLength()
2889 ubidi_getResultLength(const UBiDi *pBiDi) { in ubidi_getResultLength() argument
2890 if(IS_VALID_PARA_OR_LINE(pBiDi)) { in ubidi_getResultLength()
2891 return pBiDi->resultLength; in ubidi_getResultLength()
2900 ubidi_getParaLevel(const UBiDi *pBiDi) { in ubidi_getParaLevel() argument
2901 if(IS_VALID_PARA_OR_LINE(pBiDi)) { in ubidi_getParaLevel()
2902 return pBiDi->paraLevel; in ubidi_getParaLevel()
2909 ubidi_countParagraphs(UBiDi *pBiDi) { in ubidi_countParagraphs() argument
2910 if(!IS_VALID_PARA_OR_LINE(pBiDi)) { in ubidi_countParagraphs()
2913 return pBiDi->paraCount; in ubidi_countParagraphs()
2918 ubidi_getParagraphByIndex(const UBiDi *pBiDi, int32_t paraIndex, in ubidi_getParagraphByIndex() argument
2925 RETURN_VOID_IF_NOT_VALID_PARA_OR_LINE(pBiDi, *pErrorCode); in ubidi_getParagraphByIndex()
2926 RETURN_VOID_IF_BAD_RANGE(paraIndex, 0, pBiDi->paraCount, *pErrorCode); in ubidi_getParagraphByIndex()
2928 pBiDi=pBiDi->pParaBiDi; /* get Para object if Line object */ in ubidi_getParagraphByIndex()
2930 paraStart=pBiDi->paras[paraIndex-1].limit; in ubidi_getParagraphByIndex()
2938 *pParaLimit=pBiDi->paras[paraIndex].limit; in ubidi_getParagraphByIndex()
2941 *pParaLevel=GET_PARALEVEL(pBiDi, paraStart); in ubidi_getParagraphByIndex()
2946 ubidi_getParagraph(const UBiDi *pBiDi, int32_t charIndex, in ubidi_getParagraph() argument
2954 RETURN_IF_NOT_VALID_PARA_OR_LINE(pBiDi, *pErrorCode, -1); in ubidi_getParagraph()
2955 pBiDi=pBiDi->pParaBiDi; /* get Para object if Line object */ in ubidi_getParagraph()
2956 RETURN_IF_BAD_RANGE(charIndex, 0, pBiDi->length, *pErrorCode, -1); in ubidi_getParagraph()
2958 for(paraIndex=0; charIndex>=pBiDi->paras[paraIndex].limit; paraIndex++); in ubidi_getParagraph()
2959 ubidi_getParagraphByIndex(pBiDi, paraIndex, pParaStart, pParaLimit, pParaLevel, pErrorCode); in ubidi_getParagraph()
2964 ubidi_setClassCallback(UBiDi *pBiDi, UBiDiClassCallback *newFn, in ubidi_setClassCallback() argument
2969 if(pBiDi==NULL) { in ubidi_setClassCallback()
2975 *oldFn = pBiDi->fnClassCallback; in ubidi_setClassCallback()
2979 *oldContext = pBiDi->coClassCallback; in ubidi_setClassCallback()
2981 pBiDi->fnClassCallback = newFn; in ubidi_setClassCallback()
2982 pBiDi->coClassCallback = newContext; in ubidi_setClassCallback()
2986 ubidi_getClassCallback(UBiDi *pBiDi, UBiDiClassCallback **fn, const void **context) in ubidi_getClassCallback() argument
2988 if(pBiDi==NULL) { in ubidi_getClassCallback()
2993 *fn = pBiDi->fnClassCallback; in ubidi_getClassCallback()
2997 *context = pBiDi->coClassCallback; in ubidi_getClassCallback()
3002 ubidi_getCustomizedClass(UBiDi *pBiDi, UChar32 c) in ubidi_getCustomizedClass() argument
3006 if( pBiDi->fnClassCallback == NULL || in ubidi_getCustomizedClass()
3007 (dir = (*pBiDi->fnClassCallback)(pBiDi->coClassCallback, c)) == U_BIDI_CLASS_DEFAULT ) in ubidi_getCustomizedClass()
3009 dir = ubidi_getClass(pBiDi->bdp, c); in ubidi_getCustomizedClass()