// Path: src/org/maltparser/core/symbol/SymbolTable.java
// public interface SymbolTable extends Table {
// 	// Categories
// 	public static final int NA = -1;
// 	public static final int INPUT = 1;
// 	public static final int OUTPUT = 3;
// 	public static final String[] categories = { "", "INPUT", "", "OUTPUT", };
// 	
// 	// Types
// 	public static final int STRING = 1;
// 	public static final int INTEGER = 2;
// 	public static final int BOOLEAN = 3;
// 	public static final int REAL = 4;
// 	public static final String[] types = { "", "STRING", "INTEGER", "BOOLEAN", "REAL" };
// 	
// 	
// 	public void save(BufferedWriter out) throws MaltChainedException;
// 	public void load(BufferedReader in) throws MaltChainedException;
// 	public int getValueCounter();
// 	public int getNullValueCode(NullValueId nullValueIdentifier) throws MaltChainedException;
// 	public String getNullValueSymbol(NullValueId nullValueIdentifier) throws MaltChainedException;
// 	public boolean isNullValue(String value) throws MaltChainedException;
// 	public boolean isNullValue(int code) throws MaltChainedException;
// }


import java.util.SortedMap;
import java.util.TreeMap;
import org.maltparser.core.exception.MaltChainedException;
import org.maltparser.core.helper.HashMap;
import org.maltparser.core.symbol.SymbolException;
import org.maltparser.core.symbol.SymbolTable;

package org.maltparser.core.symbol.nullvalue;



/**
* 
* 
* @author Johan Hall
*/
public abstract class NullValues {
	protected enum NullValueDegree {
		NONE, ONE, ROOTNODE, NOVALUE
	};
	public enum NullValueId {
		NO_NODE, ROOT_NODE, NO_VALUE
	};
	protected HashMap<NullValueId, String> nullValue2SymbolMap;
	protected HashMap<NullValueId, Integer> nullValue2CodeMap;
	protected HashMap<String, Integer> symbol2CodeMap;
	protected SortedMap<Integer, String> code2SymbolMap;
	protected SymbolTable table;
	protected NullValueDegree nullValueEncoding;
	protected String nullValueStrategy;
	protected int nextCode;
	
	public NullValues(SymbolTable table) {

// Path: src/org/maltparser/core/symbol/SymbolTable.java
// public interface SymbolTable extends Table {
// 	// Categories
// 	public static final int NA = -1;
// 	public static final int INPUT = 1;
// 	public static final int OUTPUT = 3;
// 	public static final String[] categories = { "", "INPUT", "", "OUTPUT", };
// 	
// 	// Types
// 	public static final int STRING = 1;
// 	public static final int INTEGER = 2;
// 	public static final int BOOLEAN = 3;
// 	public static final int REAL = 4;
// 	public static final String[] types = { "", "STRING", "INTEGER", "BOOLEAN", "REAL" };
// 	
// 	
// 	public void save(BufferedWriter out) throws MaltChainedException;
// 	public void load(BufferedReader in) throws MaltChainedException;
// 	public int getValueCounter();
// 	public int getNullValueCode(NullValueId nullValueIdentifier) throws MaltChainedException;
// 	public String getNullValueSymbol(NullValueId nullValueIdentifier) throws MaltChainedException;
// 	public boolean isNullValue(String value) throws MaltChainedException;
// 	public boolean isNullValue(int code) throws MaltChainedException;
// }


// Path: src/org/maltparser/core/symbol/nullvalue/NullValues.java
import java.util.SortedMap;
import java.util.TreeMap;
import org.maltparser.core.exception.MaltChainedException;
import org.maltparser.core.helper.HashMap;
import org.maltparser.core.symbol.SymbolException;
import org.maltparser.core.symbol.SymbolTable;

package org.maltparser.core.symbol.nullvalue;



/**
* 
* 
* @author Johan Hall
*/
public abstract class NullValues {
	protected enum NullValueDegree {
		NONE, ONE, ROOTNODE, NOVALUE
	};
	public enum NullValueId {
		NO_NODE, ROOT_NODE, NO_VALUE
	};
	protected HashMap<NullValueId, String> nullValue2SymbolMap;
	protected HashMap<NullValueId, Integer> nullValue2CodeMap;
	protected HashMap<String, Integer> symbol2CodeMap;
	protected SortedMap<Integer, String> code2SymbolMap;
	protected SymbolTable table;
	protected NullValueDegree nullValueEncoding;
	protected String nullValueStrategy;
	protected int nextCode;
	
	public NullValues(SymbolTable table) {

		setSymbolTable(table);
