package org.maltparser.core.syntaxgraph;
import java.util.Set;
import org.maltparser.core.exception.MaltChainedException;
import org.maltparser.core.symbol.SymbolTable;
/**
*
*
* @author Johan Hall
*/
public interface Element {
/**
* Adds a label (a string value) to the symbol table and to the graph element.
*
* @param table the symbol table
* @param symbol a label symbol
* @throws MaltChainedException
*/
public void addLabel(SymbolTable table, String symbol) throws MaltChainedException;
/**
* Adds a label (an integer value) to the symbol table and to the graph element.
*
* @param table the symbol table
* @param code a label code
* @throws MaltChainedException
*/
public void addLabel(SymbolTable table, int code) throws MaltChainedException;
/**
* Adds the labels of the label set to the label set of the graph element.
*
* @param labelSet a label set.
* @throws MaltChainedException
*/
public void addLabel(LabelSet labelSet) throws MaltChainedException;
/**
* Returns <i>true</i> if the graph element has a label for the symbol table, otherwise <i>false</i>.
*
* @param table the symbol table
* @return <i>true</i> if the graph element has a label for the symbol table, otherwise <i>false</i>.
* @throws MaltChainedException
*/
public boolean hasLabel(SymbolTable table) throws MaltChainedException;
/**
* Returns the label symbol(a string representation) of the symbol table if it exists, otherwise
* an exception is thrown.
*
* @param table the symbol table
* @return the label (a string representation) of the symbol table if it exists.
* @throws MaltChainedException
*/
public String getLabelSymbol(SymbolTable table) throws MaltChainedException;
/**
* Returns the label code (an integer representation) of the symbol table if it exists, otherwise
* an exception is thrown.
*
* @param table the symbol table
* @return the label code (an integer representation) of the symbol table if it exists
* @throws MaltChainedException
*/
public int getLabelCode(SymbolTable table) throws MaltChainedException;
/**
* Returns <i>true</i> if the graph element has one or more labels, otherwise <i>false</i>.
*
* @return <i>true</i> if the graph element has one or more labels, otherwise <i>false</i>.
*/
public boolean isLabeled();
/**
* Returns the number of labels of the graph element.
*
* @return the number of labels of the graph element.
*/
public int nLabels();
/**
* Returns a set of symbol tables (labeling functions or label types) that labels the graph element.
*
* @return a set of symbol tables (labeling functions or label types)
*/
public Set<SymbolTable> getLabelTypes();
/**
* Returns the label set.
*
* @return the label set.
*/
public LabelSet getLabelSet();
public void removeLabel(SymbolTable table) throws MaltChainedException;
public void removeLabels() throws MaltChainedException;
/**
* Returns the graph (structure) in which the graph element belongs to.
*
* @return the graph (structure) in which the graph element belongs to.
*/
public SyntaxGraph getBelongsToGraph();
/**
* Sets the graph (structure) in which the graph element belongs to.
*
* @param belongsToGraph a graph (structure).
*/
public void setBelongsToGraph(SyntaxGraph belongsToGraph);
/**
* Resets the graph element.
*
* @throws MaltChainedException
*/
public void clear() throws MaltChainedException;
}