Lines Matching refs:elems
211 UCollationPCE(UCollationElements *elems);
222 UCollationPCE::UCollationPCE(UCollationElements *elems) in UOBJECT_DEFINE_RTTI_IMPLEMENTATION()
224 init(elems->iteratordata_.coll); in UOBJECT_DEFINE_RTTI_IMPLEMENTATION()
246 inline uint64_t processCE(UCollationElements *elems, uint32_t ce) in processCE() argument
253 switch(elems->pce->strength) { in processCE()
274 if ((elems->pce->toShift && elems->pce->variableTop > ce && primary != 0) in processCE()
275 || (elems->pce->isShifted && primary == 0)) { in processCE()
281 if (elems->pce->strength >= UCOL_QUATERNARY) { in processCE()
286 elems->pce->isShifted = TRUE; in processCE()
288 if (elems->pce->strength >= UCOL_QUATERNARY) { in processCE()
292 elems->pce->isShifted = FALSE; in processCE()
299 uprv_init_pce(const UCollationElements *elems) in uprv_init_pce() argument
301 if (elems->pce != NULL) { in uprv_init_pce()
302 elems->pce->init(elems->iteratordata_.coll); in uprv_init_pce()
340 ucol_closeElements(UCollationElements *elems) in ucol_closeElements() argument
342 if (elems != NULL) { in ucol_closeElements()
343 collIterate *ci = &elems->iteratordata_; in ucol_closeElements()
353 if (elems->isWritable && elems->iteratordata_.string != NULL) in ucol_closeElements()
355 uprv_free((UChar *)elems->iteratordata_.string); in ucol_closeElements()
358 if (elems->pce != NULL) { in ucol_closeElements()
359 delete elems->pce; in ucol_closeElements()
362 delete elems; in ucol_closeElements()
367 ucol_reset(UCollationElements *elems) in ucol_reset() argument
369 collIterate *ci = &(elems->iteratordata_); in ucol_reset()
370 elems->reset_ = TRUE; in ucol_reset()
389 ucol_forceHanImplicit(UCollationElements *elems, UErrorCode *status) in ucol_forceHanImplicit() argument
395 if (elems == NULL) { in ucol_forceHanImplicit()
400 elems->iteratordata_.flags |= UCOL_FORCE_HAN_IMPLICIT; in ucol_forceHanImplicit()
404 ucol_next(UCollationElements *elems, in ucol_next() argument
412 elems->reset_ = FALSE; in ucol_next()
414 result = (int32_t)ucol_getNextCE(elems->iteratordata_.coll, in ucol_next()
415 &elems->iteratordata_, in ucol_next()
425 ucol_nextProcessed(UCollationElements *elems, in ucol_nextProcessed() argument
430 const UCollator *coll = elems->iteratordata_.coll; in ucol_nextProcessed()
438 if (elems->pce == NULL) { in ucol_nextProcessed()
439 elems->pce = new UCollationPCE(elems); in ucol_nextProcessed()
441 elems->pce->pceBuffer.reset(); in ucol_nextProcessed()
444 elems->reset_ = FALSE; in ucol_nextProcessed()
447 low = ucol_getOffset(elems); in ucol_nextProcessed()
448 uint32_t ce = (uint32_t) ucol_getNextCE(coll, &elems->iteratordata_, status); in ucol_nextProcessed()
449 high = ucol_getOffset(elems); in ucol_nextProcessed()
456 result = processCE(elems, ce); in ucol_nextProcessed()
471 ucol_previous(UCollationElements *elems, in ucol_previous() argument
481 if (elems->reset_ && (elems->iteratordata_.pos == elems->iteratordata_.string)) { in ucol_previous()
482 if (elems->iteratordata_.endp == NULL) { in ucol_previous()
483 elems->iteratordata_.endp = elems->iteratordata_.string + in ucol_previous()
484 u_strlen(elems->iteratordata_.string); in ucol_previous()
485 elems->iteratordata_.flags |= UCOL_ITER_HASLEN; in ucol_previous()
487 elems->iteratordata_.pos = elems->iteratordata_.endp; in ucol_previous()
488 elems->iteratordata_.fcdPosition = elems->iteratordata_.endp; in ucol_previous()
491 elems->reset_ = FALSE; in ucol_previous()
493 result = (int32_t)ucol_getPrevCE(elems->iteratordata_.coll, in ucol_previous()
494 &(elems->iteratordata_), in ucol_previous()
506 ucol_previousProcessed(UCollationElements *elems, in ucol_previousProcessed() argument
511 const UCollator *coll = elems->iteratordata_.coll; in ucol_previousProcessed()
523 if (elems->reset_ && in ucol_previousProcessed()
524 (elems->iteratordata_.pos == elems->iteratordata_.string)) { in ucol_previousProcessed()
525 if (elems->iteratordata_.endp == NULL) { in ucol_previousProcessed()
526 elems->iteratordata_.endp = elems->iteratordata_.string + in ucol_previousProcessed()
527 u_strlen(elems->iteratordata_.string); in ucol_previousProcessed()
528 elems->iteratordata_.flags |= UCOL_ITER_HASLEN; in ucol_previousProcessed()
531 elems->iteratordata_.pos = elems->iteratordata_.endp; in ucol_previousProcessed()
532 elems->iteratordata_.fcdPosition = elems->iteratordata_.endp; in ucol_previousProcessed()
535 if (elems->pce == NULL) { in ucol_previousProcessed()
536 elems->pce = new UCollationPCE(elems); in ucol_previousProcessed()
541 elems->reset_ = FALSE; in ucol_previousProcessed()
543 while (elems->pce->pceBuffer.empty()) { in ucol_previousProcessed()
550 high = ucol_getOffset(elems); in ucol_previousProcessed()
551 ce = ucol_getPrevCE(coll, &elems->iteratordata_, status); in ucol_previousProcessed()
552 low = ucol_getOffset(elems); in ucol_previousProcessed()
569 result = processCE(elems, rcei->ce); in ucol_previousProcessed()
572 elems->pce->pceBuffer.put(result, rcei->low, rcei->high); in ucol_previousProcessed()
578 if (elems->pce->pceBuffer.empty()) { in ucol_previousProcessed()
591 const PCEI *pcei = elems->pce->pceBuffer.get(); in ucol_previousProcessed()
605 ucol_getMaxExpansion(const UCollationElements *elems, in ucol_getMaxExpansion() argument
611 UCOL_GETMAXEXPANSION(elems->iteratordata_.coll, (uint32_t)order, result); in ucol_getMaxExpansion()
613 const UCollator *coll = elems->iteratordata_.coll; in ucol_getMaxExpansion()
665 ucol_setText( UCollationElements *elems, in ucol_setText() argument
674 if (elems->isWritable && elems->iteratordata_.string != NULL) in ucol_setText()
676 uprv_free((UChar *)elems->iteratordata_.string); in ucol_setText()
683 elems->isWritable = FALSE; in ucol_setText()
686 ucol_freeOffsetBuffer(&(elems->iteratordata_)); in ucol_setText()
688 if (elems->iteratordata_.extendCEs != NULL) { in ucol_setText()
689 uprv_free(elems->iteratordata_.extendCEs); in ucol_setText()
691 uprv_init_collIterate(elems->iteratordata_.coll, text, textLength, in ucol_setText()
692 &elems->iteratordata_, status); in ucol_setText()
694 elems->reset_ = TRUE; in ucol_setText()
698 ucol_getOffset(const UCollationElements *elems) in ucol_getOffset() argument
700 const collIterate *ci = &(elems->iteratordata_); in ucol_getOffset()
727 ucol_setOffset(UCollationElements *elems, in ucol_setOffset() argument
737 collIterate *ci = &(elems->iteratordata_); in ucol_setOffset()
748 elems->reset_ = FALSE; in ucol_setOffset()