001package org.maltparser.core.syntaxgraph; 002 003import java.util.Observer; 004 005import org.maltparser.core.exception.MaltChainedException; 006import org.maltparser.core.pool.ObjectPoolList; 007import org.maltparser.core.symbol.SymbolTableHandler; 008/** 009* 010* 011* @author Johan Hall 012*/ 013public abstract class SyntaxGraph implements LabeledStructure, Observer { 014 protected SymbolTableHandler symbolTables; 015 protected final ObjectPoolList<LabelSet> labelSetPool; 016 protected int numberOfComponents; 017 018 public SyntaxGraph(SymbolTableHandler symbolTables) throws MaltChainedException { 019 this.symbolTables = symbolTables; 020 labelSetPool = new ObjectPoolList<LabelSet>() { 021 protected LabelSet create() { return new LabelSet(6); } 022 public void resetObject(LabelSet o) throws MaltChainedException { o.clear(); } 023 }; 024 } 025 026 public SymbolTableHandler getSymbolTables() { 027 return symbolTables; 028 } 029 030 public void setSymbolTables(SymbolTableHandler symbolTables) { 031 this.symbolTables = symbolTables; 032 } 033 034 public void addLabel(Element element, String labelFunction, String label) throws MaltChainedException { 035 element.addLabel(symbolTables.addSymbolTable(labelFunction), label); 036 } 037 038 public LabelSet checkOutNewLabelSet() throws MaltChainedException { 039 return labelSetPool.checkOut(); 040 } 041 042 public void checkInLabelSet(LabelSet labelSet) throws MaltChainedException { 043 labelSetPool.checkIn(labelSet); 044 } 045 046 public void clear() throws MaltChainedException { 047 numberOfComponents = 0; 048 labelSetPool.checkInAll(); 049 } 050}