package com.nativelibs4java.opencl.util.fft;
import com.nativelibs4java.opencl.*;
import com.nativelibs4java.opencl.util.Transformer.AbstractTransformer;
import java.io.IOException;
import java.nio.Buffer;
abstract class AbstractDFT<T, A> extends AbstractTransformer<T, A> {
// package-private constructor
AbstractDFT(CLContext context, Class<T> primitiveClass) throws IOException, CLException {
super(context, primitiveClass);
}
protected abstract CLEvent dft(CLQueue queue, CLBuffer<T> inBuf, CLBuffer<T> outBuf, int length, int sign, int[] dims, CLEvent... events) throws CLException;
@Override
public CLEvent transform(CLQueue queue, CLBuffer<T> inBuf, CLBuffer<T> outBuf, boolean inverse, CLEvent... eventsToWaitFor) throws CLException {
int length = (int)inBuf.getElementCount() / 2;
return dft(queue, inBuf, outBuf, length, inverse ? -1 : 1, new int[]{length}, eventsToWaitFor);
}
}