/* ******************************************************************************* * * Copyright (C) 2003, International Business Machines * Corporation and others. All Rights Reserved. * ******************************************************************************* * * File line.h * * Modification History: * * Date Name Description * 07/07/2003 weiv Creation. ******************************************************************************* */ // // class Line // // Each line from the source file (containing a name, presumably) gets // one of these structs. // #ifndef COLPROBE_STRENGTHPROBE_H #define COLPROBE_STRENGTHPROBE_H #include "colprobe.h" #include "line.h" #include "unicode/uniset.h" #include "unicode/usetiter.h" class StrengthProbe { public: UChar SE; UChar B0; UChar B1; UChar B2; UChar B3; private: Line utilFirst; Line utilSecond; Line *utilFirstP; Line *utilSecondP; Line contractionUtilFirst; Line contractionUtilSecond; UBool probePrefix(const Line &x, const Line &y, UChar first, UChar second); UBool probeSuffix(const Line &x, const Line &y, UChar first, UChar second); UBool probePrefixNoSep(const Line &x, const Line &y, UChar first, UChar second); UBool probeSuffixNoSep(const Line &x, const Line &y, UChar first, UChar second); UBool frenchSecondary; public: CompareFn comparer; GetSortKeyFn skgetter; StrengthProbe() {}; StrengthProbe(CompareFn comparer, GetSortKeyFn getter, UChar SE = 0x0030, UChar B0 = 0x0061, UChar B1 = 0x0062, UChar B2 = 0x00E1, UChar B3 = 0x0041); //, UChar LB = 0x0039, UChar UB = 0xfa29); int setProbeChars(UChar B0, UChar B1, UChar B2, UChar B3); int checkSanity(); StrengthProbe(const StrengthProbe &that); StrengthProbe &operator=(const StrengthProbe &that); UColAttributeValue getStrength(const Line &x, const Line &y); UColAttributeValue getStrength(const UnicodeString &x, const UnicodeString &y); UColAttributeValue getPrefixedStrength(const Line &prefix, const Line &x, const Line &y); int32_t compare(const UnicodeString &x, const UnicodeString &y); int32_t compare(const Line &x, const Line &y); UColAttributeValue distanceFromEmptyString(const Line &x); UColAttributeValue distanceFromEmptyString(const UnicodeString &x); UBool isFrenchSecondary(UErrorCode &status); UBool isUpperFirst(UErrorCode &status); int getSortKey(const Line &l, uint8_t *buffer, int32_t buffCap) { return skgetter(l.name, l.len, buffer, buffCap); }; int getSortKey(UChar *string, int32_t sLen, uint8_t *buffer, int32_t buffCap) { return skgetter(string, sLen, buffer, buffCap); }; }; #endif //#ifndef COLPROBE_STRENGTHPROBE_H