public Sym12TernaryTableUpdater(string relvarName, Sym12TernaryTable table, ValueStoreUpdater store12, ValueStoreUpdater store3) { this.relvarName = relvarName; this.table = table; this.store12 = store12; this.store3 = store3; }
public Iter3(Sym12TernaryTable table, int arg3, int index0) : base(table, index0) { this.arg3 = arg3; while (index != Empty && table.Arg3(index) != arg3) { index = table.index3.Next(index); } }
public Iter2(Sym12TernaryTable table, int arg2, int index0) : base(table, index0) { this.arg2 = arg2; while (index != Empty && !IsMatch()) { index = table.index2.Next(index); } }
public Iter1(Sym12TernaryTable table, int arg1, int index0) : base(table, index0) { this.arg1 = arg1; while (index != Empty && !IsMatch()) { index = table.index1.Next(index); } }
public Iter12(Sym12TernaryTable table, int arg1, int arg2, int index0) : base(table, index0) { Debug.Assert(arg1 <= arg2); this.arg1 = arg1; this.arg2 = arg2; while (index != Empty && !IsMatch()) { index = table.index12.Next(index); } }
////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// public static void Write(DataWriter writer, int fieldSymbId, Sym12TernaryTable[] tables, int indentation, bool indentFirstLine, bool writeSeparator) { string baseWs = new string(Array.Repeat(' ', indentation)); string entryWs = new string(Array.Repeat(' ', indentation + 2)); int count = 0; for (int i = 0; i < tables.Length; i++) { count += tables[i].Size(); } if (indentFirstLine) { writer.Write(baseWs); } writer.Write(SymbObj.IdxToStr(fieldSymbId)); writer.Write(": ["); if (count > 0) { writer.Write("\n"); int written = 0; for (int i = 0; i < tables.Length; i++) { Sym12TernaryTable table = tables[i]; SurrObjMapper mapper12 = table.mapper12; SurrObjMapper mapper3 = table.mapper3; Sym12TernaryTable.Iter it = table.GetIter(); while (!it.Done()) { writer.Write(entryWs); Obj obj1 = mapper12(it.Get1()); Obj obj2 = mapper12(it.Get2()); Obj obj3 = mapper3(it.Get3()); ObjPrinter.PrintNoFlush(obj1, writer); writer.Write(", "); ObjPrinter.PrintNoFlush(obj2, writer); writer.Write(", "); ObjPrinter.PrintNoFlush(obj3, writer); written++; writer.Write(written < count || count == 1 ? ";\n" : "\n"); it.Next(); } } Debug.Assert(written == count); writer.Write(baseWs); } writer.Write(writeSeparator ? "],\n" : "]\n"); }
public Iter123(Sym12TernaryTable table) : base(table, 0) { end = table.Capacity(); while (table.Arg2OrEmptyMarker(index) == Empty) { index++; if (index == end) { index = Empty; break; } } }
////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// public static Obj Copy(Sym12TernaryTable[] tables) { int count = 0; for (int i = 0; i < tables.Length; i++) { count += tables[i].count; } if (count == 0) { return(EmptyRelObj.singleton); } Obj[] col1 = new Obj[count]; Obj[] col2 = new Obj[count]; Obj[] col3 = new Obj[count]; int next = 0; for (int iT = 0; iT < tables.Length; iT++) { Sym12TernaryTable table = tables[iT]; SurrObjMapper mapper12 = table.mapper12; SurrObjMapper mapper3 = table.mapper3; int size = table.Capacity(); for (int iS = 0; iS < size; iS++) { int arg2 = table.Arg2OrEmptyMarker(iS); if (arg2 != Empty) { col1[next] = mapper12(table.Arg1OrNext(iS)); col2[next] = mapper12(arg2); col3[next] = mapper3(table.Arg3(iS)); next++; } } } Debug.Assert(next == count); return(Builder.CreateTernRel(col1, col2, col3, count)); }
public IterPair(Sym12TernaryTable table, Iter iter1, Iter iter2) : base(table) { Debug.Assert(!iter1.Done() & !iter2.Done()); this.iter1 = iter1; this.iter2 = iter2; }
protected Iter(Sym12TernaryTable table) { this.table = table; }
protected IdxIter(Sym12TernaryTable table, int index) : base(table) { this.index = index; }