/* Variable

        Micro Projet ARTC 1997/1998
        (C) 1998 DPSV Team Touts Droits Réservés
        Marc-Aurèle DARCHE
        Emmanuel PIERRE
        Marc-Olivier VARROY
        Antoine SOULIEZ

*/

import java.util.*;
import java.io.*;

public abstract class Variable {
String name ;
String value ;
int column ;

public Variable() {} ;
public Variable(String Name) {name = Name; value = null; }
void   setValue(String val) { value = val ; }
String getValue() { return value; }

// utilisé par les catégories seulement
Vector labels ;
void setLabels(String Labels) {
    labels = new Vector() ;
    StringTokenizer tok = new StringTokenizer(Labels," ") ;
    while (tok.hasMoreTokens()) {
         labels.addElement(new String(tok.nextToken())) ;
    }
}
// renvoie les labels des index spécifiés
String getLabel(int index) {
    return (String)labels.elementAt(index);
}

// renvoie une chaîne contenant tous les labels
String getLabels() {
    String labelList = new String();
    Enumeration enum = labels.elements() ;
    while(enum.hasMoreElements()) {
         labelList += enum.nextElement() + " " ;
    }
    return labelList ;
}

// renvoie l'index d'un label
int getIndex(String label) {
    int i = 0, index = 0  ;
    Enumeration enum = labels.elements() ;
    while(enum.hasMoreElements()) {
        if (label.equals(enum.nextElement()))
        { index = i ; break ; }
        i++;
     }
     return i;
}


boolean categorical() { 
    if (labels != null) {
       return true ;
    } else {
       return false ; 
    }
}

// utilisé par la classe DataSet
public void setColumn(int col) { column = col ; }
public abstract void computeStatistics(String inValue) ; 
public abstract int normalize(String inValue, float[] outArray, int inx);
public int normalizedSize() { return 1 ; }
public String getDecodedValue(float[] act, int index) { return String.valueOf(act[index]); }

}
