Пример #1
0
        public virtual void InsertAtDelta(T item, long value)
        {
            DeltaNode c = f as DeltaNode;
            DeltaNode n = new DeltaNode(item, value);

            while (c != null)
            {
                if (c.next != null)
                {
                    if (value <= ((DeltaNode)c.next).d)
                    {
                        n.d = value;
                        _insertbef(c.next, n);
                        ((DeltaNode)c.next).d -= value;
                        return;
                    }
                }

                value -= c.d;
                c      = c.next as DeltaNode;
            }

            n.d = value;
            _insertend(n);
        }
Пример #2
0
        /// <summary>
        /// Convert DeltaNodes to DataTable
        /// </summary>
        /// <param name="nodes"></param>
        /// <returns></returns>
        public static DataTable DeltaNodesToDataTable(DeltaNode[] nodes)
        {
            try
            {
                DataTable dt = new DataTable("DeltaNodes");
                dt.Columns.Add("NodeID", typeof(int)).AutoIncrement = true;
                dt.Columns.Add("DeltaType", typeof(string));
                dt.Columns.Add("Variable", typeof(string));
                dt.Columns.Add("Value", typeof(string));

                for (int i = 0; i < nodes.Length; i++)
                {
                    DataRow   dr   = dt.NewRow();
                    DeltaNode node = nodes[i];

                    dr["DeltaType"] = node.DeltaType;
                    dr["Variable"]  = node.Variable;
                    dr["Value"]     = node.Value;

                    dt.Rows.Add(dr);
                }

                return(dt);
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
                //DebuggerTool.AddData(ex, "nodes", Debugger
                throw;
            }
        }
Пример #3
0
        public virtual void Add(T item, long value, bool absolute)
        {
            if (absolute)
            {
                value -= _sumto(l as DeltaNode);
            }

            if (value <= 0)
            {
                value = 0;
            }

            DeltaNode n = new DeltaNode(item, value);

            _insertend(n);
        }
Пример #4
0
        public virtual long DecreaseDelta(long decval)
        {
            DeltaNode c = f as DeltaNode;

            while (c != null)
            {
                if (c.d >= decval)
                {
                    c.d -= decval;
                    return(0);
                }

                decval -= c.d;
                c.d     = 0;
                c       = c.next as DeltaNode;
            }

            return(decval);
        }
Пример #5
0
        protected virtual long _sumto(DeltaNode n)
        {
            DeltaNode c   = f as DeltaNode;
            long      sum = 0;

            while (c != null)
            {
                sum += c.d;

                if (c == n)
                {
                    return(sum);
                }

                c = c.next as DeltaNode;
            }

            return(sum);
        }
Пример #6
0
 public static Invocation ToInvocation(this DeltaNode deltaNode) => new Invocation("New-CBreezeDeltaMenuSuiteNode", deltaNode.ToParameters());