Loading subprojects/de.bsvrz.sys.funclib.bitctrl/src/main/java/de/bsvrz/sys/funclib/bitctrl/interpreter/Operation.java +19 −29 Original line number Diff line number Diff line Loading @@ -26,10 +26,7 @@ package de.bsvrz.sys.funclib.bitctrl.interpreter; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import java.util.List; import java.util.*; /** * Ein Nicht-Terminal-Symbol des Interpreters, sprich ein Operatorsymbol bzw Loading @@ -37,7 +34,7 @@ import java.util.List; * * @author BitCtrl Systems GmbH, Schumann */ public class Operation implements Ausdruck { public class Operation<T, O> implements Ausdruck<T> { /** * Der Operator dieser Operation. Loading @@ -47,7 +44,7 @@ public class Operation implements Ausdruck { /** * Die Liste der Operanden. */ private final List<Ausdruck> operanden; private final List<Ausdruck<O>> operanden; /** * Konstruiert ein Symbol mit den gegebenen Operator und Operanden. Loading @@ -60,16 +57,8 @@ public class Operation implements Ausdruck { * Wenn ein Funktionsparameter {@code null} ist */ public Operation(final Operator operator, final Ausdruck... operanden) { if (operator == null || operanden == null) { throw new NullPointerException(); } this.operator = operator; this.operanden = new ArrayList<>(); if (operanden.length > 0) { this.operanden.addAll(Arrays.asList(operanden)); } final Ausdruck<O>... operanden) { this(operator, Arrays.asList(operanden)); } /** Loading @@ -83,8 +72,9 @@ public class Operation implements Ausdruck { * Wenn ein Funktionsparameter {@code null} ist */ public Operation(final Operator operator, final List<? extends Ausdruck> operanden) { this(operator, operanden.toArray(new Ausdruck[0])); final List<? extends Ausdruck<O>> operanden) { this.operator = Objects.requireNonNull(operator, "operator"); this.operanden = new ArrayList<>(Objects.requireNonNull(operanden, "operanden")); } /** Loading @@ -98,7 +88,7 @@ public class Operation implements Ausdruck { * Wenn ein Funktionsparameter {@code null} ist */ public Operation(final String operatorSymbol, final Ausdruck... operanden) { final Ausdruck<O>... operanden) { this(Operator.getOperator(operatorSymbol), operanden); } Loading @@ -113,13 +103,13 @@ public class Operation implements Ausdruck { * Wenn ein Funktionsparameter {@code null} ist */ public Operation(final String operatorSymbol, final List<? extends Ausdruck> operanden) { this(operatorSymbol, operanden.toArray(new Ausdruck[0])); final List<? extends Ausdruck<O>> operanden) { this(Operator.getOperator(operatorSymbol), operanden); } @Override public List<Ausdruck> getNachfolger() { return new ArrayList<>(operanden); public List<? extends Ausdruck<O>> getNachfolger() { return Collections.unmodifiableList(operanden); } /** Loading @@ -127,7 +117,7 @@ public class Operation implements Ausdruck { * * @return Die Liste der Operanden */ public List<? extends Ausdruck> getOperanden() { public List<? extends Ausdruck<O>> getOperanden() { return operanden; } Loading @@ -143,11 +133,11 @@ public class Operation implements Ausdruck { } @Override public Object interpret(final Kontext kontext) { public T interpret(final Kontext kontext) { assert operator != null; final List<Object> values = new ArrayList<>(); for (final Ausdruck a : operanden) { final List<O> values = new ArrayList<>(); for (final Ausdruck<O> a : operanden) { if (a != null) { values.add(a.interpret(kontext)); } else { Loading @@ -155,7 +145,7 @@ public class Operation implements Ausdruck { } } return operator.execute(values); return (T) operator.execute(values); } @Override Loading @@ -169,7 +159,7 @@ public class Operation implements Ausdruck { result += operator + " " + operanden.get(0); } else { // Es gibt mehr als einen Operanden final Iterator<Ausdruck> i = operanden.iterator(); final Iterator<Ausdruck<O>> i = operanden.iterator(); Ausdruck a = i.next(); result += a.toString(); // erster Operand Loading subprojects/de.bsvrz.sys.funclib.bitctrl/src/main/java/de/bsvrz/sys/funclib/bitctrl/interpreter/Operator.java +2 −2 Original line number Diff line number Diff line Loading @@ -179,7 +179,7 @@ public final class Operator { * Menge von Operanden * @return Ergebnis der Operation */ public Object execute(final List<Object> werte) { public Object execute(final List<?> werte) { if (handler.size() == 0) { throw new InterpreterException(Messages.get( InterpreterMessages.HandlerNotFound, getSymbol())); Loading Loading @@ -216,7 +216,7 @@ public final class Operator { * Die Operanden * @return Den Text */ private String getAufrufString(final List<Object> werte) { private String getAufrufString(final List<?> werte) { final StringBuffer meldung = new StringBuffer("("); for (final Object wert : werte) { if (meldung.length() > 1) { Loading Loading
subprojects/de.bsvrz.sys.funclib.bitctrl/src/main/java/de/bsvrz/sys/funclib/bitctrl/interpreter/Operation.java +19 −29 Original line number Diff line number Diff line Loading @@ -26,10 +26,7 @@ package de.bsvrz.sys.funclib.bitctrl.interpreter; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import java.util.List; import java.util.*; /** * Ein Nicht-Terminal-Symbol des Interpreters, sprich ein Operatorsymbol bzw Loading @@ -37,7 +34,7 @@ import java.util.List; * * @author BitCtrl Systems GmbH, Schumann */ public class Operation implements Ausdruck { public class Operation<T, O> implements Ausdruck<T> { /** * Der Operator dieser Operation. Loading @@ -47,7 +44,7 @@ public class Operation implements Ausdruck { /** * Die Liste der Operanden. */ private final List<Ausdruck> operanden; private final List<Ausdruck<O>> operanden; /** * Konstruiert ein Symbol mit den gegebenen Operator und Operanden. Loading @@ -60,16 +57,8 @@ public class Operation implements Ausdruck { * Wenn ein Funktionsparameter {@code null} ist */ public Operation(final Operator operator, final Ausdruck... operanden) { if (operator == null || operanden == null) { throw new NullPointerException(); } this.operator = operator; this.operanden = new ArrayList<>(); if (operanden.length > 0) { this.operanden.addAll(Arrays.asList(operanden)); } final Ausdruck<O>... operanden) { this(operator, Arrays.asList(operanden)); } /** Loading @@ -83,8 +72,9 @@ public class Operation implements Ausdruck { * Wenn ein Funktionsparameter {@code null} ist */ public Operation(final Operator operator, final List<? extends Ausdruck> operanden) { this(operator, operanden.toArray(new Ausdruck[0])); final List<? extends Ausdruck<O>> operanden) { this.operator = Objects.requireNonNull(operator, "operator"); this.operanden = new ArrayList<>(Objects.requireNonNull(operanden, "operanden")); } /** Loading @@ -98,7 +88,7 @@ public class Operation implements Ausdruck { * Wenn ein Funktionsparameter {@code null} ist */ public Operation(final String operatorSymbol, final Ausdruck... operanden) { final Ausdruck<O>... operanden) { this(Operator.getOperator(operatorSymbol), operanden); } Loading @@ -113,13 +103,13 @@ public class Operation implements Ausdruck { * Wenn ein Funktionsparameter {@code null} ist */ public Operation(final String operatorSymbol, final List<? extends Ausdruck> operanden) { this(operatorSymbol, operanden.toArray(new Ausdruck[0])); final List<? extends Ausdruck<O>> operanden) { this(Operator.getOperator(operatorSymbol), operanden); } @Override public List<Ausdruck> getNachfolger() { return new ArrayList<>(operanden); public List<? extends Ausdruck<O>> getNachfolger() { return Collections.unmodifiableList(operanden); } /** Loading @@ -127,7 +117,7 @@ public class Operation implements Ausdruck { * * @return Die Liste der Operanden */ public List<? extends Ausdruck> getOperanden() { public List<? extends Ausdruck<O>> getOperanden() { return operanden; } Loading @@ -143,11 +133,11 @@ public class Operation implements Ausdruck { } @Override public Object interpret(final Kontext kontext) { public T interpret(final Kontext kontext) { assert operator != null; final List<Object> values = new ArrayList<>(); for (final Ausdruck a : operanden) { final List<O> values = new ArrayList<>(); for (final Ausdruck<O> a : operanden) { if (a != null) { values.add(a.interpret(kontext)); } else { Loading @@ -155,7 +145,7 @@ public class Operation implements Ausdruck { } } return operator.execute(values); return (T) operator.execute(values); } @Override Loading @@ -169,7 +159,7 @@ public class Operation implements Ausdruck { result += operator + " " + operanden.get(0); } else { // Es gibt mehr als einen Operanden final Iterator<Ausdruck> i = operanden.iterator(); final Iterator<Ausdruck<O>> i = operanden.iterator(); Ausdruck a = i.next(); result += a.toString(); // erster Operand Loading
subprojects/de.bsvrz.sys.funclib.bitctrl/src/main/java/de/bsvrz/sys/funclib/bitctrl/interpreter/Operator.java +2 −2 Original line number Diff line number Diff line Loading @@ -179,7 +179,7 @@ public final class Operator { * Menge von Operanden * @return Ergebnis der Operation */ public Object execute(final List<Object> werte) { public Object execute(final List<?> werte) { if (handler.size() == 0) { throw new InterpreterException(Messages.get( InterpreterMessages.HandlerNotFound, getSymbol())); Loading Loading @@ -216,7 +216,7 @@ public final class Operator { * Die Operanden * @return Den Text */ private String getAufrufString(final List<Object> werte) { private String getAufrufString(final List<?> werte) { final StringBuffer meldung = new StringBuffer("("); for (final Object wert : werte) { if (meldung.length() > 1) { Loading