Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
        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);
            }
        }
Exemplo n.º 3
0
        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);
            }
        }