Lines Matching refs:pBiDi
128 UBiDi *pBiDi;
139 pBiDi=(UBiDi *)uprv_malloc(sizeof(UBiDi));
140 if(pBiDi==NULL) {
146 uprv_memset(pBiDi, 0, sizeof(UBiDi));
149 pBiDi->bdp=ubidi_getSingleton();
153 if( !getInitialDirPropsMemory(pBiDi, maxLength) ||
154 !getInitialLevelsMemory(pBiDi, maxLength)
159 pBiDi->mayAllocateText=TRUE;
165 pBiDi->runsSize=sizeof(Run);
166 } else if(!getInitialRunsMemory(pBiDi, maxRunCount)) {
170 pBiDi->mayAllocateRuns=TRUE;
174 return pBiDi;
176 ubidi_close(pBiDi);
234 ubidi_close(UBiDi *pBiDi) {
235 if(pBiDi!=NULL) {
236 pBiDi->pParaBiDi=NULL; /* in case one tries to reuse this block */
237 if(pBiDi->dirPropsMemory!=NULL) {
238 uprv_free(pBiDi->dirPropsMemory);
240 if(pBiDi->levelsMemory!=NULL) {
241 uprv_free(pBiDi->levelsMemory);
243 if(pBiDi->runsMemory!=NULL) {
244 uprv_free(pBiDi->runsMemory);
246 if(pBiDi->parasMemory!=NULL) {
247 uprv_free(pBiDi->parasMemory);
249 if(pBiDi->insertPoints.points!=NULL) {
250 uprv_free(pBiDi->insertPoints.points);
253 uprv_free(pBiDi);
260 ubidi_setInverse(UBiDi *pBiDi, UBool isInverse) {
261 if(pBiDi!=NULL) {
262 pBiDi->isInverse=isInverse;
263 pBiDi->reorderingMode = isInverse ? UBIDI_REORDER_INVERSE_NUMBERS_AS_L
269 ubidi_isInverse(UBiDi *pBiDi) {
270 if(pBiDi!=NULL) {
271 return pBiDi->isInverse;
293 ubidi_setReorderingMode(UBiDi *pBiDi, UBiDiReorderingMode reorderingMode) {
294 if ((pBiDi!=NULL) && (reorderingMode >= UBIDI_REORDER_DEFAULT)
296 pBiDi->reorderingMode = reorderingMode;
297 pBiDi->isInverse = (UBool)(reorderingMode == UBIDI_REORDER_INVERSE_NUMBERS_AS_L);
302 ubidi_getReorderingMode(UBiDi *pBiDi) {
303 if (pBiDi!=NULL) {
304 return pBiDi->reorderingMode;
311 ubidi_setReorderingOptions(UBiDi *pBiDi, uint32_t reorderingOptions) {
315 if (pBiDi!=NULL) {
316 pBiDi->reorderingOptions=reorderingOptions;
321 ubidi_getReorderingOptions(UBiDi *pBiDi) {
322 if (pBiDi!=NULL) {
323 return pBiDi->reorderingOptions;
360 firstL_R_AL(UBiDi *pBiDi) {
362 const UChar *text=pBiDi->prologue;
363 int32_t length=pBiDi->proLength;
370 dirProp=(DirProp)ubidi_getCustomizedClass(pBiDi, uchar);
390 getDirProps(UBiDi *pBiDi) {
391 const UChar *text=pBiDi->text;
392 DirProp *dirProps=pBiDi->dirPropsMemory; /* pBiDi->dirProps is const */
394 int32_t i=0, i1, length=pBiDi->originalLength;
398 UBool isDefaultLevel=IS_DEFAULT_LEVEL(pBiDi->paraLevel);
402 (pBiDi->reorderingMode==UBIDI_REORDER_INVERSE_LIKE_DIRECT ||
403 pBiDi->reorderingMode==UBIDI_REORDER_INVERSE_FOR_NUMBERS_SPECIAL);
406 UBool removeBiDiControls = (UBool)(pBiDi->reorderingOptions &
421 if(pBiDi->reorderingOptions & UBIDI_OPTION_STREAMING) {
422 pBiDi->length=0;
427 paraDirDefault=pBiDi->paraLevel&1 ? CONTEXT_RTL : 0;
428 if(pBiDi->proLength>0 &&
429 (lastStrong=firstL_R_AL(pBiDi))!=ON) {
450 flags|=DIRPROP_FLAG(dirProp=(DirProp)ubidi_getCustomizedClass(pBiDi, uchar));
490 if(pBiDi->reorderingOptions & UBIDI_OPTION_STREAMING) {
491 pBiDi->length=i; /* i is index to next character */
500 pBiDi->paraCount++;
520 pBiDi->paraLevel=GET_PARALEVEL(pBiDi, 0);
522 if(pBiDi->reorderingOptions & UBIDI_OPTION_STREAMING) {
523 if((lastStrongLTR>pBiDi->length) &&
524 (GET_PARALEVEL(pBiDi, lastStrongLTR)==0)) {
525 pBiDi->length = lastStrongLTR;
527 if(pBiDi->length<pBiDi->originalLength) {
528 pBiDi->paraCount--;
533 flags|=DIRPROP_FLAG_LR(pBiDi->paraLevel);
535 if(pBiDi->orderParagraphsLTR && (flags&DIRPROP_FLAG(B))) {
539 pBiDi->controlCount = controlCount;
540 pBiDi->flags=flags;
541 pBiDi->lastArabicPos=lastArabicPos;
548 directionFromFlags(UBiDi *pBiDi) {
549 Flags flags=pBiDi->flags;
613 resolveExplicitLevels(UBiDi *pBiDi) {
614 const DirProp *dirProps=pBiDi->dirProps;
615 UBiDiLevel *levels=pBiDi->levels;
616 const UChar *text=pBiDi->text;
618 int32_t i=0, length=pBiDi->length;
619 Flags flags=pBiDi->flags; /* collect all directionalities in the text */
621 UBiDiLevel level=GET_PARALEVEL(pBiDi, 0);
627 direction=directionFromFlags(pBiDi);
631 if((direction!=UBIDI_MIXED) && (pBiDi->paraCount==1)) {
633 } else if((pBiDi->paraCount==1) &&
635 (pBiDi->reorderingMode > UBIDI_REORDER_LAST_LOGICAL_TO_VISUAL))) {
720 level=GET_PARALEVEL(pBiDi, i);
722 embeddingLevel=GET_PARALEVEL(pBiDi, i+1);
724 pBiDi->paras[paraIndex++]=i+1;
757 flags|=DIRPROP_FLAG_LR(pBiDi->paraLevel);
759 if(pBiDi->orderParagraphsLTR && (flags&DIRPROP_FLAG(B))) {
766 pBiDi->flags=flags;
767 direction=directionFromFlags(pBiDi);
784 checkExplicitLevels(UBiDi *pBiDi, UErrorCode *pErrorCode) {
785 const DirProp *dirProps=pBiDi->dirProps;
787 UBiDiLevel *levels=pBiDi->levels;
788 const UChar *text=pBiDi->text;
790 int32_t i, length=pBiDi->length;
806 if((level<GET_PARALEVEL(pBiDi, i) &&
815 pBiDi->paras[paraIndex++]=i+1;
820 flags|=DIRPROP_FLAG_LR(pBiDi->paraLevel);
824 pBiDi->flags=flags;
825 return directionFromFlags(pBiDi);
1194 addPoint(UBiDi *pBiDi, int32_t pos, int32_t flag)
1201 InsertPoints * pInsertPoints=&(pBiDi->insertPoints);
1249 processPropertySeq(UBiDi *pBiDi, LevState *pLevState, uint8_t _prop,
1254 UBiDiLevel * levels=pBiDi->levels;
1279 addPoint(pBiDi, pLevState->startL2EN, LRM_BEFORE);
1283 pInsertPoints=&(pBiDi->insertPoints);
1296 addPoint(pBiDi, start0, LRM_BEFORE);
1312 addPoint(pBiDi, start0, LRM_BEFORE);
1319 pInsertPoints=&(pBiDi->insertPoints);
1330 if ((_prop == DirProp_AN) && (NO_CONTEXT_RTL(pBiDi->dirProps[start0]) == AN) &&
1331 (pBiDi->reorderingMode!=UBIDI_REORDER_INVERSE_FOR_NUMBERS_SPECIAL))
1342 addPoint(pBiDi, pLevState->startL2EN, LRM_BEFORE);
1346 addPoint(pBiDi, start0, LRM_BEFORE);
1364 addPoint(pBiDi, k, RLM_BEFORE); /* add RLM before */
1365 pInsertPoints=&(pBiDi->insertPoints);
1374 addPoint(pBiDi, start0, LRM_BEFORE); /* add LRM before */
1375 addPoint(pBiDi, start0, LRM_AFTER); /* add LRM after */
1380 pInsertPoints=&(pBiDi->insertPoints);
1384 addPoint(pBiDi, start0, RLM_BEFORE);
1395 pInsertPoints=&(pBiDi->insertPoints);
1442 lastL_R_AL(UBiDi *pBiDi) {
1444 const UChar *text=pBiDi->prologue;
1445 int32_t length=pBiDi->proLength;
1452 dirProp=(DirProp)ubidi_getCustomizedClass(pBiDi, uchar);
1467 firstL_R_AL_EN_AN(UBiDi *pBiDi) {
1469 const UChar *text=pBiDi->epilogue;
1470 int32_t length=pBiDi->epiLength;
1477 dirProp=(DirProp)ubidi_getCustomizedClass(pBiDi, uchar);
1495 resolveImplicitLevels(UBiDi *pBiDi,
1498 const DirProp *dirProps=pBiDi->dirProps;
1518 ((start<pBiDi->lastArabicPos) && (GET_PARALEVEL(pBiDi, start) & 1) &&
1519 (pBiDi->reorderingMode==UBIDI_REORDER_INVERSE_LIKE_DIRECT ||
1520 pBiDi->reorderingMode==UBIDI_REORDER_INVERSE_FOR_NUMBERS_SPECIAL));
1525 levState.runLevel=pBiDi->levels[start];
1526 levState.pImpTab=(const ImpTab*)((pBiDi->pImpTabPair)->pImpTab)[levState.runLevel&1];
1527 levState.pImpAct=(const ImpAct*)((pBiDi->pImpTabPair)->pImpAct)[levState.runLevel&1];
1528 if(start==0 && pBiDi->proLength>0) {
1529 DirProp lastStrong=lastL_R_AL(pBiDi);
1534 processPropertySeq(pBiDi, &levState, sor, start, start);
1588 processPropertySeq(pBiDi, &levState, resProp, start1, i);
1595 processPropertySeq(pBiDi, &levState, resProp, start1, start2);
1596 processPropertySeq(pBiDi, &levState, DirProp_ON, start2, i);
1600 processPropertySeq(pBiDi, &levState, resProp, start1, start2);
1611 if(limit==pBiDi->length && pBiDi->epiLength>0) {
1612 DirProp firstStrong=firstL_R_AL_EN_AN(pBiDi);
1617 processPropertySeq(pBiDi, &levState, eor, limit, limit);
1629 adjustWSLevels(UBiDi *pBiDi) {
1630 const DirProp *dirProps=pBiDi->dirProps;
1631 UBiDiLevel *levels=pBiDi->levels;
1634 if(pBiDi->flags&MASK_WS) {
1635 UBool orderParagraphsLTR=pBiDi->orderParagraphsLTR;
1638 i=pBiDi->trailingWSStart;
1645 levels[i]=GET_PARALEVEL(pBiDi, i);
1659 levels[i]=GET_PARALEVEL(pBiDi, i);
1668 ubidi_setContext(UBiDi *pBiDi,
1674 if(pBiDi==NULL || proLength<-1 || epiLength<-1 ||
1681 pBiDi->proLength=u_strlen(prologue);
1683 pBiDi->proLength=proLength;
1686 pBiDi->epiLength=u_strlen(epilogue);
1688 pBiDi->epiLength=epiLength;
1690 pBiDi->prologue=prologue;
1691 pBiDi->epilogue=epilogue;
1695 setParaSuccess(UBiDi *pBiDi) {
1696 pBiDi->proLength=0; /* forget the last context */
1697 pBiDi->epiLength=0;
1698 pBiDi->pParaBiDi=pBiDi; /* mark successful setPara */
1704 setParaRunsOnly(UBiDi *pBiDi, const UChar *text, int32_t length,
1721 pBiDi->reorderingMode=UBIDI_REORDER_DEFAULT;
1723 ubidi_setPara(pBiDi, text, length, paraLevel, NULL, pErrorCode);
1735 saveOptions=pBiDi->reorderingOptions;
1737 pBiDi->reorderingOptions&=~UBIDI_OPTION_INSERT_MARKS;
1738 pBiDi->reorderingOptions|=UBIDI_OPTION_REMOVE_CONTROLS;
1741 ubidi_setPara(pBiDi, text, length, paraLevel, NULL, pErrorCode);
1745 /* we cannot access directly pBiDi->levels since it is not yet set if
1748 levels=ubidi_getLevels(pBiDi, pErrorCode);
1749 uprv_memcpy(saveLevels, levels, pBiDi->length*sizeof(UBiDiLevel));
1750 saveTrailingWSStart=pBiDi->trailingWSStart;
1751 saveLength=pBiDi->length;
1752 saveDirection=pBiDi->direction;
1760 visualLength=ubidi_writeReordered(pBiDi, visualText, length,
1762 ubidi_getVisualMap(pBiDi, visualMap, pErrorCode);
1766 pBiDi->reorderingOptions=saveOptions;
1768 pBiDi->reorderingMode=UBIDI_REORDER_INVERSE_LIKE_DIRECT;
1777 saveMayAllocateText=pBiDi->mayAllocateText;
1778 pBiDi->mayAllocateText=FALSE;
1779 ubidi_setPara(pBiDi, visualText, visualLength, paraLevel, NULL, pErrorCode);
1780 pBiDi->mayAllocateText=saveMayAllocateText;
1781 ubidi_getRuns(pBiDi, pErrorCode);
1787 runCount=pBiDi->runCount;
1788 runs=pBiDi->runs;
1805 if(getRunsMemory(pBiDi, runCount+addedRuns)) {
1808 pBiDi->runsMemory[0]=runs[0];
1810 runs=pBiDi->runs=pBiDi->runsMemory;
1811 pBiDi->runCount+=addedRuns;
1867 pBiDi->paraLevel^=1;
1870 pBiDi->text=text;
1871 pBiDi->length=saveLength;
1872 pBiDi->originalLength=length;
1873 pBiDi->direction=saveDirection;
1875 if(saveLength>pBiDi->levelsSize) {
1876 saveLength=pBiDi->levelsSize;
1878 uprv_memcpy(pBiDi->levels, saveLevels, saveLength*sizeof(UBiDiLevel));
1879 pBiDi->trailingWSStart=saveTrailingWSStart;
1882 if(pBiDi->runCount>1) {
1883 pBiDi->direction=UBIDI_MIXED;
1886 pBiDi->reorderingMode=UBIDI_REORDER_RUNS_ONLY;
1892 ubidi_setPara(UBiDi *pBiDi, const UChar *text, int32_t length,
1899 if(pBiDi==NULL || text==NULL || length<-1 ||
1910 if(pBiDi->reorderingMode==UBIDI_REORDER_RUNS_ONLY) {
1911 setParaRunsOnly(pBiDi, text, length, paraLevel, pErrorCode);
1916 pBiDi->pParaBiDi=NULL; /* mark unfinished setPara */
1917 pBiDi->text=text;
1918 pBiDi->length=pBiDi->originalLength=pBiDi->resultLength=length;
1919 pBiDi->paraLevel=paraLevel;
1920 pBiDi->direction=UBIDI_LTR;
1921 pBiDi->paraCount=1;
1923 pBiDi->dirProps=NULL;
1924 pBiDi->levels=NULL;
1925 pBiDi->runs=NULL;
1926 pBiDi->insertPoints.size=0; /* clean up from last call */
1927 pBiDi->insertPoints.confirmed=0; /* clean up from last call */
1933 pBiDi->defaultParaLevel=paraLevel;
1935 pBiDi->defaultParaLevel=0;
1945 pBiDi->paraLevel&=1;
1946 pBiDi->defaultParaLevel=0;
1949 pBiDi->flags=DIRPROP_FLAG(R);
1950 pBiDi->direction=UBIDI_RTL;
1952 pBiDi->flags=DIRPROP_FLAG(L);
1953 pBiDi->direction=UBIDI_LTR;
1956 pBiDi->runCount=0;
1957 pBiDi->paraCount=0;
1958 setParaSuccess(pBiDi); /* mark successful setPara */
1962 pBiDi->runCount=-1;
1969 if(getDirPropsMemory(pBiDi, length)) {
1970 pBiDi->dirProps=pBiDi->dirPropsMemory;
1971 getDirProps(pBiDi);
1977 length= pBiDi->length;
1978 pBiDi->trailingWSStart=length; /* the levels[] will reflect the WS run */
1980 if(pBiDi->paraCount>1) {
1981 if(getInitialParasMemory(pBiDi, pBiDi->paraCount)) {
1982 pBiDi->paras=pBiDi->parasMemory;
1983 pBiDi->paras[pBiDi->paraCount-1]=length;
1990 pBiDi->paras=pBiDi->simpleParas;
1991 pBiDi->simpleParas[0]=length;
1997 if(getLevelsMemory(pBiDi, length)) {
1998 pBiDi->levels=pBiDi->levelsMemory;
1999 direction=resolveExplicitLevels(pBiDi);
2006 pBiDi->levels=embeddingLevels;
2007 direction=checkExplicitLevels(pBiDi, pErrorCode);
2017 pBiDi->direction=direction;
2021 pBiDi->paraLevel=(UBiDiLevel)((pBiDi->paraLevel+1)&~1);
2024 pBiDi->trailingWSStart=0;
2028 pBiDi->paraLevel|=1;
2031 pBiDi->trailingWSStart=0;
2037 switch(pBiDi->reorderingMode) {
2039 pBiDi->pImpTabPair=&impTab_DEFAULT;
2042 pBiDi->pImpTabPair=&impTab_NUMBERS_SPECIAL;
2045 pBiDi->pImpTabPair=&impTab_GROUP_NUMBERS_WITH_R;
2048 pBiDi->pImpTabPair=&impTab_INVERSE_NUMBERS_AS_L;
2051 if (pBiDi->reorderingOptions & UBIDI_OPTION_INSERT_MARKS) {
2052 pBiDi->pImpTabPair=&impTab_INVERSE_LIKE_DIRECT_WITH_MARKS;
2054 pBiDi->pImpTabPair=&impTab_INVERSE_LIKE_DIRECT;
2058 if (pBiDi->reorderingOptions & UBIDI_OPTION_INSERT_MARKS) {
2059 pBiDi->pImpTabPair=&impTab_INVERSE_FOR_NUMBERS_SPECIAL_WITH_MARKS;
2061 pBiDi->pImpTabPair=&impTab_INVERSE_FOR_NUMBERS_SPECIAL;
2080 if(embeddingLevels==NULL && pBiDi->paraCount<=1 &&
2081 !(pBiDi->flags&DIRPROP_FLAG_MULTI_RUNS)) {
2082 resolveImplicitLevels(pBiDi, 0, length,
2083 GET_LR_FROM_LEVEL(GET_PARALEVEL(pBiDi, 0)),
2084 GET_LR_FROM_LEVEL(GET_PARALEVEL(pBiDi, length-1)));
2087 UBiDiLevel *levels=pBiDi->levels;
2093 level=GET_PARALEVEL(pBiDi, 0);
2107 if((start>0) && (NO_CONTEXT_RTL(pBiDi->dirProps[start-1])==B)) {
2109 sor=GET_LR_FROM_LEVEL(GET_PARALEVEL(pBiDi, start));
2121 nextLevel=GET_PARALEVEL(pBiDi, length-1);
2134 resolveImplicitLevels(pBiDi, start, limit, sor, eor);
2144 if (U_FAILURE(pBiDi->insertPoints.errorCode))
2146 *pErrorCode=pBiDi->insertPoints.errorCode;
2150 adjustWSLevels(pBiDi);
2156 if((pBiDi->defaultParaLevel>0) &&
2157 (pBiDi->reorderingOptions & UBIDI_OPTION_INSERT_MARKS) &&
2158 ((pBiDi->reorderingMode==UBIDI_REORDER_INVERSE_LIKE_DIRECT) ||
2159 (pBiDi->reorderingMode==UBIDI_REORDER_INVERSE_FOR_NUMBERS_SPECIAL))) {
2162 for(i=0; i<pBiDi->paraCount; i++) {
2163 last=pBiDi->paras[i]-1;
2164 if((pBiDi->dirProps[last] & CONTEXT_RTL)==0) {
2167 start= i==0 ? 0 : pBiDi->paras[i - 1];
2169 dirProp=NO_CONTEXT_RTL(pBiDi->dirProps[j]);
2172 while(NO_CONTEXT_RTL(pBiDi->dirProps[last])==B) {
2176 addPoint(pBiDi, last, RLM_BEFORE);
2186 if(pBiDi->reorderingOptions & UBIDI_OPTION_REMOVE_CONTROLS) {
2187 pBiDi->resultLength -= pBiDi->controlCount;
2189 pBiDi->resultLength += pBiDi->insertPoints.size;
2191 setParaSuccess(pBiDi); /* mark successful setPara */
2195 ubidi_orderParagraphsLTR(UBiDi *pBiDi, UBool orderParagraphsLTR) {
2196 if(pBiDi!=NULL) {
2197 pBiDi->orderParagraphsLTR=orderParagraphsLTR;
2202 ubidi_isOrderParagraphsLTR(UBiDi *pBiDi) {
2203 if(pBiDi!=NULL) {
2204 return pBiDi->orderParagraphsLTR;
2211 ubidi_getDirection(const UBiDi *pBiDi) {
2212 if(IS_VALID_PARA_OR_LINE(pBiDi)) {
2213 return pBiDi->direction;
2220 ubidi_getText(const UBiDi *pBiDi) {
2221 if(IS_VALID_PARA_OR_LINE(pBiDi)) {
2222 return pBiDi->text;
2229 ubidi_getLength(const UBiDi *pBiDi) {
2230 if(IS_VALID_PARA_OR_LINE(pBiDi)) {
2231 return pBiDi->originalLength;
2238 ubidi_getProcessedLength(const UBiDi *pBiDi) {
2239 if(IS_VALID_PARA_OR_LINE(pBiDi)) {
2240 return pBiDi->length;
2247 ubidi_getResultLength(const UBiDi *pBiDi) {
2248 if(IS_VALID_PARA_OR_LINE(pBiDi)) {
2249 return pBiDi->resultLength;
2258 ubidi_getParaLevel(const UBiDi *pBiDi) {
2259 if(IS_VALID_PARA_OR_LINE(pBiDi)) {
2260 return pBiDi->paraLevel;
2267 ubidi_countParagraphs(UBiDi *pBiDi) {
2268 if(!IS_VALID_PARA_OR_LINE(pBiDi)) {
2271 return pBiDi->paraCount;
2276 ubidi_getParagraphByIndex(const UBiDi *pBiDi, int32_t paraIndex,
2283 RETURN_VOID_IF_NOT_VALID_PARA_OR_LINE(pBiDi, *pErrorCode);
2284 RETURN_VOID_IF_BAD_RANGE(paraIndex, 0, pBiDi->paraCount, *pErrorCode);
2286 pBiDi=pBiDi->pParaBiDi; /* get Para object if Line object */
2288 paraStart=pBiDi->paras[paraIndex-1];
2296 *pParaLimit=pBiDi->paras[paraIndex];
2299 *pParaLevel=GET_PARALEVEL(pBiDi, paraStart);
2304 ubidi_getParagraph(const UBiDi *pBiDi, int32_t charIndex,
2312 RETURN_IF_NOT_VALID_PARA_OR_LINE(pBiDi, *pErrorCode, -1);
2313 pBiDi=pBiDi->pParaBiDi; /* get Para object if Line object */
2314 RETURN_IF_BAD_RANGE(charIndex, 0, pBiDi->length, *pErrorCode, -1);
2316 for(paraIndex=0; charIndex>=pBiDi->paras[paraIndex]; paraIndex++);
2317 ubidi_getParagraphByIndex(pBiDi, paraIndex, pParaStart, pParaLimit, pParaLevel, pErrorCode);
2322 ubidi_setClassCallback(UBiDi *pBiDi, UBiDiClassCallback *newFn,
2327 if(pBiDi==NULL) {
2333 *oldFn = pBiDi->fnClassCallback;
2337 *oldContext = pBiDi->coClassCallback;
2339 pBiDi->fnClassCallback = newFn;
2340 pBiDi->coClassCallback = newContext;
2344 ubidi_getClassCallback(UBiDi *pBiDi, UBiDiClassCallback **fn, const void **context)
2346 if(pBiDi==NULL) {
2351 *fn = pBiDi->fnClassCallback;
2355 *context = pBiDi->coClassCallback;
2360 ubidi_getCustomizedClass(UBiDi *pBiDi, UChar32 c)
2364 if( pBiDi->fnClassCallback == NULL ||
2365 (dir = (*pBiDi->fnClassCallback)(pBiDi->coClassCallback, c)) == U_BIDI_CLASS_DEFAULT )
2367 return ubidi_getClass(pBiDi->bdp, c);