// Token: 0x0600077E RID: 1918 RVA: 0x00039475 File Offset: 0x00037675 private static byte GetAfterVal(int index, byte[] afterOrdinal) { if (afterOrdinal == null) { return(byte.MaxValue); } return(BinaryOrdinalGenerator.GetValEx(index, byte.MaxValue, afterOrdinal)); }
// Token: 0x0600077D RID: 1917 RVA: 0x00039466 File Offset: 0x00037666 private static byte GetBeforeVal(int index, byte[] beforeOrdinal) { if (beforeOrdinal == null) { return(0); } return(BinaryOrdinalGenerator.GetValEx(index, 0, beforeOrdinal)); }
// Token: 0x0600077A RID: 1914 RVA: 0x00039368 File Offset: 0x00037568 public static byte[] GetInbetweenOrdinalValue(byte[] beforeOrdinal, byte[] afterOrdinal) { int num = 0; int num2 = Math.Max((beforeOrdinal != null) ? beforeOrdinal.Length : 0, (afterOrdinal != null) ? afterOrdinal.Length : 0) + 1; byte[] array = new byte[num2]; if (beforeOrdinal != null && afterOrdinal != null && Utilities.CompareByteArrays(beforeOrdinal, afterOrdinal) >= 0) { throw new OwaInvalidOperationException("Previous ordinal value is greater then after ordinal value"); } if (beforeOrdinal != null && BinaryOrdinalGenerator.CheckAllZero(beforeOrdinal)) { beforeOrdinal = null; } if (afterOrdinal != null && BinaryOrdinalGenerator.CheckAllZero(afterOrdinal)) { afterOrdinal = null; } byte beforeVal; byte afterVal; for (;;) { beforeVal = BinaryOrdinalGenerator.GetBeforeVal(num, beforeOrdinal); afterVal = BinaryOrdinalGenerator.GetAfterVal(num, afterOrdinal); if (afterVal > beforeVal + 1) { break; } array[num++] = beforeVal; if (beforeVal + 1 == afterVal) { afterOrdinal = null; } } array[num++] = (afterVal + beforeVal) / 2; byte[] array2 = new byte[num]; Array.Copy(array, array2, num); return(array2); }
// Token: 0x06000C83 RID: 3203 RVA: 0x000553D8 File Offset: 0x000535D8 private void CheckSequence(int index, NodeType node) { byte[] array = null; byte[] array2 = null; if (index > 0) { NodeType nodeType = this[index - 1]; array2 = nodeType.NavigationNodeOrdinal; } if (index < this.Count - 1) { NodeType nodeType2 = this[index + 1]; array = nodeType2.NavigationNodeOrdinal; } byte[] navigationNodeOrdinal = node.NavigationNodeOrdinal; if (navigationNodeOrdinal == null || (array != null && Utilities.CompareByteArrays(navigationNodeOrdinal, array) >= 0) || (array2 != null && Utilities.CompareByteArrays(navigationNodeOrdinal, array2) <= 0)) { if (Utilities.CompareByteArrays(array2, array) == 0) { int i; for (i = index - 1; i >= 0; i--) { NodeType nodeType3 = this[i]; if (Utilities.CompareByteArrays(nodeType3.NavigationNodeOrdinal, array2) != 0) { break; } } int j; for (j = index + 1; j < this.Count; j++) { byte[] array3 = array; NodeType nodeType4 = this[j]; if (Utilities.CompareByteArrays(array3, nodeType4.NavigationNodeOrdinal) != 0) { break; } } byte[] array4; if (i >= 0) { NodeType nodeType5 = this[i]; array4 = nodeType5.NavigationNodeOrdinal; } else { array4 = null; } array2 = array4; byte[] array5; if (j < this.Count) { NodeType nodeType6 = this[j]; array5 = nodeType6.NavigationNodeOrdinal; } else { array5 = null; } array = array5; for (int k = i + 1; k < j; k++) { NodeType nodeType7 = this[k]; nodeType7.NavigationNodeOrdinal = BinaryOrdinalGenerator.GetInbetweenOrdinalValue(array2, array); NodeType nodeType8 = this[k]; array2 = nodeType8.NavigationNodeOrdinal; } return; } node.NavigationNodeOrdinal = BinaryOrdinalGenerator.GetInbetweenOrdinalValue(array2, array); } }