/*******************************************************************************
* Copyright (c) 2005 Vlad Dumitrescu and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Vlad Dumitrescu
*******************************************************************************/
package org.erlide.engine.internal.model.erlang;
import java.util.ArrayList;
import java.util.List;
import org.erlide.engine.model.ErlElementKind;
import org.erlide.engine.model.IErlElement;
import org.erlide.engine.model.IParent;
import org.erlide.engine.model.erlang.IErlFunction;
import org.erlide.engine.model.erlang.IErlFunctionClause;
import org.erlide.util.Util;
import com.ericsson.otp.erlang.OtpErlangList;
import com.ericsson.otp.erlang.OtpErlangObject;
public class ErlFunctionClause extends ErlMember implements IErlFunctionClause {
final String head;
final List<String> parameters;
public ErlFunctionClause(final IParent parent, final String name, final String head,
final OtpErlangList parameters) {
super(parent, name);
this.head = head;
this.parameters = getParameters(parameters);
}
public static List<String> getParameters(final OtpErlangList parameters) {
final List<String> pars = new ArrayList<>(parameters.arity());
for (final OtpErlangObject i : parameters) {
pars.add(Util.stringValue(i));
}
return pars;
}
@Override
public String getHead() {
return head;
}
@Override
public ErlElementKind getKind() {
return ErlElementKind.CLAUSE;
}
/**
* @param arguments
* the arguments to set
*/
// public void setArguments(final String arguments) {
// this.arguments = arguments;
// }
/**
* @param guards
* the guards to set
*/
// public void setGuards(final OtpErlangList guards) {
// this.guards = guards;
// }
@Override
public String toString() {
return head;
}
@Override
public String getFunctionName() {
final IErlElement element = (IErlElement) getParent();
return element.getName();
}
@Override
public int getArity() {
final IErlFunction f = (IErlFunction) getParent();
return f.getArity();
}
@Override
public List<String> getParameters() {
return parameters;
}
}