package org.develnext.jphp.core.tokenizer.token.stmt; import org.develnext.jphp.core.tokenizer.TokenMeta; import org.develnext.jphp.core.tokenizer.token.expr.value.NameToken; import java.util.List; public class MethodStmtToken extends FunctionStmtToken { private boolean isAbstract; private boolean isFinal; private boolean isStatic; private ClassStmtToken clazz; public MethodStmtToken(TokenMeta meta) { super(meta); } public MethodStmtToken(FunctionStmtToken token){ this(token.getMeta()); setArguments(token.arguments); setBody(token.body); setModifier(token.modifier); setName(token.name); setReturnReference(token.returnReference); setLocal(token.local); setDynamicLocal(token.dynamicLocal); setCallsExist(token.callsExist); setVarsExists(token.varsExists); setUses(token.uses); setDocComment(token.docComment); setGenerator(token.isGenerator); setId(token.id); setTypeInfo(token.getTypeInfo()); setGeneratorId(token.generatorId); labels = token.labels; variables = token.variables; namespace = token.namespace; } public boolean isAbstract() { return isAbstract; } public void setAbstract(boolean anAbstract) { isAbstract = anAbstract; } public boolean isFinal() { return isFinal; } public void setFinal(boolean aFinal) { isFinal = aFinal; } public boolean isStatic() { return isStatic; } public void setStatic(boolean aStatic) { isStatic = aStatic; } public List<ArgumentStmtToken> getArguments() { return arguments; } public void setArguments(List<ArgumentStmtToken> arguments) { this.arguments = arguments; } public ClassStmtToken getClazz() { return clazz; } public void setClazz(ClassStmtToken clazz) { this.clazz = clazz; } public boolean isInterfacable(){ return body == null; } public static MethodStmtToken of(String name, ClassStmtToken clazz){ MethodStmtToken mToken = new MethodStmtToken(clazz.getMeta()); mToken.setClazz(clazz); mToken.setName(new NameToken(TokenMeta.of(name, clazz))); mToken.setNamespace(null); return mToken; } }