samples/apifest1/day1/stackbasedsolution/src/org/netbeans/apifest/boolcircuit/CircuitFactory.java
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/samples/apifest1/day1/stackbasedsolution/src/org/netbeans/apifest/boolcircuit/CircuitFactory.java Sat Jun 14 09:52:45 2008 +0200
1.3 @@ -0,0 +1,50 @@
1.4 +/*
1.5 + * CircuitFactory.java
1.6 + *
1.7 + * Created on July 12, 2006, 3:01 PM
1.8 + *
1.9 + * To change this template, choose Tools | Template Manager
1.10 + * and open the template in the editor.
1.11 + */
1.12 +
1.13 +package org.netbeans.apifest.boolcircuit;
1.14 +
1.15 +import java.util.Stack;
1.16 +
1.17 +/**
1.18 + *
1.19 + */
1.20 +public class CircuitFactory {
1.21 +
1.22 + /** Creates a new instance of CircuitFactory */
1.23 + private CircuitFactory() {
1.24 + }
1.25 +
1.26 + public final static Circuit join (final Circuit c1, final Circuit c2, final Operation op) {
1.27 + return new Circuit () {
1.28 + public char evaluate(Stack input) throws IllegalArgumentException {
1.29 + return op.evaluate(c1.evaluate(input), c2.evaluate(input));
1.30 + }
1.31 + };
1.32 + }
1.33 +
1.34 + public final static Circuit getBasicCircuit (final Operation op) {
1.35 + return new Circuit () {
1.36 + public char evaluate(Stack<Character> input) throws IllegalArgumentException {
1.37 + // special handling of unary oparation
1.38 + if (op instanceof Operation.Neg) {
1.39 + return op.evaluate(input.pop(), input.peek());
1.40 + } else {
1.41 + return op.evaluate(input.pop(), input.pop());
1.42 + }
1.43 + }
1.44 + };
1.45 + }
1.46 + public final static Circuit getTrivialCircuit () {
1.47 + return new Circuit () {
1.48 + public char evaluate(Stack<Character> input) throws IllegalArgumentException {
1.49 + return input.peek();
1.50 + }
1.51 + };
1.52 + }
1.53 +}