diff options
Diffstat (limited to 'src/routine.hpp')
-rw-r--r-- | src/routine.hpp | 13 |
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_; }; // ================================================================================================= |