blob: d0ca917b02bd8ed721445a72290e62ee65c77372 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009, 2017 xored software, Inc. 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:
* xored software, Inc. - initial API and Implementation (Alex Panchenko)
*******************************************************************************/
package org.eclipse.dltk.itcl.internal.core.parser.structure.model.impl;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.eclipse.dltk.ast.Modifiers;
import org.eclipse.dltk.itcl.internal.core.IIncrTclModifiers;
import org.eclipse.dltk.itcl.internal.core.parser.structure.model.IMethod;
import org.eclipse.dltk.tcl.ast.TclArgument;
import org.eclipse.dltk.tcl.structure.AbstractTclCommandModelBuilder.Parameter;
public class Method extends Member implements IMethod {
private MethodKind kind = MethodKind.METHOD;
private final List<Parameter> parameters = new ArrayList<>();
private List<TclArgument> bodies = null;
@Override
public MethodKind getKind() {
return kind;
}
@Override
public void setKind(MethodKind kind) {
this.kind = kind;
}
@Override
public List<Parameter> getParameters() {
return parameters;
}
@Override
public List<TclArgument> getBodies() {
return bodies != null ? bodies : Collections.<TclArgument>emptyList();
}
@Override
public void addBody(TclArgument body) {
if (bodies == null) {
bodies = new ArrayList<>();
}
bodies.add(body);
}
@Override
public int getModifiers() {
int modifiers = IIncrTclModifiers.AccIncrTcl | getVisibility().getModifiers() | getKind().getModifiers();
if (getKind().isMaskVisibility()) {
modifiers &= ~(Modifiers.AccPublic | Modifiers.AccProtected | Modifiers.AccPrivate);
}
return modifiers;
}
}