/* * Copyright 2013 Guidewire Software, Inc. */ package gw.internal.gosu.ir.transform; import gw.lang.ir.IRSymbol; import gw.lang.ir.IRType; import java.util.HashMap; import java.util.Map; import java.util.Collection; public class IRScope { private Map<String, IRSymbol> _symbols = new HashMap<String, IRSymbol>(); private IRScope _parent; public IRScope(IRScope parent) { _parent = parent; } public void addSymbol(IRSymbol symbol) { _symbols.put(symbol.getName(), symbol); } public IRSymbol addSymbol(String name, IRType type) { IRSymbol symbol = new IRSymbol(name, type, false); _symbols.put(name, symbol); return symbol; } public IRSymbol getSymbol(String name) { IRSymbol localSymbol = _symbols.get(name); if (localSymbol != null) { return localSymbol; } else if (_parent != null) { return _parent.getSymbol(name); } else { return null; } } public Collection<IRSymbol> getSymbols() { return _symbols.values(); } }