001 package org.maltparser.core.syntaxgraph;
002
003 import java.util.Observer;
004
005 import org.maltparser.core.exception.MaltChainedException;
006 import org.maltparser.core.pool.ObjectPoolList;
007 import org.maltparser.core.symbol.SymbolTableHandler;
008 /**
009 *
010 *
011 * @author Johan Hall
012 */
013 public abstract class SyntaxGraph implements LabeledStructure, Structure, Observer {
014 protected SymbolTableHandler symbolTables;
015 protected ObjectPoolList<LabelSet> labelSetPool;
016 protected int numberOfComponents;
017
018 public SyntaxGraph(SymbolTableHandler symbolTables) throws MaltChainedException {
019 setSymbolTables(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 }