33#if !UCONFIG_NO_COLLATION
42class RuleBasedCollator;
43class CollationKeyByteSink;
163 UBool isBogus(
void)
const;
174 const uint8_t* getByteArray(int32_t& count)
const;
176#ifdef U_USE_COLLATION_KEY_DEPRECATES
187#ifndef U_HIDE_DEPRECATED_API
252 uint8_t *reallocate(int32_t
newCapacity, int32_t length);
256 void setLength(int32_t newLength);
258 uint8_t *getBytes() {
259 return (fFlagAndLength >= 0) ? fUnion.fStackBuffer : fUnion.fFields.fBytes;
261 const uint8_t *getBytes()
const {
262 return (fFlagAndLength >= 0) ? fUnion.fStackBuffer : fUnion.fFields.fBytes;
264 int32_t getCapacity()
const {
265 return (fFlagAndLength >= 0) ? (int32_t)
sizeof(fUnion) : fUnion.fFields.fCapacity;
267 int32_t getLength()
const {
return fFlagAndLength & 0x7fffffff; }
273 CollationKey& setToBogus(
void);
278 CollationKey& reset(
void);
284 friend class CollationKeyByteSink;
297 int32_t fFlagAndLength;
302 mutable int32_t fHashCode;
307 union StackBufferOrFields {
309 uint8_t fStackBuffer[32];
320 return !(*
this ==
other);
324CollationKey::isBogus()
const
326 return fHashCode == 2;
330CollationKey::getByteArray(int32_t &count)
const
Collation keys are generated by the Collator class.
virtual ~CollationKey()
Sort key destructor.
const CollationKey & operator=(const CollationKey &other)
Assignment operator.
CollationKey(const CollationKey &other)
Copy constructor.
UBool operator==(const CollationKey &source) const
Compare if two collation keys are the same.
virtual UClassID getDynamicClassID() const
ICU "poor man's RTTI", returns a UClassID for the actual class.
UCollationResult compareTo(const CollationKey &target, UErrorCode &status) const
Convenience method which does a string(bit-wise) comparison of the two collation keys.
static UClassID getStaticClassID()
ICU "poor man's RTTI", returns a UClassID for this class.
CollationKey(const uint8_t *values, int32_t count)
Creates a collation key based on the collation key values.
Collator::EComparisonResult compareTo(const CollationKey &target) const
Convenience method which does a string(bit-wise) comparison of the two collation keys.
CollationKey()
This creates an empty collation key based on the null string.
int32_t hashCode(void) const
Creates an integer that is unique to the collation key.
EComparisonResult
LESS is returned if source string is compared to be less than target string in the compare() method.
"Smart pointer" base class; do not use directly: use LocalPointer etc.
The RuleBasedCollator class provides the implementation of Collator, using data-driven tables.
UObject is the common ICU "boilerplate" class.
C++ API: Collation Service.
UBool operator!=(const StringPiece &x, const StringPiece &y)
Global operator != for StringPiece.
UCollationResult
UCOL_LESS is returned if source string is compared to be less than target string in the ucol_strcoll(...
int8_t UBool
The ICU boolean type.
C++ API: Common ICU base class UObject.
void * UClassID
UClassID is used to identify classes without using the compiler's RTTI.
Basic definitions for ICU, for both C and C++ APIs.
UErrorCode
Error code to replace exception handling, so that the code is compatible with all C++ compilers,...
#define U_I18N_API
Set to export library symbols from inside the i18n library, and to import them from outside.
#define U_NAMESPACE_END
This is used to end a declaration of a public ICU C++ API.
#define U_NAMESPACE_BEGIN
This is used to begin a declaration of a public ICU C++ API.