package udg.useDefGraph;
import java.util.List;
import misc.MultiHashMap;
import ast.ASTNode;
public class UseDefGraph
{
// A UseDefGraph is a table indexed
// by identifiers. Each table-entry
// is a list of the UseOrDefRecords
// of the identifier.
MultiHashMap<String, UseOrDefRecord> useOrDefRecordTable = new MultiHashMap<String, UseOrDefRecord>();
public MultiHashMap<String, UseOrDefRecord> getUseDefDict()
{
return useOrDefRecordTable;
}
public List<UseOrDefRecord> getUsesAndDefsForSymbol(String symbol)
{
return useOrDefRecordTable.get(symbol);
}
public void addDefinition(String identifier, ASTNode astNode)
{
add(identifier, astNode, true);
}
public void addUse(String identifier, ASTNode astNode)
{
add(identifier, astNode, false);
}
private void add(String identifier, ASTNode astNode, boolean isDef)
{
UseOrDefRecord record = new UseOrDefRecord(astNode, isDef);
useOrDefRecordTable.add(identifier, record);
}
}