roadrunner  2.6.0
Fast simulator for SBML models
ModelResources.h
1 /*
2 
3  * ModelResources.h
4  *
5  * Created on: Aug 28, 2013
6  * Author: andy
7  */
8 
9 #ifndef CACHEDMODEL_H_
10 #define CACHEDMODEL_H_
11 
12 #include "LLVMExecutableModel.h"
13 #ifdef _MSC_VER
14 #pragma warning(disable: 4146)
15 #pragma warning(disable: 4141)
16 #pragma warning(disable: 4267)
17 #pragma warning(disable: 4624)
18 #endif
19 
20 #include "llvm/Jit.h"
21 
22 #ifdef _MSC_VER
23 #pragma warning(default: 4146)
24 #pragma warning(default: 4141)
25 #pragma warning(default: 4267)
26 #pragma warning(default: 4624)
27 #endif
28 
29 namespace rr {
30  class ExecutableModel;
31 }
32 namespace rrllvm
33 {
34 
35  class Jit;
36 
39  class ModelResources
40  {
41  public:
42 
43  ModelResources();
44  ~ModelResources();
45 
46  void saveState(std::ostream& out) const;
47  void loadState(std::istream& in, uint loadOpt);
48 
49 
50  EvalInitialConditionsCodeGen::FunctionPtr evalInitialConditionsPtr;
51  EvalReactionRatesCodeGen::FunctionPtr evalReactionRatesPtr;
52  GetBoundarySpeciesAmountCodeGen::FunctionPtr getBoundarySpeciesAmountPtr;
53  GetFloatingSpeciesAmountCodeGen::FunctionPtr getFloatingSpeciesAmountPtr;
54  GetBoundarySpeciesConcentrationCodeGen::FunctionPtr getBoundarySpeciesConcentrationPtr;
55  GetFloatingSpeciesConcentrationCodeGen::FunctionPtr getFloatingSpeciesConcentrationPtr;
56  GetCompartmentVolumeCodeGen::FunctionPtr getCompartmentVolumePtr;
57  GetGlobalParameterCodeGen::FunctionPtr getGlobalParameterPtr;
58  EvalRateRuleRatesCodeGen::FunctionPtr evalRateRuleRatesPtr;
59  GetEventTriggerCodeGen::FunctionPtr getEventTriggerPtr;
60  GetEventPriorityCodeGen::FunctionPtr getEventPriorityPtr;
61  GetEventDelayCodeGen::FunctionPtr getEventDelayPtr;
62  EventTriggerCodeGen::FunctionPtr eventTriggerPtr;
63  EventAssignCodeGen::FunctionPtr eventAssignPtr;
64  GetPiecewiseTriggerCodeGen::FunctionPtr getPiecewiseTriggerPtr;
65  EvalVolatileStoichCodeGen::FunctionPtr evalVolatileStoichPtr;
66  EvalConversionFactorCodeGen::FunctionPtr evalConversionFactorPtr;
67  SetBoundarySpeciesAmountCodeGen::FunctionPtr setBoundarySpeciesAmountPtr;
68  SetFloatingSpeciesAmountCodeGen::FunctionPtr setFloatingSpeciesAmountPtr;
69  SetBoundarySpeciesConcentrationCodeGen::FunctionPtr setBoundarySpeciesConcentrationPtr;
70  SetFloatingSpeciesConcentrationCodeGen::FunctionPtr setFloatingSpeciesConcentrationPtr;
71  SetCompartmentVolumeCodeGen::FunctionPtr setCompartmentVolumePtr;
72  SetGlobalParameterCodeGen::FunctionPtr setGlobalParameterPtr;
73 
74  // init value accessors
75  SetFloatingSpeciesInitConcentrationCodeGen::FunctionPtr setFloatingSpeciesInitConcentrationsPtr;
76  GetFloatingSpeciesInitConcentrationCodeGen::FunctionPtr getFloatingSpeciesInitConcentrationsPtr;
77 
78  SetFloatingSpeciesInitAmountCodeGen::FunctionPtr setFloatingSpeciesInitAmountsPtr;
79  GetFloatingSpeciesInitAmountCodeGen::FunctionPtr getFloatingSpeciesInitAmountsPtr;
80 
81  SetBoundarySpeciesInitConcentrationCodeGen::FunctionPtr setBoundarySpeciesInitConcentrationsPtr;
82  GetBoundarySpeciesInitConcentrationCodeGen::FunctionPtr getBoundarySpeciesInitConcentrationsPtr;
83 
84  SetBoundarySpeciesInitAmountCodeGen::FunctionPtr setBoundarySpeciesInitAmountsPtr;
85  GetBoundarySpeciesInitAmountCodeGen::FunctionPtr getBoundarySpeciesInitAmountsPtr;
86 
87  GetCompartmentInitVolumeCodeGen::FunctionPtr getCompartmentInitVolumesPtr;
88  SetCompartmentInitVolumeCodeGen::FunctionPtr setCompartmentInitVolumesPtr;
89 
90  GetGlobalParameterInitValueCodeGen::FunctionPtr getGlobalParameterInitValuePtr;
91  SetGlobalParameterInitValueCodeGen::FunctionPtr setGlobalParameterInitValuePtr;
92 
97  const LLVMModelDataSymbols* symbols;
98  std::unique_ptr<llvm::LLVMContext> context;
99  std::unique_ptr<llvm::ExecutionEngine> executionEngine;
100 
101  llvm::Module* module = nullptr;
102 
103  std::string moduleStr;
104  std::string sbmlMD5;
105  const class Random* random;
106  std::unique_ptr<std::string> errStr;
107 
108  std::unique_ptr<Jit> jit;
109 
110  //private:
111  // void addGlobalMapping(std::string name, void*);
112  // void addGlobalMappings();
113  };
114 
116 } /* namespace rrllvm */
117 #endif /* CACHEDMODEL_H_ */
LLVM executable model interface.
C_DECL_SPEC bool rrcCallConv loadState(RRHandle handle, const char *filename)
Reload a road runner instance's state saved by saveState.
C_DECL_SPEC bool rrcCallConv saveState(RRHandle handle, const char *filename)
Save a road runner instance's state to a platform-specific binary file.