roadrunner  2.6.0
Fast simulator for SBML models
ModelInitialValueSymbolResolver.h
1 /*
2  * ModelInitialValueSymbolResolver.h
3  *
4  * Created on: Oct 29, 2013
5  * Author: andy
6  */
7 
8 #ifndef ModelInitialValueSymbolResolver_H_
9 #define ModelInitialValueSymbolResolver_H_
10 
11 #include "LoadSymbolResolverBase.h"
12 #include "LLVMIncludes.h"
13 #include "LLVMModelDataSymbols.h"
14 #include "LLVMModelSymbols.h"
15 
16 namespace libsbml
17 {
18 class Model;
19 }
20 
21 namespace rrllvm
22 {
28  class ModelInitialValueSymbolResolver : public LoadSymbolResolverBase
29  {
30  public:
31 
32  ModelInitialValueSymbolResolver(llvm::Value* modelData,
33  const ModelGeneratorContext& ctx);
34 
35  virtual ~ModelInitialValueSymbolResolver() {};
36 
37  virtual llvm::Value* loadSymbolValue(const std::string& symbol,
38  const llvm::ArrayRef<llvm::Value*>& args =
39  llvm::ArrayRef<llvm::Value*>());
40 
41  private:
42  llvm::Value* modelData;
43  };
44 
45 
46  class ModelInitialValueStoreSymbolResolver : public StoreSymbolResolver
47  {
48  public:
49  ModelInitialValueStoreSymbolResolver(llvm::Value* modelData,
50  const libsbml::Model* model, const LLVMModelSymbols& modelSymbols,
51  const LLVMModelDataSymbols& modelDataSymbols,
52  llvm::IRBuilder<>& builder,
53  LoadSymbolResolver& resolver);
54 
55  virtual ~ModelInitialValueStoreSymbolResolver() {};
56 
57  virtual llvm::Value* storeSymbolValue(const std::string& symbol,
58  llvm::Value* value);
59  private:
60 
61  llvm::Value* modelData;
62  const libsbml::Model* model;
63  const LLVMModelSymbols& modelSymbols;
64  const LLVMModelDataSymbols& modelDataSymbols;
65  llvm::IRBuilder<>& builder;
66  LoadSymbolResolver& resolver;
67 
68  };
70 } /* namespace rr */
71 #endif /* ModelInitialValueSymbolResolver_H_ */