/** * 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.typechecker; public class KindedName { public enum Kind { FUN, CLASS, TYPE_DECL, EXCEPTION, DATA_CONSTRUCTOR, MODULE; } private final String name; private final Kind kind; public KindedName(Kind kind, String name) { this.kind = kind; this.name = name; } public String getName() { return name; } public Kind getKind() { return kind; } @Override public boolean equals(Object obj) { if (!(obj instanceof KindedName)) return false; KindedName o = (KindedName) obj; return name.equals(o.name) && kind.equals(o.kind); } @Override public int hashCode() { return name.hashCode() * kind.hashCode(); } @Override public String toString() { return name + "[" + kind.name() + "]"; } public String getModuleName() { String qualifiedName = getName(); return qualifiedName.substring(0, qualifiedName.lastIndexOf('.')); } public String getSimpleName() { String name = getName(); final int pos = name.lastIndexOf('.'); return (pos == -1) ? name : name.substring(pos + 1, name.length()); } public boolean isQualified() { return name.indexOf('.') > -1; } }