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); }
/// <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; } }
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); }
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); }
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); }
public static Invocation ToInvocation(this DeltaNode deltaNode) => new Invocation("New-CBreezeDeltaMenuSuiteNode", deltaNode.ToParameters());