MorphicVectorFactory.java

package edu.udel.cis.vsl.tass.morph;

public class MorphicVectorFactory<T extends Morphic> extends
		MorphicFactory<MorphicVector<T>> {

	private MorphicFactoryIF<? super T> elementFactory;

	public MorphicVectorFactory(MorphicFactoryIF<? super T> elementFactory) {
		this.elementFactory = elementFactory;
	}

	public MorphicFactoryIF<? super T> elementFactory() {
		return elementFactory;
	}

	public MorphicVector<T> newVector() {
		return new MorphicVector<T>();
	}

	/** Returns a new vector with the given size, all elements null. */
	public MorphicVector<T> newVector(int size) {
		return new MorphicVector<T>(size);
	}

	public MorphicVector<T> newVector(MorphicVector<T> oldVector) {
		return new MorphicVector<T>(oldVector);
	}

	@Override
	protected void canonicalizeChildren(MorphicVector<T> vector) {
		vector.canonicalizeChildren(elementFactory);
	}
}