org.hisrc.jscm.codemodel.impl.FunctionDeclarationImpl Maven / Gradle / Ivy
The newest version!
package org.hisrc.jscm.codemodel.impl;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.hisrc.jscm.codemodel.JSCodeModel;
import org.hisrc.jscm.codemodel.JSFunctionBody;
import org.hisrc.jscm.codemodel.JSFunctionDeclaration;
import org.hisrc.jscm.codemodel.JSSourceElementVisitor;
import org.hisrc.jscm.codemodel.expression.JSPrimaryExpression;
import org.hisrc.jscm.codemodel.expression.JSVariable;
import org.hisrc.jscm.codemodel.expression.impl.VariableImpl;
import org.hisrc.jscm.codemodel.lang.Validate;
public class FunctionDeclarationImpl implements JSFunctionDeclaration {
private final JSCodeModel codeModel;
private final String name;
private final JSPrimaryExpression functionExpression;
private final List parameters = new ArrayList();
private final List unmodifiableParameters = Collections
.unmodifiableList(parameters);
private final JSFunctionBody body;
public FunctionDeclarationImpl(JSCodeModel codeModel, String name) {
Validate.notNull(codeModel);
Validate.notNull(name);
this.codeModel = codeModel;
this.name = name;
this.functionExpression = new VariableImpl(codeModel, name);
this.body = new FunctionBodyImpl(codeModel);
}
public JSCodeModel getCodeModel() {
return codeModel;
}
public String getName() {
return name;
}
public JSPrimaryExpression getFunctionExpression() {
return functionExpression;
}
public JSFunctionBody getBody() {
return body;
}
public List getParameters() {
return unmodifiableParameters;
}
public JSVariable parameter(String name) {
Validate.notNull(name);
JSVariable parameter = new VariableImpl(getCodeModel(), name);
this.parameters.add(parameter);
return parameter;
}
public V acceptSourceElementVisitor(
JSSourceElementVisitor visitor) throws E {
return visitor.visitFunctionDeclaration(this);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy