package org.maltparser.core.syntaxgraph; import java.util.Observer; import org.maltparser.core.exception.MaltChainedException; import org.maltparser.core.pool.ObjectPoolList; import org.maltparser.core.symbol.SymbolTableHandler; /** * * * @author Johan Hall */ public abstract class SyntaxGraph implements LabeledStructure, Structure, Observer { protected SymbolTableHandler symbolTables; protected final ObjectPoolList<LabelSet> labelSetPool; protected int numberOfComponents; public SyntaxGraph(SymbolTableHandler symbolTables) throws MaltChainedException { this.symbolTables = symbolTables; labelSetPool = new ObjectPoolList<LabelSet>() { protected LabelSet create() { return new LabelSet(6); } public void resetObject(LabelSet o) throws MaltChainedException { o.clear(); } }; } public SymbolTableHandler getSymbolTables() { return symbolTables; } public void setSymbolTables(SymbolTableHandler symbolTables) { this.symbolTables = symbolTables; } public void addLabel(Element element, String labelFunction, String label) throws MaltChainedException { element.addLabel(symbolTables.addSymbolTable(labelFunction), label); } public LabelSet checkOutNewLabelSet() throws MaltChainedException { return labelSetPool.checkOut(); } public void checkInLabelSet(LabelSet labelSet) throws MaltChainedException { labelSetPool.checkIn(labelSet); } public void clear() throws MaltChainedException { numberOfComponents = 0; labelSetPool.checkInAll(); } }