public void Update(int divider, int offset, IntegerMapOffsetType type) { if (offset == 0) { return; } if (!Divider.HasValue) { Divider = divider; } if (divider < Divider.Value) { UpdateLower(divider, offset, type); } else if (divider > Divider.Value) { UpdateUpper(divider, offset, type); } else if (type == IntegerMapOffsetType.LessThanDivider) { AddToLower(offset); } else { AddToUpper(offset); } }
private void UpdateUpper(int divider, int offset, IntegerMapOffsetType type) { if (UpperNode == null) { UpperNode = new IntegerMapNode(); } UpperNode.Update(divider, offset, type); if (type == IntegerMapOffsetType.LessThanDivider) { AddToLower(offset); } }
private void UpdateLower(int divider, int offset, IntegerMapOffsetType type) { if (LowerNode == null) { LowerNode = new IntegerMapNode(); } LowerNode.Update(divider, offset, type); if (type == IntegerMapOffsetType.GreaterThanOrEqualToDivider) { AddToUpper(offset); } }