public class CodepointCollatingComparer extends Object implements AtomicComparer
The difference between using this class and using the underlying CodepointCollator directly is that the compare() method in this class expects two instances of AtomicValue as its operands, whereas the underlying class expects two instances of java.lang.String. This class makes use of the extra information held in the wrapping StringValue object, specifically, the knowledge of whether the string contains surrogate pairs.
Modifier and Type | Method and Description |
---|---|
int |
compareAtomicValues(AtomicValue a,
AtomicValue b)
Compare two AtomicValue objects according to the rules for their data type.
|
boolean |
comparesEqual(AtomicValue a,
AtomicValue b)
Compare two AtomicValue objects for equality.
|
StringCollator |
getCollator()
Get the collation used by this AtomicComparer if any
|
static CodepointCollatingComparer |
getInstance()
Get the singular instance of this class
|
AtomicComparer |
provideContext(XPathContext context)
Supply the dynamic context in case this is needed for the comparison
|
public static CodepointCollatingComparer getInstance()
public StringCollator getCollator()
AtomicComparer
getCollator
in interface AtomicComparer
public AtomicComparer provideContext(XPathContext context)
provideContext
in interface AtomicComparer
context
- the dynamic evaluation contextpublic int compareAtomicValues(AtomicValue a, AtomicValue b)
compareAtomicValues
in interface AtomicComparer
a
- the first object to be compared. This must be either be an instance
of AtomicValue, or null to represent an empty sequence. Empty collates before non-empty.b
- the second object to be compared. This must be either be an instance
of AtomicValue, or null to represent an empty sequence.ClassCastException
- if the objects are not comparablepublic boolean comparesEqual(AtomicValue a, AtomicValue b)
comparesEqual
in interface AtomicComparer
a
- the first object to be compared.b
- the second object to be compared.ClassCastException
- if either value is not xs:string or a subtypeCopyright (c) 2004-2014 Saxonica Limited. All rights reserved.