package generators;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

import ast.CompilationUnit;
import ast.SimpleType;
import models.algebra.Type;

public class Codebase {
	private Map<String, CompilationUnit> classes;
	private Map<String, Type> componentTypes;
	
	public Codebase() {
		classes = new HashMap<>();
		componentTypes = new HashMap<>();
	}
	
	public Collection<CompilationUnit> getCompilationUnits() {
		return classes.values();
	}
	
	public CompilationUnit getCompilationUnit(String name) {
		return classes.get(name);
	}
	
	public Type getComponentType(String name) {
		return componentTypes.get(name);
	}
	
	public void addCompilationUnit(String name, CompilationUnit compilationUnit) {
		classes.put(name, compilationUnit);
		Type newType = new Type(name, new SimpleType(name));
		componentTypes.put(name, newType);
	}
	
	public String toString() {
		String code = "";
		for (CompilationUnit cu: classes.values()) {
			code += cu.toString();
		}
		return code;
	}
}
