FunctionResolver

class FunctionResolver : public rrllvm::LoadSymbolResolver

Not thread safe — but perfectly fine if stack allocated.

Public Functions

FunctionResolver(LoadSymbolResolver &parentResolver, llvm::Value *modelData, const ModelGeneratorContext &ctx)
inline virtual ~FunctionResolver()
virtual llvm::Value *loadSymbolValue(const std::string &symbol, const llvm::ArrayRef<llvm::Value*> &args = llvm::ArrayRef<llvm::Value*>())

generate an LLVM load instruction.

Parameters:
  • symbol – the symbol name to resolve

  • args – function argument list

virtual void recursiveSymbolPush(const std::string &symbol)
virtual void recursiveSymbolPop()
virtual bool isLocalParameter(const std::string &symbol)

Private Members

LoadSymbolResolver &parentResolver
const ModelGeneratorContext &modelGenContext
const libsbml::Model *model
llvm::IRBuilder &builder
llvm::Value *modelData
std::map<std::string, llvm::Value*> *symbols

only valid during an outer call to loadSymbolValue, otherwise is null.