package com.amd.aparapi.internal.jni;
import com.amd.aparapi.ProfileInfo;
import java.util.List;
import com.amd.aparapi.device.OpenCLDevice;
import com.amd.aparapi.internal.opencl.OpenCLArgDescriptor;
import com.amd.aparapi.internal.opencl.OpenCLKernel;
import com.amd.aparapi.internal.opencl.OpenCLMem;
import com.amd.aparapi.internal.opencl.OpenCLPlatform;
import com.amd.aparapi.internal.opencl.OpenCLProgram;
/**
* This class is intended to be used as a 'proxy' or 'facade' object for Java code to interact with JNI
*/
public abstract class OpenCLJNI{
protected native List<OpenCLPlatform> getPlatforms();
protected native OpenCLProgram createProgram(OpenCLDevice context, String openCLSource);
protected native OpenCLKernel createKernelJNI(OpenCLProgram program, String kernelName, OpenCLArgDescriptor[] args);
protected native void invoke(OpenCLKernel openCLKernel, Object[] args);
protected native void disposeKernel(OpenCLKernel openCLKernel);
protected native void disposeProgram(OpenCLProgram openCLProgram);
protected native List<ProfileInfo> getProfileInfo(OpenCLProgram openCLProgram);
protected native void remap(OpenCLProgram program, OpenCLMem mem, long address);
protected native byte[] getBytes(String className);
protected native void getMem(OpenCLProgram program, OpenCLMem mem);
}