roadrunner  2.6.0
Fast simulator for SBML models
GetPiecewiseTriggerCodeGen.h
1 /*
2  * GetPiecewiseTriggerCodeGen.h
3  *
4  */
5 
6 #ifndef RRLLVMGetPiecewiseTriggerCodeGen_H_
7 #define RRLLVMGetPiecewiseTriggerCodeGen_H_
8 
9 #include "CodeGenBase.h"
10 #include "ModelGeneratorContext.h"
11 #include "SymbolForest.h"
12 #include "ASTNodeCodeGen.h"
13 #include "ASTNodeFactory.h"
14 #include "ModelDataIRBuilder.h"
15 #include "ModelDataSymbolResolver.h"
16 #include "LLVMException.h"
17 #include "rrLogger.h"
18 #include <sbml/Model.h>
19 #include <Poco/Logger.h>
20 #include <vector>
21 #include <cstdio>
22 
23 namespace rrllvm
24 {
25  //Based on GetEventTriggerCodeGen (-LS)
26 
27  typedef unsigned char (*GetPiecewiseTriggerCodeGen_FunctionPtr)(LLVMModelData*, size_t);
28 
33  public CodeGenBase<GetPiecewiseTriggerCodeGen_FunctionPtr>
34  {
35  public:
37  virtual ~GetPiecewiseTriggerCodeGen() {};
38 
43  llvm::Value* codeGen();
44 
45  typedef GetPiecewiseTriggerCodeGen_FunctionPtr FunctionPtr;
46 
47  static const char* FunctionName;
48  static const char* IndexArgName;
49 
53  llvm::Type* getRetType();
54 
58  llvm::Value* createRet(llvm::Value*);
59 
60  private:
61  const std::vector<libsbml::ASTNode*>* piecewiseTriggers;
62  };
63 
64 
65 } /* namespace rr */
66 
67 
68 
69 
70 #endif /* RRLLVMGETVALUECODEGENBASE_H_ */
a convenience class to pull the vars out of a context, and store them as ivars.
Definition: CodeGenBase.h:54
Class for getting piecewise trigger values.
Definition: GetPiecewiseTriggerCodeGen.h:34
llvm::Value * createRet(llvm::Value *)
create a return type, a zero value should return the default type
Definition: GetPiecewiseTriggerCodeGen.cpp:90
llvm::Type * getRetType()
The ret type is a boolean, aka 'getInt8Ty'.
Definition: GetPiecewiseTriggerCodeGen.cpp:85
llvm::Value * codeGen()
The heart of the class, that creates code blocks for every piecewise trigger in the model.
Definition: GetPiecewiseTriggerCodeGen.cpp:29
All LLVM code generating objects basically need at a minimum three things to operate:
Definition: ModelGeneratorContext.h:95