package speiger.src.coreengine.math.vector.ints;

import java.nio.IntBuffer;

import speiger.src.coreengine.math.vector.Vec;
import speiger.src.coreengine.math.vector.bytes.Vecb;
import speiger.src.coreengine.math.vector.doubles.Vecd;
import speiger.src.coreengine.math.vector.floats.Vecf;
import speiger.src.coreengine.math.vector.longs.Vecl;
import speiger.src.coreengine.math.vector.shorts.Vecs;

public interface Veci extends Vec {
	public Veci set(int value);
	public Veci add(int value);
	public Veci sub(int value);
	public Veci multiply(int value);
	public Veci devide(int value);
	public Veci clamp(int min, int max);
	public Veci clamp(int min, int max, int filter);
	public long lengthSquared();
	public default double length() { return Math.sqrt(lengthSquared()); }
	public Veci store(IntBuffer buffer);
	public Veci load(IntBuffer buffer);
	public int[] asArray();
	public Vecb asByte();
	public Vecs asShort();
	public Vecl asLong();
	public Vecf asFloat();
	public Vecd asDouble();
}
