package tools;

import java.util.Map;

/**
 * Created with IntelliJ IDEA.
 * User: Diego
 * Date: 20/10/13
 * Time: 17:07
 * This is a Java port from Tom Schaul's VGDL - https://github.com/schaul/py-vgdl
 */
public class Pair<T,U> implements Map.Entry<T, U>, Comparable{

    public T first;
    public U second;

    public Pair(T first, U second)
    {
        this.first = first;
        this.second = second;
    }

    @Override
    public T getKey() {
        return first;
    }

    @Override
    public U getValue() {
        return second;
    }

    @Override
    public U setValue(U value) {
        second = value;
        return second;
    }

    @Override
    public int compareTo(Object o) {
        try{
            Pair p = (Pair)o;

            //if(p.first == this.first && p.second == this.second)
            if(p.first.equals(this.first) && p.second.equals(this.second))
                return 0;

        }catch(ClassCastException e)
        {
            //Whatever this is, this is not a Pair. So, not equal at all.
            return -1;
        }
        return -1; //Not sure what would the order be, so always -1.
    }

    @Override
    public boolean equals(Object obj) {
        return (compareTo(obj)==0);
    }

    @SuppressWarnings("unchecked")
    public Pair copy()  { return new Pair(first, second); }
}