/******************************************************************************* * 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.List; import java.util.Stack; import org.eclipse.dltk.itcl.internal.core.parser.structure.model.IClass; import org.eclipse.dltk.itcl.internal.core.parser.structure.model.IMember; import org.eclipse.dltk.itcl.internal.core.parser.structure.model.IMember.Visibility; import org.eclipse.dltk.itcl.internal.core.parser.structure.model.IMethod; public class ClassImpl implements IClass { private final List<String> superclasses = new ArrayList<>(); private final List<IMember> members = new ArrayList<>(); private final Stack<Visibility> visibilities = new Stack<>(); private String name; @Override public void addMember(IMember member) { members.add(member); } @Override public void addSuperclass(String name) { superclasses.add(name); } @Override public Visibility peekVisibility() { return visibilities.isEmpty() ? Visibility.PRIVATE : visibilities.peek(); } @Override public Visibility popVisibility() { return visibilities.pop(); } @Override public void pushVisibility(Visibility visibility) { visibilities.push(visibility); } @Override public String[] getSuperClasses() { return superclasses.toArray(new String[superclasses.size()]); } @Override public List<IMember> getMembers() { return members; } @Override public IMethod findMethod(String name) { for (IMember member : members) { if (member instanceof IMethod && name.equals(member.getName())) { return (IMethod) member; } } return null; } /** * @return the name */ @Override public String getName() { return name; } /** * @param namespace */ public void setName(String name) { this.name = name; } }