using System.Collections.Generic;

namespace AppsheetEpplus;

internal class DependencyChain {
  internal List<FormulaCell> list = new();
  internal Dictionary<ulong, int> index = new();
  internal List<int> CalcOrder = new();

  internal void Add(FormulaCell f) {
    list.Add(f);
    f.Index = list.Count - 1;
    index.Add(ExcelCellBase.GetCellId(f.SheetID, f.Row, f.Column), f.Index);
  }
}
