summaryrefslogtreecommitdiff
path: root/src/routine.hpp
diff options
context:
space:
mode:
authorIvan Shapovalov <intelfx@intelfx.name>2016-10-18 04:53:06 +0300
committerIvan Shapovalov <intelfx@intelfx.name>2016-10-22 08:45:27 +0300
commit56f300607b1d0b81ab3269894fda5a066c46cdeb (patch)
tree60b4c5566cc4bbfad15a7791a4e20c2a60e16707 /src/routine.hpp
parentb98af44fcf89b9946e1de438b1f5527e6bf28905 (diff)
Routine: get rid of ::SetUp()
Since we now use C++ exceptions inside the implementation (and exceptions can be thrown from constructors), there is no need for a separate Routine::SetUp() function. For this, we also change the way how the kernel source string is constructed. The kernel-specific source code is now passed to the Routine ctor via an initializer_list of C strings to avoid unnecessary data copying while also working around C1091 of MSVC 2013.
Diffstat (limited to 'src/routine.hpp')
-rw-r--r--src/routine.hpp10
1 files changed, 4 insertions, 6 deletions
diff --git a/src/routine.hpp b/src/routine.hpp
index c2bcdaff..f4ad435e 100644
--- a/src/routine.hpp
+++ b/src/routine.hpp
@@ -34,21 +34,19 @@ class Routine {
// Base class constructor. The user database is an optional extra database to override the
// built-in database.
+ // All heavy preparation work is done inside this constructor.
explicit Routine(Queue &queue, EventPointer event, const std::string &name,
const std::vector<std::string> &routines, const Precision precision,
- const std::vector<const Database::DatabaseEntry*> &userDatabase = {});
-
- // Set-up phase of the kernel
- void SetUp();
+ const std::vector<const Database::DatabaseEntry*> &userDatabase,
+ std::initializer_list<const char *> source);
protected:
// Non-static variable for the precision
const Precision precision_;
- // The routine's name and its kernel-source in string form
+ // The routine's name
const std::string routine_name_;
- std::string source_string_;
// The OpenCL objects, accessible only from derived classes
Queue queue_;