diff options
author | Ivan Shapovalov <intelfx@intelfx.name> | 2016-10-18 04:53:06 +0300 |
---|---|---|
committer | Ivan Shapovalov <intelfx@intelfx.name> | 2016-10-22 08:45:27 +0300 |
commit | 56f300607b1d0b81ab3269894fda5a066c46cdeb (patch) | |
tree | 60b4c5566cc4bbfad15a7791a4e20c2a60e16707 /src/routine.hpp | |
parent | b98af44fcf89b9946e1de438b1f5527e6bf28905 (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.hpp | 10 |
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_; |