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

import java.nio.LongBuffer;

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.ints.Veci;
import speiger.src.coreengine.math.vector.shorts.Vecs;

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