AttemptMakeCombinatorialCommand:
PROC [command: CDSequencer.Command] = {
trans, ok, notOK: INT;
root, cellType: Core.CellType;
[root: root, cell: cellType] ← SinixOps.SelectedCellType[command.design, Sisyph.mode];
IF root=NIL THEN RETURN;
[trans, ok, notOK] ← AttemptMakeCombinatorial[cellType];
TerminalIO.PutF["AttemptMakeCombinatorial: %g trans, %g ok, %g notOK.\n", IO.int[trans], IO.int[ok], IO.int[notOK]];
};
AttemptSplitCommand:
PROC [command: CDSequencer.Command] = {
iconFor: ROPE;
object: CD.Object;
root, cellType, record: Core.CellType;
rct: CoreClasses.RecordCellType;
[root: root, cell: cellType] ← SinixOps.SelectedCellType[command.design, Sisyph.mode];
IF root=NIL THEN RETURN;
TerminalIO.PutF["AttemptSplit for %g.\n", IO.rope[CoreOps.GetCellTypeName[cellType]]];
record ← SplitCombinatorial[cellType, HasNoLayout];
rct ← NARROW [record.data];
object ← CoreGeometry.GetObject[Sisyph.mode.decoration, cellType];
TerminalIO.PutF["AttemptSplit done for %g: combinatorial cell with %g outputs and %g non combinatorial cells.\n", IO.rope[CoreOps.GetCellTypeName[cellType]], IO.int[GList.Length[GetTypedWires[rct[0].type, output]]], IO.int[rct.size-1]];
iconFor ← NARROW [CDProperties.GetObjectProp[object, $IconFor]];
IF iconFor=NIL THEN ERROR;
Sinix.FlushCache[object];
CDProperties.PutObjectProp[object, $IconFor, NIL];
CDProperties.PutObjectProp[object, $CodeFor, IO.PutFR["Combinatorial.SplitCombinatorial[Sisyph.ES[\"%g\", cx], TestCombinatorial.HasNoLayout]", IO.rope[iconFor]]];
};