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 elements; public Enumeration(List annotations, Token name){ super(annotations); this.name = name; this.elements = new ArrayList<>(); } public Enumeration(List 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 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 find(java.util.function.Function 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 void findAll(java.util.function.Function finder, List 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); } } } }