Lines Matching defs:ce
323 // Find or insert a node whose index we will put into a temporary CE.
342 // We do not support tailoring to an unassigned-implicit CE.
382 // A non-common weight is only possible from a root CE.
460 // Strength of the temporary CE = strength of its reset position.
475 int64_t ce;
503 ce = rootElements.getLastTertiaryCE();
527 ce = rootElements.getFirstSecondaryCE();
532 ce = rootElements.getLastSecondaryCE();
536 ce = rootElements.getFirstPrimaryCE();
540 ce = rootElements.lastCEWithPrimaryBefore(variableTop + 1);
543 ce = rootElements.firstCEWithPrimaryAtLeast(variableTop + 1);
547 // Use the Hani-first-primary rather than the actual last "regular" CE before it,
550 ce = rootElements.firstCEWithPrimaryAtLeast(
556 ce = baseData->getCEFromOffsetCE32(0x4e00, ce32);
560 // We do not support tailoring to an unassigned-implicit CE.
565 ce = Collation::makeCE(Collation::FIRST_TRAILING_PRIMARY);
577 int32_t index = findOrInsertNodeForRootCE(ce, strength, errorCode);
585 // Find the first character tailored after the boundary CE,
586 // or the first real root CE after it.
593 ce = tempCEFromIndexAndStrength(index, strength);
596 uint32_t p = (uint32_t)(ce >> 32);
600 ce = Collation::makeCE(p);
601 index = findOrInsertNodeForRootCE(ce, UCOL_PRIMARY, errorCode);
616 ce = tempCEFromIndexAndStrength(index, strength);
630 // Do not make a temporary CE for a root node.
631 // This last node might be the node for the root CE itself,
634 ce = tempCEFromIndexAndStrength(index, strength);
637 return ce;
694 int64_t ce = ces[cesLength - 1];
695 if(strength == UCOL_PRIMARY && !isTempCE(ce) && (uint32_t)(ce >> 32) == 0) {
701 if(strength == UCOL_QUATERNARY && ce == 0) {
702 // The CE data structure does not support non-zero quaternary weights
714 // Strength of the temporary CE:
715 // The new relation may yield a stronger CE but not a weaker one.
716 int32_t tempStrength = ceStrength(ce);
761 // Find the last CE that is at least as "strong" as the requested difference.
763 int64_t ce;
766 ce = ces[0] = 0;
770 ce = ces[cesLength - 1];
772 if(ceStrength(ce) <= strength) { break; }
775 if(isTempCE(ce)) {
778 return indexFromTempCE(ce);
781 // root CE
782 if((uint8_t)(ce >> 56) == Collation::UNASSIGNED_IMPLICIT_BYTE) {
787 return findOrInsertNodeForRootCE(ce, strength, errorCode);
791 CollationBuilder::findOrInsertNodeForRootCE(int64_t ce, int32_t strength, UErrorCode &errorCode) {
793 U_ASSERT((uint8_t)(ce >> 56) != Collation::UNASSIGNED_IMPLICIT_BYTE);
795 // Find or insert the node for each of the root CE's weights,
798 U_ASSERT((ce & 0xc0) == 0);
799 int32_t index = findOrInsertNodeForPrimary((uint32_t)(ce >> 32) , errorCode);
801 uint32_t lower32 = (uint32_t)ce;
875 // Find the root CE's weight for this level.
891 // Found the node for the root CE up to this level.
1005 int64_t ce = baseCEs.getCE(i);
1006 if((ce >> 32) != 0) {
1008 uint32_t c = ((uint32_t)ce >> 14) & 3;
1009 U_ASSERT(c == 0 || c == 2); // lowercase or uppercase, no mixed case in any base CE
1029 int64_t ce = ces[i] & INT64_C(0xffffffffffff3fff); // clear old case bits
1030 int32_t strength = ceStrength(ce);
1032 ce |= (cases & 3) << 14;
1037 ce |= 0x8000;
1041 // since currently only U+0345 is cased and maps to a secondary CE,
1044 ces[i] = ce;
1401 // Gap at the beginning of the tertiary CE range.
1444 // Gap at the beginning of the secondary CE range.
1551 virtual int64_t modifyCE(int64_t ce) const {
1552 if(CollationBuilder::isTempCE(ce)) {
1554 return finalCEs[CollationBuilder::indexFromTempCE(ce)] | (ce & 0xc000);
1583 CollationBuilder::ceStrength(int64_t ce) {
1585 isTempCE(ce) ? strengthFromTempCE(ce) :
1586 (ce & INT64_C(0xff00000000000000)) != 0 ? UCOL_PRIMARY :
1587 ((uint32_t)ce & 0xff000000) != 0 ? UCOL_SECONDARY :
1588 ce != 0 ? UCOL_TERTIARY :