summaryrefslogtreecommitdiffstats
path: root/src/com/mbien/opencl/CLBuildConfiguration.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/mbien/opencl/CLBuildConfiguration.java')
-rw-r--r--src/com/mbien/opencl/CLBuildConfiguration.java33
1 files changed, 25 insertions, 8 deletions
diff --git a/src/com/mbien/opencl/CLBuildConfiguration.java b/src/com/mbien/opencl/CLBuildConfiguration.java
index 7b6ee1e2..86b5cfa2 100644
--- a/src/com/mbien/opencl/CLBuildConfiguration.java
+++ b/src/com/mbien/opencl/CLBuildConfiguration.java
@@ -1,20 +1,28 @@
package com.mbien.opencl;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
import java.util.Map;
/**
* Configuration representing everything needed to build an OpenCL program.
* @author Michael Bien
*/
-public interface CLBuildConfiguration {
+public interface CLBuildConfiguration extends Cloneable {
/**
* Builds or rebuilds the program.
- * @param program The program which should be build.
+ * @param program The program which should be build.
*/
public CLProgram build(CLProgram program);
/**
+ * Sets the program which should be build.
+ */
+ public CLProgramConfiguration setProgram(CLProgram program);
+
+ /**
* Adds the device as build target.
*/
public CLBuildConfiguration forDevice(CLDevice device);
@@ -31,38 +39,47 @@ public interface CLBuildConfiguration {
/**
* Adds the definition to the build configuration.
- * @see public CLProgram#define(java.lang.String)
+ * @see CLProgram#define(java.lang.String)
*/
public CLBuildConfiguration withDefine(String name);
/**
* Adds the definition to the build configuration.
- * @see public CLProgram#define(java.lang.String, java.lang.String)
+ * @see CLProgram#define(java.lang.String, java.lang.String)
*/
public CLBuildConfiguration withDefine(String name, Object value);
/**
* Adds the definitions to the build configuration.
- * @see public CLProgram#define(java.lang.String)
+ * @see CLProgram#define(java.lang.String)
*/
public CLBuildConfiguration withDefines(String... names);
/**
* Adds the definitions to the build configuration.
- * @see public CLProgram#define(java.lang.String, java.lang.String)
+ * @see CLProgram#define(java.lang.String, java.lang.String)
*/
public CLBuildConfiguration withDefines(Map<String, String> defines);
/**
* Adds the compiler option to the build configuration.
- * @see CompilerOptions
+ * @see CLProgram.CompilerOptions
*/
public CLBuildConfiguration withOption(String option);
/**
* Adds the compiler options to the build configuration.
- * @see CompilerOptions
+ * @see CLProgram.CompilerOptions
*/
public CLBuildConfiguration withOptions(String... options);
+ /**
+ * Clones this configuration.
+ */
+ public CLBuildConfiguration clone();
+
+ public void save(ObjectOutputStream oos) throws IOException;
+
+ public CLBuildConfiguration load(ObjectInputStream ois) throws IOException, ClassNotFoundException;
+
}