/******************************************************************************* * Copyright (c) 2000, 2008 QNX Software Systems 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: * QNX Software Systems - Initial API and implementation *******************************************************************************/ package org.eclipse.cdt.internal.core.model; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.TreeMap; import org.eclipse.cdt.core.model.CModelException; import org.eclipse.cdt.core.model.ICElement; import org.eclipse.cdt.core.model.IField; import org.eclipse.cdt.core.model.IMethodDeclaration; import org.eclipse.cdt.core.model.IStructure; import org.eclipse.cdt.core.parser.ast.ASTAccessVisibility; public class Structure extends StructureDeclaration implements IStructure { Map<String, ASTAccessVisibility> superClassesNames = new TreeMap<String, ASTAccessVisibility>(); public Structure(ICElement parent, int kind, String name) { super(parent, name, kind); } public IField[] getFields() throws CModelException { List<ICElement> fields = new ArrayList<ICElement>(); fields.addAll(getChildrenOfType(ICElement.C_FIELD)); return fields.toArray(new IField[fields.size()]); } public IField getField(String name) { try { IField[] fields = getFields(); for (IField field : fields) { if(field.getElementName().equals(name)){ return field; } } } catch (CModelException e) { } return null; } public IMethodDeclaration[] getMethods() throws CModelException { List<ICElement> methods = new ArrayList<ICElement>(); methods.addAll(getChildrenOfType(ICElement.C_METHOD_DECLARATION)); methods.addAll(getChildrenOfType(ICElement.C_METHOD)); return methods.toArray(new IMethodDeclaration[methods.size()]); } public IMethodDeclaration getMethod(String name) { try { IMethodDeclaration[] methods = getMethods(); for (IMethodDeclaration method : methods) { if(method.getElementName().equals(name)){ return method; } } } catch (CModelException e) { } return null; } public boolean isAbstract() throws CModelException { IMethodDeclaration[] methods = getMethods(); for (IMethodDeclaration method : methods) { if(method.isPureVirtual()) return true; } return false; } public String[] getSuperClassesNames(){ return superClassesNames.keySet().toArray(new String[superClassesNames.keySet().size()]); } public ASTAccessVisibility getSuperClassAccess(String name){ return superClassesNames.get(name); } public void addSuperClass(String name) { superClassesNames.put(name, ASTAccessVisibility.PUBLIC); } public void addSuperClass(String name, ASTAccessVisibility access) { superClassesNames.put(name, access); } }