mirror of
https://github.com/DanilaFe/abacus
synced 2026-01-27 09:05:19 +00:00
Add stop button
This commit is contained in:
@@ -92,10 +92,19 @@ public class BinaryNode extends TreeNode {
|
||||
|
||||
@Override
|
||||
public <T> T reduce(Reducer<T> reducer) {
|
||||
if(Thread.currentThread().isInterrupted())
|
||||
return null;
|
||||
T leftReduce = left.reduce(reducer);
|
||||
if(Thread.currentThread().isInterrupted())
|
||||
return null;
|
||||
T rightReduce = right.reduce(reducer);
|
||||
if (leftReduce == null || rightReduce == null) return null;
|
||||
return reducer.reduceNode(this, leftReduce, rightReduce);
|
||||
if(Thread.currentThread().isInterrupted())
|
||||
return null;
|
||||
T a = reducer.reduceNode(this, leftReduce, rightReduce);
|
||||
if(Thread.currentThread().isInterrupted())
|
||||
return null;
|
||||
return a;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -62,12 +62,20 @@ public class FunctionNode extends TreeNode {
|
||||
|
||||
@Override
|
||||
public <T> T reduce(Reducer<T> reducer) {
|
||||
if(Thread.currentThread().isInterrupted())
|
||||
return null;
|
||||
Object[] reducedChildren = new Object[children.size()];
|
||||
for (int i = 0; i < reducedChildren.length; i++) {
|
||||
reducedChildren[i] = children.get(i).reduce(reducer);
|
||||
if (reducedChildren[i] == null) return null;
|
||||
}
|
||||
return reducer.reduceNode(this, reducedChildren);
|
||||
//System.out.println(Thread.currentThread().isInterrupted());
|
||||
if(Thread.currentThread().isInterrupted())
|
||||
return null;
|
||||
T a = reducer.reduceNode(this, reducedChildren);
|
||||
if(Thread.currentThread().isInterrupted())
|
||||
return null;
|
||||
return a;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -33,9 +33,16 @@ public class UnaryNode extends TreeNode {
|
||||
|
||||
@Override
|
||||
public <T> T reduce(Reducer<T> reducer) {
|
||||
if(Thread.currentThread().isInterrupted())
|
||||
return null;
|
||||
Object reducedChild = applyTo.reduce(reducer);
|
||||
if (reducedChild == null) return null;
|
||||
return reducer.reduceNode(this, reducedChild);
|
||||
if(Thread.currentThread().isInterrupted())
|
||||
return null;
|
||||
T a = reducer.reduceNode(this, reducedChild);
|
||||
if(Thread.currentThread().isInterrupted())
|
||||
return null;
|
||||
return a;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user