package dfatool.values;

import java.util.Collection;
import java.util.HashSet;
import java.util.Set;

public class SetValue extends HashSet<Value> implements Value{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public SetValue(Collection<? extends Value> c) {
		super(c);
	}


	public SetValue() {
		super();
	}

	@Override
	public SetValue getValue() {
		return this;
	}
	
//	protected java.util.Set<Value> set;
//	
//	public Set(Collection<Value> c){
//		this.set = new HashSet<Value>(c);
//	}
//	
//	public boolean isEmpty(){
//		return this.set.isEmpty();
//	}
//	
//	public Set(){
//		this.set = new HashSet<Value>();
//	}
//	
//	public void add(Value v){
//		this.set.add(v);
//	}
//
//	public boolean isMember(Value v){
//		return this.set.contains(v);
//	}
//	@Override
//	public boolean equals(Object o) {
//		return (o instanceof Set) ? ((Set) o).getSet().equals(set) : false;
//	}
//	
//	public java.util.Set<Value> getSet(){
//		return this.set;
//	}
//	
//	@Override
//	public java.lang.String toString() {
//		return this.set.toString();
//	}
//	
//	@Override
//	public int hashCode() {
//		return set.hashCode();
//	}
//	
//	public static void main(java.lang.String[] args) {
//		List<Value> l = new ArrayList<Value>();
//		l.add(new Int(0));
//		l.add(new Int(2));
//		Tuple t = new Tuple(l);
//		Set s = new Set(l);
//		Set ss = new Set();
//		ss.add(t);
//		System.out.println(s.toString());
//		l.add(0, new Int(1));
//		System.out.println(ss.toString());
//	}
	
//	public static void main(java.lang.String[] args) {
//		Random r = new Random(0);
//		byte[] b = new byte[32];
//		Collection<Value> s1 = new ArrayList<Value>();
//		for(int i = 0; i< 1000000; i++){
//			s1.add(new String(Integer.toString(r.nextInt(2000000))));
//		}
//		long l = System.currentTimeMillis();
//		Set ss1 = new Set(s1);
//		System.out.println((System.currentTimeMillis()-l));
//		
//		List<Value> s2 = new ArrayList<Value>();
//		for(int i = 0; i< 1000000; i++){
//			s2.add(new String(Integer.toString(r.nextInt(2000000))));
//		}
//		l = System.currentTimeMillis();
//		Set ss2 = new Set(s2);
//		System.out.println((System.currentTimeMillis()-l));
//		
//		l = System.currentTimeMillis();
//		Set.inter(ss1, ss2);
//		System.out.println((System.currentTimeMillis()-l));
//		
//		l = System.currentTimeMillis();
//		Set.union(ss1, ss2);
//		System.out.println((System.currentTimeMillis()-l));
//		
//		l = System.currentTimeMillis();
//		Set.diff(ss1, ss2);
//		System.out.println((System.currentTimeMillis()-l));
//		
//		
//		
//	}

}
