private static void WriteBehavior(CircuitSimLib.TruthTable truthTable, XmlTextWriter xmlDocument) { Dictionary <List <int>, List <int> > behavior = truthTable.TruthTableDictionary; xmlDocument.WriteStartElement("behavior"); foreach (KeyValuePair <List <int>, List <int> > ioPair in behavior) { string input = ""; foreach (int i in ioPair.Key) { input += i.ToString() + " "; } xmlDocument.WriteStartElement("input"); xmlDocument.WriteString(input); xmlDocument.WriteEndElement(); string output = ""; foreach (int i in ioPair.Value) { output += i.ToString() + " "; } xmlDocument.WriteStartElement("output"); xmlDocument.WriteString(output); xmlDocument.WriteEndElement(); } xmlDocument.WriteEndElement(); }
/// <summary> /// precondition: circuit is not null /// </summary> /// <param name="circuit"></param> /// <param name="xmlDocument"></param> private static void WriteCircuit(CircuitSimLib.Circuit circuit, XmlTextWriter xmlDocument) { CircuitSimLib.TruthTable truthTable = new CircuitSimLib.TruthTable(circuit); xmlDocument.WriteStartElement("circuit"); List <CircuitSimLib.INPUT> inputs = circuit.GlobalInputs; List <CircuitSimLib.OUTPUT> outputs = circuit.GlobalOutputs; Dictionary <int, int> behavior = new Dictionary <int, int>(); SaveToXML.WriteInputOutput(truthTable, xmlDocument); SaveToXML.WriteBehavior(truthTable, xmlDocument); xmlDocument.WriteEndElement(); }
/// <summary> /// Write the behavior inputs and outputs for the current project from the circuit /// </summary> /// <param name="circuit"></param> public void setCircuitInfo(CircuitSimLib.Circuit circuit) { // No truth table if the circuit is oscillating if (circuit != null && !circuit.IsOscillating) { CircuitSimLib.TruthTable truthTable = new CircuitSimLib.TruthTable(circuit); Dictionary <List <int>, List <int> > behavior = new Dictionary <List <int>, List <int> >(); string logisimSave = SaveToCirc.SubcircuitInfo(project, circuit); project.setCircuitInfo(truthTable.TruthTableDictionary, circuit.InputShapes, circuit.OutputShapes, logisimSave); project.setCircuitDirection(circuit.inputsHoriz, circuit.outputsHoriz); } }
/// <summary> /// Stores the stings that are the names of the inputs and outputs of the circuit /// as attribuits of the circuit header seperated by spaces /// </summary> /// <param name="truthTable"></param> /// <param name="xmlDocument"></param> private static void WriteInputOutput(CircuitSimLib.TruthTable truthTable, XmlTextWriter xmlDocument) { List <string> inputs = truthTable.Inputs; string inputString = ""; foreach (string input in inputs) { inputString += input + " "; } xmlDocument.WriteAttributeString("inputs", inputString); List <string> outputs = truthTable.Outputs; string outputString = ""; foreach (string output in outputs) { outputString += output + " "; } xmlDocument.WriteAttributeString("outputs", outputString); }
public TruthTableWindow(CircuitSimLib.TruthTable truthTable) : this(truthTable.TruthTableHeader, truthTable.TruthTableOutputs, truthTable.Inputs.Count) { }