/** * Copyright (c) 2009-2011, The HATS Consortium. All rights reserved. * This file is licensed under the terms of the Modified BSD License. */ package abs.frontend.analyser; import java.util.ArrayList; import java.util.List; import java.util.Set; import abs.frontend.ast.Decl; import abs.frontend.ast.HasTypeHierarchy; import abs.frontend.ast.InterfaceDecl; import abs.frontend.ast.InterfaceTypeUse; public class TypeHierarchyHelper { public static Set<InterfaceDecl> addSuperTypes(Set<InterfaceDecl> superTypes, HasTypeHierarchy decl) { for (InterfaceDecl direct : decl.getDirectSuperTypes()) { boolean isNew = superTypes.add(direct); if (isNew) { addSuperTypes(superTypes, direct); } } return superTypes; } public static List<InterfaceDecl> getTypeDecls(Iterable<InterfaceTypeUse> extendedInterfaceUseList) { List<InterfaceDecl> result = new ArrayList<InterfaceDecl>(); for (InterfaceTypeUse extended : extendedInterfaceUseList) { Decl decl = extended.getDecl(); if (decl instanceof InterfaceDecl) { result.add((InterfaceDecl) decl); } } return result; } }