56 lines
1.3 KiB
Java
56 lines
1.3 KiB
Java
package dev.peerat.parser.java.operation;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
import java.util.function.Function;
|
|
|
|
import dev.peerat.parser.java.JavaElement;
|
|
import dev.peerat.parser.java.Operation;
|
|
import dev.peerat.parser.java.Variable;
|
|
import dev.peerat.parser.java.Operation.OperationContainer;
|
|
import dev.peerat.parser.java.Variable.VariableContainer;
|
|
|
|
public class OperationBag extends Operation implements VariableContainer, OperationContainer{
|
|
|
|
private List<JavaElement> elements;
|
|
|
|
public OperationBag(){
|
|
this.elements = new ArrayList<>();
|
|
}
|
|
|
|
@Override
|
|
public void addVariable(Variable variable){
|
|
this.elements.add(variable);
|
|
}
|
|
|
|
@Override
|
|
public void addOperation(Operation operation){
|
|
this.elements.add(operation);
|
|
}
|
|
|
|
@Override
|
|
public <E extends JavaElement> E find(Function<JavaElement, Boolean> finder){
|
|
if(elements != null){
|
|
for(JavaElement element : this.elements){
|
|
if(finder.apply(element)) return (E)element;
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public <E extends JavaElement> void findAll(Function<JavaElement, Boolean> finder, List<E> list){
|
|
if(elements != null){
|
|
for(JavaElement element : this.elements){
|
|
if(finder.apply(element)) list.add((E)element);
|
|
element.findAll(finder, list);
|
|
}
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void build(Builder builder) throws Exception {
|
|
//todo and super on child
|
|
}
|
|
|
|
}
|