package typechecker; import java.util.HashMap; import java.util.Map; import java.util.Set; import ast.type.Type; public class TypeRepository { private final Map<String, Type> typeRepository; private final Map<String, String> labelRepository; public TypeRepository() { this.typeRepository = new HashMap<String, Type>(); this.labelRepository = new HashMap<String, String>(); } public void putType(String id, Type type) { typeRepository.put(id, type); } public void putLabel(String id, String label) { labelRepository.put(id, label); } private Map<String, Type> getTypeRepository() { return typeRepository; } public Map<String, String> getLabelRepository() { return labelRepository; } public boolean isDeclared(String id) { return typeRepository.containsKey(id); } public boolean isDeclaredLabel(String id) { return labelRepository.containsKey(id); } public Type getValue(String id) { if(isDeclared(id)) { return typeRepository.get(id); } return null; } public String getLabelValue(String id) { if(isDeclared(id)) { return labelRepository.get(id); } return null; } public boolean empty() { if(!this.getTypeRepository().isEmpty()) { return false; } return true; } public Set<String> getIDkeys() { Set<String> keys = typeRepository.keySet(); return keys; } }