roadrunner  2.6.0
Fast simulator for SBML models
RegistrationFactory.h
1 //
2 // Created by Ciaran Welsh on 14/06/2021.
3 //
4 
5 #ifndef ROADRUNNER_REGISTRATIONFACTORY_H
6 #define ROADRUNNER_REGISTRATIONFACTORY_H
7 
8 #include "rrExporter.h"
9 #include <iostream>
10 #include <mutex>
11 #include "Registrable.h"
12 #include "Solver.h"
13 
14 namespace rr {
15 
16  // fwd
17  class ExecutableModel;
18  class Solver;
19 
20  typedef std::vector<Registrable *> RegistrableVector;
21 
29  class RR_DECLSPEC RegistrationFactory {
30  public:
31  virtual ~RegistrationFactory();
32 
38  Solver *New(const std::string& name, ExecutableModel *m) const;
39 
46  virtual void registerSolver(Registrable *i);
47 
52  template<class FactoryType>
53  static FactoryType &getInstance(std::mutex& mutex){
54  std::lock_guard<std::mutex> lockGuard(mutex);
55  static FactoryType factory;
56  return factory;
57  }
58 
59  virtual std::size_t size() const;
60 
61  virtual std::string name(std::size_t n) const;
62 
63  virtual std::string hint(std::size_t n) const;
64 
65  virtual std::string description(std::size_t n) const;
66 
67  protected:
72  RegistrationFactory() = default;
73 
74  RegistrableVector registrars;
75 
76  };
77 
78 
79 }
80 
81 #endif //ROADRUNNER_REGISTRATIONFACTORY_H
Contains the base class for RoadRunner solvers.
Base class for all code generation systems; allows compiling and evaluating the model.
Definition: rrExecutableModel.h:118
Handles constructing a solver and contains meta information about it.
Definition: Registrable.h:23
Constructs new integrators.
Definition: RegistrationFactory.h:29
RegistrationFactory()=default
Prevents external instantiation.
static FactoryType & getInstance(std::mutex &mutex)
Returns the singleton instance of the integrator factory.
Definition: RegistrationFactory.h:53
Base class for all integrators and steady state solvers.
Definition: Solver.h:39