peer-at-code-parser-java/src/dev/peerat/parser/java/Enumeration.java

97 lines
2 KiB
Java

package dev.peerat.parser.java;
import java.util.ArrayList;
import java.util.List;
import dev.peerat.parser.Token;
public class Enumeration extends ClassBase{
//where mod ????
private Token name;
private Token extend;
private List<JavaElement> elements;
public Enumeration(List<Annotation> annotations, Token name){
super(annotations);
this.name = name;
this.elements = new ArrayList<>();
}
public Enumeration(List<Annotation> annotations, Token name, Token extend){
this(annotations, name);
this.extend = extend;
}
@Override
public void addFunction(Function function) {
this.elements.add(function);
}
@Override
public void addVariable(Variable variable) {
this.elements.add(variable);
}
@Override
public void addClass(ClassBase clazz){
this.elements.add(clazz);
}
public Token getName(){
return this.name;
}
public Token getExtension(){
return this.extend;
}
public List<JavaElement> getElements(){
return this.elements;
}
@Override
public void build(Builder builder) throws Exception{
super.build(builder);
builder.append("enum");
builder.append(name);
if(extend != null){
builder.append(" extends ");
builder.append(extend);
}
builder.append("{");
if(elements != null){
for(JavaElement element : this.elements){
element.build(builder);
}
}
builder.append("}");
}
@Override
public <E extends JavaElement> E find(java.util.function.Function<JavaElement, Boolean> finder){
E annotation = super.find(finder);
if(annotation != null) return annotation;
if(elements != null){
for(JavaElement element : this.elements){
if(finder.apply(element)) return (E) element;
}
}
return null;
}
@Override
public <E extends JavaElement> void findAll(java.util.function.Function<JavaElement, Boolean> finder, List<E> list){
super.findAll(finder, list);
if(elements != null){
for(JavaElement element : this.elements){
if(finder.apply(element)) list.add((E) element);
element.findAll(finder, list);
}
}
}
}