// ugly but x2 faster than the method based on IEnumerable protected int indexOf(ISliceView <ITokenMatch <SYMBOL_ENUM> > view) { int power = 1; int result = 0; for (int i = 0; i < LookaheadWidth; ++i) { result += power * ((int)(object)(view[i].Token)); power *= edgesTable.GetLength(1); } return(result); }
// ugly but x2 faster than the method based on IEnumerable public IEnumerable <ParseAction <SYMBOL_ENUM, TREE_NODE> > Get(int row, ISliceView <ITokenMatch <SYMBOL_ENUM> > view) { return(actionsTable[row, indexOf(view)]); }