/// <summary> /// Compare two string ids /// </summary> public int Compare(StringId x, StringId y) { return (!x.IsValid && !y.IsValid ? 0 : // both invalid ==> equal !x.IsValid && y.IsValid ? 2 : // first invalid second valid ==> pick an order x.IsValid && !y.IsValid ? -2 : // first valid second invalid ==> pick the oposite order m_stringTable.CompareCaseInsensitive(x, y)); // both valid ==> delegate }
/// <summary> /// Performs a case insensitive ordinal comparison against another PathAtom /// </summary> /// <remarks> /// Note that it is only meaningful to compare PathAtoms created against the same StringTable. /// </remarks> public int CaseInsensitiveCompareTo(StringTable stringTable, PathAtom other) { Contract.RequiresNotNull(stringTable); return(stringTable.CompareCaseInsensitive(StringId, other.StringId)); }