Merge lp:~danilovesky/workcraft/trunk-bug-1335055 into lp:workcraft

Proposed by Danil Sokolov
Status: Merged
Merged at revision: 510
Proposed branch: lp:~danilovesky/workcraft/trunk-bug-1335055
Merge into: lp:workcraft
Diff against target: 81 lines (+24/-29)
1 file modified
CircuitPlugin/src/org/workcraft/plugins/circuit/tools/STGGenerator.java (+24/-29)
To merge this branch: bzr merge lp:~danilovesky/workcraft/trunk-bug-1335055
Reviewer Review Type Date Requested Status
Danil Sokolov Approve
Review via email: mp+224797@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Danil Sokolov (danilovesky) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'CircuitPlugin/src/org/workcraft/plugins/circuit/tools/STGGenerator.java'
--- CircuitPlugin/src/org/workcraft/plugins/circuit/tools/STGGenerator.java 2014-04-24 20:24:53 +0000
+++ CircuitPlugin/src/org/workcraft/plugins/circuit/tools/STGGenerator.java 2014-06-27 11:44:47 +0000
@@ -30,12 +30,12 @@
30import org.workcraft.plugins.circuit.VisualFunctionComponent;30import org.workcraft.plugins.circuit.VisualFunctionComponent;
31import org.workcraft.plugins.circuit.VisualFunctionContact;31import org.workcraft.plugins.circuit.VisualFunctionContact;
32import org.workcraft.plugins.circuit.VisualJoint;32import org.workcraft.plugins.circuit.VisualJoint;
33import org.workcraft.plugins.cpog.optimisation.BooleanFormula;
33import org.workcraft.plugins.cpog.optimisation.Literal;34import org.workcraft.plugins.cpog.optimisation.Literal;
34import org.workcraft.plugins.cpog.optimisation.booleanvisitors.FormulaToString;35import org.workcraft.plugins.cpog.optimisation.booleanvisitors.FormulaToString;
35import org.workcraft.plugins.cpog.optimisation.dnf.Dnf;36import org.workcraft.plugins.cpog.optimisation.dnf.Dnf;
36import org.workcraft.plugins.cpog.optimisation.dnf.DnfClause;37import org.workcraft.plugins.cpog.optimisation.dnf.DnfClause;
37import org.workcraft.plugins.cpog.optimisation.dnf.DnfGenerator;38import org.workcraft.plugins.cpog.optimisation.dnf.DnfGenerator;
38import org.workcraft.plugins.cpog.optimisation.expressions.BooleanOperations;
39import org.workcraft.plugins.cpog.optimisation.expressions.DumbBooleanWorker;39import org.workcraft.plugins.cpog.optimisation.expressions.DumbBooleanWorker;
40import org.workcraft.plugins.petri.VisualPlace;40import org.workcraft.plugins.petri.VisualPlace;
41import org.workcraft.plugins.stg.STG;41import org.workcraft.plugins.stg.STG;
@@ -171,40 +171,35 @@
171 }171 }
172 }172 }
173 173
174 // generate implementation for each of the drivers174 // Generate implementation for each of the drivers
175 for(VisualContact c : drivers.keySet()) {175 for(VisualContact c : drivers.keySet()) {
176 if (c instanceof VisualFunctionContact) {176 if (c instanceof VisualFunctionContact) {
177 // function based driver
178 Dnf set = null;
179 Dnf reset = null;
180 VisualFunctionContact contact = (VisualFunctionContact)c;177 VisualFunctionContact contact = (VisualFunctionContact)c;
178 // Determine I/O type of the contact
181 SignalTransition.Type ttype = SignalTransition.Type.OUTPUT;179 SignalTransition.Type ttype = SignalTransition.Type.OUTPUT;
180 boolean comesFromEnvironment = false;
182 if (contact.getParent() instanceof VisualCircuitComponent) {181 if (contact.getParent() instanceof VisualCircuitComponent) {
183 set = DnfGenerator.generate(contact.getFunction().getSetFunction());182 comesFromEnvironment = ((VisualCircuitComponent)contact.getParent()).getIsEnvironment();
184 if (contact.getFunction().getResetFunction() != null) { 183 }
185 reset = DnfGenerator.generate(contact.getFunction().getResetFunction());184 if (comesFromEnvironment || (contact.getIOType()==IOType.INPUT)) {
186 } else {185 ttype = SignalTransition.Type.INPUT;
187 BooleanOperations.worker = new DumbBooleanWorker();186 }
188 reset = DnfGenerator.generate(BooleanOperations.worker.not(contact.getFunction().getSetFunction()));187 // Function based driver
189 }188 BooleanFormula setFunc = contact.getFunction().getSetFunction();
190 if (((VisualCircuitComponent)contact.getParent()).getIsEnvironment()) { 189 BooleanFormula resetFunc = contact.getFunction().getResetFunction();
191 ttype = SignalTransition.Type.INPUT; 190 if ((setFunc != null) && (resetFunc == null)) {
192 } else if (contact.getIOType()==IOType.INPUT) {191 resetFunc = new DumbBooleanWorker().not(setFunc);
193 ttype = SignalTransition.Type.INPUT;192 } else if ((setFunc == null) && (resetFunc != null)) {
194 }193 setFunc = new DumbBooleanWorker().not(resetFunc);
195 } else {194 }
196 set = DnfGenerator.generate(contact.getFunction().getSetFunction());195 Dnf setDnf = DnfGenerator.generate(setFunc);
197 reset = DnfGenerator.generate(contact.getFunction().getResetFunction());196 Dnf resetDnf = DnfGenerator.generate(resetFunc);
198 if (contact.getIOType()==IOType.INPUT) {197 implementDriver(circuit, stg, contact, drivers, targetDrivers, setDnf, resetDnf, ttype);
199 ttype = SignalTransition.Type.INPUT;
200 }
201 }
202 implementDriver(circuit, stg, contact, drivers, targetDrivers, set, reset, ttype);
203 } else {198 } else {
204 // some generic driver implementation otherwise199 // Some generic driver implementation otherwise
205 Dnf set = new Dnf(new DnfClause());200 Dnf setDnf = new Dnf(new DnfClause());
206 Dnf reset = new Dnf(new DnfClause());201 Dnf resetDnf = new Dnf(new DnfClause());
207 implementDriver(circuit, stg, c, drivers, targetDrivers, set, reset, SignalTransition.Type.INPUT);202 implementDriver(circuit, stg, c, drivers, targetDrivers, setDnf, resetDnf, SignalTransition.Type.INPUT);
208 }203 }
209 }204 }
210 return stg;205 return stg;

Subscribers

People subscribed via source and target branches