summaryrefslogtreecommitdiffstats
path: root/src/com/jogamp/opencl/util/CLProgramConfiguration.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/jogamp/opencl/util/CLProgramConfiguration.java')
-rw-r--r--src/com/jogamp/opencl/util/CLProgramConfiguration.java50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/com/jogamp/opencl/util/CLProgramConfiguration.java b/src/com/jogamp/opencl/util/CLProgramConfiguration.java
new file mode 100644
index 00000000..901e28ce
--- /dev/null
+++ b/src/com/jogamp/opencl/util/CLProgramConfiguration.java
@@ -0,0 +1,50 @@
+package com.jogamp.opencl.util;
+
+import com.jogamp.opencl.CLDevice;
+import com.jogamp.opencl.CLProgram;
+import java.util.Map;
+
+/**
+ * Configuration representing everything needed to build an OpenCL program (program included).
+ * CLProgramConfiguration is a helper for building programs with more complex configurations or
+ * building multiple programs with the similar configuration.
+ * @see CLProgram#prepare()
+ * @see com.jogamp.opencl.CLProgramBuilder#createConfiguration(com.jogamp.opencl.CLProgram)
+ * @see com.jogamp.opencl.CLProgramBuilder#loadConfiguration(java.io.ObjectInputStream, com.jogamp.opencl.CLContext)
+ * @author Michael Bien
+ */
+public interface CLProgramConfiguration extends CLBuildConfiguration {
+
+ /**
+ * Builds or rebuilds a program.
+ */
+ public CLProgram build();
+
+ /**
+ * Returns the program.
+ */
+ public CLProgram getProgram();
+
+ /**
+ * Returns a new instance of of this configuration without a {@link CLProgram},
+ * program binaries or sources associated with it.
+ */
+ public CLBuildConfiguration asBuildConfiguration();
+
+
+ // overwrite with CLProgramConfiguration as return type
+ @Override public CLProgramConfiguration forDevice(CLDevice device);
+ @Override public CLProgramConfiguration forDevices(CLDevice... devices);
+ @Override public CLProgramConfiguration withDefine(String name);
+ @Override public CLProgramConfiguration withDefine(String name, Object value);
+ @Override public CLProgramConfiguration withDefines(String... names);
+ @Override public CLProgramConfiguration withDefines(Map<String, ? extends Object> defines);
+ @Override public CLProgramConfiguration withOption(String option);
+ @Override public CLProgramConfiguration withOptions(String... options);
+ @Override public CLProgramConfiguration reset();
+ @Override public CLProgramConfiguration resetOptions();
+ @Override public CLProgramConfiguration resetDefines();
+ @Override public CLProgramConfiguration resetDevices();
+ @Override public CLProgramConfiguration clone();
+
+}