/******************************************************************************* * Copyright (c) 2009-2013 CWI * 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: * * Jurgen J. Vinju - Jurgen.Vinju@cwi.nl - CWI * * Paul Klint - Paul.Klint@cwi.nl - CWI * * Mark Hills - Mark.Hills@cwi.nl (CWI) *******************************************************************************/ package org.rascalmpl.interpreter.utils; import java.util.LinkedList; import java.util.List; import org.rascalmpl.ast.Name; import org.rascalmpl.ast.QualifiedName; import org.rascalmpl.parser.ASTBuilder; import org.rascalmpl.semantics.dynamic.QualifiedName.Default; import org.rascalmpl.value.ISourceLocation; public class Names { static public Name lastName(QualifiedName qname) { List<Name> names = qname.getNames(); return names.get(names.size() - 1); } static public boolean isQualified(QualifiedName name) { return ((Default) name).isQualified(); } static public String fullName(QualifiedName qname) { return ((Default) qname).fullName(); } /** * Get the module name part of a qualified name * @return a string containing all but the last part of the given qualified name */ static public String moduleName(QualifiedName qname) { return ((Default) qname).moduleName(); } static public String name(Name name) { return ((Name.Lexical) name).getString(); } static public String consName(QualifiedName qname) { return name(lastName(qname)); } static public String typeName(QualifiedName qname) { return name(lastName(qname)); } static public String sortName(QualifiedName qname) { List<Name> names = qname.getNames(); if (names.size() >= 2) { return name(names.get(names.size() - 2)); } return null; } static public Name toName(String name, ISourceLocation loc) { return ASTBuilder.make("Name", "Lexical", loc, name); } static public QualifiedName toQualifiedName(String name, ISourceLocation loc) { List<Name> list = new LinkedList<Name>(); list.add(toName(name, loc)); return ASTBuilder.make("QualifiedName", loc, list); } static public QualifiedName toQualifiedName(String returnType, String name, ISourceLocation loc) { List<Name> list = new LinkedList<Name>(); list.add(toName(returnType, loc)); list.add(toName(name, loc)); return ASTBuilder.make("QualifiedName", loc, list); } }