Library.java
package edu.udel.cis.vsl.tass.front.minimp.lib;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.Map;
import edu.udel.cis.vsl.tass.front.minimp.ast.declaration.ASTFunctionDeclaration;
import edu.udel.cis.vsl.tass.front.minimp.ast.declaration.ASTVariableDeclaration;
import edu.udel.cis.vsl.tass.front.minimp.ast.expression.ASTExpressionIF;
import edu.udel.cis.vsl.tass.front.minimp.ast.type.ASTTypeIF;
public class Library implements LibraryIF {
private Collection<ASTVariableDeclaration> inputs = new LinkedList<ASTVariableDeclaration>();
private HashMap<String, ASTFunctionDeclaration> functions = new HashMap<String, ASTFunctionDeclaration>();
private Collection<String> functionNames = new LinkedList<String>();
private HashMap<String, ASTTypeIF> types = new HashMap<String, ASTTypeIF>();
private Map<String, ASTExpressionIF> constants = new HashMap<String, ASTExpressionIF>();
/**
* The libraries that this library uses.
*/
private Collection<String> librariesUsed = new HashSet<String>();
private String name;
public Library(String name) {
this.name = name;
}
@Override
public Collection<ASTVariableDeclaration> getInputs() {
return inputs;
}
@Override
public Collection<String> getFunctionNames() {
return functionNames;
}
@Override
public ASTFunctionDeclaration getFunction(String name) {
if (functions.containsKey(name))
return functions.get(name);
return null;
}
@Override
public Map<String, ASTTypeIF> getTypes() {
return types;
}
public void addFunctions(Collection<ASTFunctionDeclaration> newFunctions) {
for (ASTFunctionDeclaration f : newFunctions) {
functionNames.add(f.getName().toString());
functions.put(f.getName().toString(), f);
}
}
public void addInputs(Collection<ASTVariableDeclaration> newInputs) {
inputs.addAll(newInputs);
}
public void addTypes(Map<String, ASTTypeIF> newTypes) {
types.putAll(newTypes);
}
@Override
public String name() {
return name;
}
@Override
public void addConstants(Map<String, ASTExpressionIF> newConstants) {
constants.putAll(newConstants);
}
@Override
public Map<String, ASTExpressionIF> getConstants() {
return constants;
}
@Override
public void addLibrariesUsed(Collection<String> names) {
librariesUsed.addAll(names);
}
@Override
public Collection<String> getLibrariesUsed() {
return librariesUsed;
}
}