package de.dhbwstuttgart.strucTypes4.algo;

import de.dhbwstuttgart.strucTypes4.typeVars.TypeVarAbstract;
import de.dhbwstuttgart.strucTypes4.typeVars.TypeVarType;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by sebastian on 15.04.17.
 */
public class MappingAltNeu {


        List<TypeVarAbstract> altList = new ArrayList<>();
        List<TypeVarAbstract> neuList = new ArrayList<>();

        public void addTypeVar(TypeVarAbstract alt, TypeVarAbstract neu) {
            altList.add(alt);

            // Versuch bereits bekannte Typen mitzunehmen
            // geht nur wenn dies auch dem TypeVarStore bekannt ist
            if (alt.getClass().equals(TypeVarType.class)) {
                neuList.add(alt);
            }
            else {
                neuList.add(neu);
            }
        }

        public TypeVarAbstract getNeu (TypeVarAbstract altTypeVar) {

            // Wenn typ bereits bekannt ist
            if (altTypeVar.getClass().equals(TypeVarType.class)) {
                return altTypeVar;
            }

            // Typvariable nicht bekannt
            if ( ! neuList.contains(altTypeVar)) {
               return altTypeVar;
            }



            return neuList.get(altList.indexOf(altTypeVar));
        }
    }

