Lines Matching defs:ce
330 // Find or insert a node whose index we will put into a temporary CE.
349 // We do not support tailoring to an unassigned-implicit CE.
425 // Strength of the temporary CE = strength of its reset position.
439 // Collect the root CE weights if this node is for a root CE.
440 // If it is not, then return the low non-primary boundary for a tailored CE.
467 // [p, s, t] is a root CE. Return the preceding weight for the requested level.
483 int64_t ce;
511 ce = rootElements.getLastTertiaryCE();
535 ce = rootElements.getFirstSecondaryCE();
540 ce = rootElements.getLastSecondaryCE();
544 ce = rootElements.getFirstPrimaryCE();
548 ce = rootElements.lastCEWithPrimaryBefore(variableTop + 1);
551 ce = rootElements.firstCEWithPrimaryAtLeast(variableTop + 1);
555 // Use the Hani-first-primary rather than the actual last "regular" CE before it,
558 ce = rootElements.firstCEWithPrimaryAtLeast(
562 ce = baseData->getSingleCE(0x4e00, errorCode);
565 // We do not support tailoring to an unassigned-implicit CE.
570 ce = Collation::makeCE(Collation::FIRST_TRAILING_PRIMARY);
582 int32_t index = findOrInsertNodeForRootCE(ce, strength, errorCode);
590 // Find the first character tailored after the boundary CE,
591 // or the first real root CE after it.
598 ce = tempCEFromIndexAndStrength(index, strength);
601 uint32_t p = (uint32_t)(ce >> 32);
605 ce = Collation::makeCE(p);
606 index = findOrInsertNodeForRootCE(ce, UCOL_PRIMARY, errorCode);
621 ce = tempCEFromIndexAndStrength(index, strength);
635 // Do not make a temporary CE for a root node.
636 // This last node might be the node for the root CE itself,
639 ce = tempCEFromIndexAndStrength(index, strength);
642 return ce;
699 int64_t ce = ces[cesLength - 1];
700 if(strength == UCOL_PRIMARY && !isTempCE(ce) && (uint32_t)(ce >> 32) == 0) {
706 if(strength == UCOL_QUATERNARY && ce == 0) {
707 // The CE data structure does not support non-zero quaternary weights
719 // Strength of the temporary CE:
720 // The new relation may yield a stronger CE but not a weaker one.
721 int32_t tempStrength = ceStrength(ce);
766 CE that is at least as "strong" as the requested difference.
768 int64_t ce;
771 ce = ces[0] = 0;
775 ce = ces[cesLength - 1];
777 if(ceStrength(ce) <= strength) { break; }
780 if(isTempCE(ce)) {
783 return indexFromTempCE(ce);
786 // root CE
787 if((uint8_t)(ce >> 56) == Collation::UNASSIGNED_IMPLICIT_BYTE) {
792 return findOrInsertNodeForRootCE(ce, strength, errorCode);
796 CollationBuilder::findOrInsertNodeForRootCE(int64_t ce, int32_t strength, UErrorCode &errorCode) {
798 U_ASSERT((uint8_t)(ce >> 56) != Collation::UNASSIGNED_IMPLICIT_BYTE);
800 // Find or insert the node for each of the root CE's weights,
803 U_ASSERT((ce & 0xc0) == 0);
804 int32_t index = findOrInsertNodeForPrimary((uint32_t)(ce >> 32), errorCode);
806 uint32_t lower32 = (uint32_t)ce;
908 // Find the root CE's weight for this level.
923 // Found the node for the root CE up to this level.
1038 int64_t ce = baseCEs.getCE(i);
1039 if((ce >> 32) != 0) {
1041 uint32_t c = ((uint32_t)ce >> 14) & 3;
1042 U_ASSERT(c == 0 || c == 2); // lowercase or uppercase, no mixed case in any base CE
1062 int64_t ce = ces[i] & INT64_C(0xffffffffffff3fff); // clear old case bits
1063 int32_t strength = ceStrength(ce);
1065 ce |= (cases & 3) << 14;
1070 ce |= 0x8000;
1074 // since currently only U+0345 is cased and maps to a secondary CE,
1077 ces[i] = ce;
1437 // Gap at the beginning of the tertiary CE range.
1480 // Gap at the beginning of the secondary CE range.
1592 virtual int64_t modifyCE(int64_t ce) const {
1593 if(CollationBuilder::isTempCE(ce)) {
1595 return finalCEs[CollationBuilder::indexFromTempCE(ce)] | (ce & 0xc000);
1623 CollationBuilder::ceStrength(int64_t ce) {
1625 isTempCE(ce) ? strengthFromTempCE(ce) :
1626 (ce & INT64_C(0xff00000000000000)) != 0 ? UCOL_PRIMARY :
1627 ((uint32_t)ce & 0xff000000) != 0 ? UCOL_SECONDARY :
1628 ce != 0 ? UCOL_TERTIARY :