net.sf.saxon.sort
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.
Method Summary | |
---|---|
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. |
ComparisonKey | getComparisonKey(AtomicValue a)
Get a comparison key for an object. |
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
|
Parameters: 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.
Returns: <0 if a0 if a>b
Throws: ClassCastException if the objects are not comparable
Parameters: a the first object to be compared. b the second object to be compared.
Returns: <0 if a0 if a>b
Throws: ClassCastException if either value is not xs:string or a subtype
Returns: the singleton instance
Parameters: context the dynamic evaluation context
Returns: either the original AtomicComparer, or a new AtomicComparer in which the context is known. The original AtomicComparer is not modified