001    package org.maltparser.core.feature.value;
002    
003    import org.maltparser.core.feature.function.Function;
004    
005    /**
006     *  
007     *
008     * @author Johan Hall
009     * @since 1.0
010    **/
011    public abstract class FeatureValue extends FunctionValue {
012            protected boolean nullValue;
013            protected int cardinality;
014            
015            public FeatureValue(Function function) {
016                    super(function);
017                    setNullValue(true);
018                    setCardinality(0);
019            }
020            
021            public void reset() {
022                    setNullValue(true);
023            }
024    
025            public boolean isNullValue() {
026                    return nullValue;
027            }
028    
029            public void setNullValue(boolean nullValue) {
030                    this.nullValue = nullValue;
031            }
032    
033            /**
034             * Returns the cardinality (the number of distinct values) of the feature 
035             * 
036             * @return the cardinality (the number of distinct values) of the feature 
037             */
038            public int getCardinality() {
039                    return cardinality;
040            }
041    
042            /**
043             * Sets the cardinality (the number of distinct values) of the feature
044             * 
045             * @param cardinality  the cardinality (the number of distinct values)
046             */
047            public void setCardinality(int cardinality) {
048                    this.cardinality = cardinality;
049            }
050    
051            public boolean equals(Object obj) {
052                    if (this == obj)
053                            return true;
054                    if (obj == null)
055                            return false;
056                    if (getClass() != obj.getClass())
057                            return false;
058                    return super.equals(obj);
059            }
060            
061            public String toString() {
062                    return super.toString()+ "[ null=" + nullValue + ", cardinality="+cardinality+" ] ";
063            }
064    }