protected internal static int BinarySearch(UnmanagedStringArray a, UnmanagedStringArray.UnmanagedString key, int low, int high) { while (low <= high) { int mid = Number.URShift((low + high), 1); var midVal = a[mid]; int cmp; if (midVal.IsNull == false) { cmp = UnmanagedStringArray.UnmanagedString.CompareOrdinal(midVal, key); } else { cmp = -1; } if (cmp < 0) { low = mid + 1; } else if (cmp > 0) { high = mid - 1; } else { return(mid); } } return(-(low + 1)); }
public AlphanumericStringComparisonState(UnmanagedStringArray.UnmanagedString originalString) { StringLength = Encoding.UTF8.GetCharCount(originalString.StringAsBytes); OriginalString = originalString; CurSequenceStartPosition = 0; NumberLength = 0; CurSequenceIsNumber = false; CurCharacter = (char)0; CurPositionInString = 0; StringBufferOffset = 0; }
public override void SetBottom(int bottom) { bottomSlot = bottom; if (readerGen[bottom] != currentReaderGen) { Convert(bottomSlot); } bottomOrd = ords[bottom]; System.Diagnostics.Debug.Assert(bottomOrd >= 0); System.Diagnostics.Debug.Assert(bottomOrd < lookup.Length); bottomValue = values[bottom]; }
public override void SetBottom(int slot) { _bottom = _values[slot]; }
private static bool IsNull(UnmanagedStringArray.UnmanagedString str1) { return(str1.IsNull || UnmanagedStringArray.UnmanagedString.CompareOrdinal(str1, NullValue) == 0); }
protected internal static int BinarySearch(UnmanagedStringArray a, UnmanagedStringArray.UnmanagedString key) { return(BinarySearch(a, key, 0, a.Length - 1)); }