summaryrefslogtreecommitdiff
path: root/src/routine.hpp
diff options
context:
space:
mode:
authorIvan Shapovalov <intelfx@intelfx.name>2016-11-28 04:23:01 +0300
committerIvan Shapovalov <intelfx@intelfx.name>2017-01-24 11:56:15 +0300
commit50e758a007b3a4e5700fbe5ef207bbb26b1fccf5 (patch)
tree1600b061a7d47d9d266c52ecdf8883c26e55060e /src/routine.hpp
parent6dc18c1c57d5fef75e7682b1fdb8268ec3786908 (diff)
Routine: cache the database instance as well
This does not change much, but will become useful in next commits when plugin support is introduced.
Diffstat (limited to 'src/routine.hpp')
-rw-r--r--src/routine.hpp13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/routine.hpp b/src/routine.hpp
index 8e9fd54d..f366e4d9 100644
--- a/src/routine.hpp
+++ b/src/routine.hpp
@@ -35,11 +35,22 @@ 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.
+ // NOTE: the caller must provide the same userDatabase for each combination of device, precision
+ // and routine list, otherwise the caching logic will break.
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,
std::initializer_list<const char *> source);
+ private:
+
+ // Initializes program_, fetching cached program or building one
+ void InitProgram(std::initializer_list<const char *> source);
+
+ // Initializes db_, fetching cached database or building one
+ void InitDatabase(const std::vector<std::string> &routines,
+ const std::vector<const Database::DatabaseEntry*> &userDatabase);
+
protected:
// Non-static variable for the precision
@@ -61,7 +72,7 @@ class Routine {
Program program_;
// Connection to the database for all the device-specific parameters
- const Database db_;
+ Database db_;
};
// =================================================================================================