Exemple #1
0
        public bool recognizeCircuit(CircuitParser.CircuitParser parser)
        {
            if (debug)
            {
                Console.WriteLine("========== Circuit Parsing Has Begun! ==========");
            }
            valid = false;

            // Determine the circuit structure and trigger event for feedback mechanisms
            valid = (parser.SuccessfullyParse(sketch));

            if (!valid)
            {
                if (debug)
                {
                    Console.WriteLine("The circuit parser could not parse the circuit.");
                }
                return(false);
            }

            CircuitSimLib.Circuit circuit = createCircuitAndCleanCircuit(parser);
            valid = parser.checkSubCircuits(circuit);

            if (!valid)
            {
                if (debug)
                {
                    Console.WriteLine("SimulationManager.makeCircuit() failed.");
                }
                return(false);
            }

            return(valid);
        }
        private bool recognizeCircuit(CircuitParser.CircuitParser parser)
        {
            if (debug)
            {
                Console.WriteLine("========== Circuit Parsing Has Begun! ==========");
            }
            //valid = false;

            // Determine the circuit structure and trigger event for feedback mechanisms
            CircuitSimLib.Circuit circuit;
            valid = parser.SuccessfullyParse(sketch, out circuit);

            if (valid)
            {
                createCircuit(parser, circuit);
                createCleanCircuit(ref sketchPanel);
            }
            else
            if (debug)
            {
                Console.WriteLine("The circuit parser could not parse the circuit.");
            }

            if (!valid)
            {
                if (debug)
                {
                    Console.WriteLine("SimulationManager.makeCircuit() failed.");
                }
            }


            return(valid);
        }
Exemple #3
0
        /// <summary>
        /// Updates the dictionaries based on the new names of the inputs/outputs
        /// </summary>
        /// <param name="newNameDict">Dictionary of old name keys to new name values</param>
        private void truthTableWindow_RelabelStrokes(Dictionary <string, string> newNameDict)
        {
            foreach (string s in newNameDict.Keys)
            {
                // Change the shape names that were affected
                foreach (Shape shape in sketch.Shapes)
                {
                    if (shape.Name == s)
                    {
                        shape.Name = newNameDict[s];
                    }
                }

                // Update all the dictionaries
                if (inputMapping.ContainsKey(s))
                {
                    ListSet <string> values = inputMapping[s];
                    LabelShape(values, newNameDict[s]);
                    inputMapping.Remove(s);
                    inputMapping.Add(newNameDict[s], values);
                }
                else if (outputMapping.ContainsKey(s))
                {
                    ListSet <string> values = outputMapping[s];
                    LabelShape(values, newNameDict[s]);
                    outputMapping.Remove(s);
                    outputMapping.Add(newNameDict[s], values);
                }
                if (wireToInputGateMapping.ContainsKey(s))
                {
                    Dictionary <int, ListSet <string> > values = wireToInputGateMapping[s];
                    wireToInputGateMapping.Remove(s);
                    wireToInputGateMapping.Add(newNameDict[s], values);
                }
            }

            // Create our new Circuit
            if (!circuitParser.SuccessfullyParse(sketchPanel.Sketch))
            {
                return;
            }
            sketchPanel.Circuit = new Circuit(circuitParser.CircuitStructure,
                                              circuitParser.CircuitOutputs,
                                              circuitParser.CircuitInputs);

            // Update popup names
            circuitValuePopups.UpdatePopupNames(newNameDict);
            cleanCircuit.UpdateLabel(newNameDict);
            ShowToggles();
        }