Dune::Copasi 2.1.0-git79717215+dune.gitlab.629933
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages Concepts
mu.hh
Go to the documentation of this file.
1#ifndef DUNE_COPASI_MU_PARSER_HH
2#define DUNE_COPASI_MU_PARSER_HH
3
5
6#include <memory>
7#include <string>
8
9namespace Dune::Copasi {
10
11class MuParser final : public Parser
12{
13public:
15
16 MuParser(const MuParser&) = delete;
17 MuParser(MuParser&&) = default;
18
19 MuParser& operator=(const MuParser&) = delete;
21
22 ~MuParser() override final;
23
24 using RangeField = typename Parser::RangeField;
25
26 using Function0D = typename Parser::Function0D;
27 using Function1D = typename Parser::Function1D;
28 using Function2D = typename Parser::Function2D;
29 using Function3D = typename Parser::Function3D;
30
31 void define_constant(const std::string& symbol, const RangeField& value) final;
32 void define_function(const std::string& symbol, Function0D&& function) final;
33 void define_function(const std::string& symbol, Function1D&& function) final;
34 void define_function(const std::string& symbol, Function2D&& function) final;
35 void define_function(const std::string& symbol, Function3D&& function) final;
36 void define_function(const std::string& symbol, Function4D&& function) final;
37
38 void compile() final;
39
40 [[nodiscard]] RangeField operator()() const noexcept final;
41
42private:
43 void register_functions();
44
45 void unregister_functions();
46 using Parser::_compiled;
47 using Parser::_expression;
48 using Parser::_symbols;
49 using Parser::_variables;
50
51 std::shared_ptr<void> _parser;
52};
53
54} // namespace Dune::Copasi
55
56#endif // DUNE_COPASI_MU_PARSER_HH
Definition: mu.hh:12
typename Parser::Function2D Function2D
Definition: mu.hh:28
~MuParser() override final
MuParser & operator=(MuParser &&)=default
void define_constant(const std::string &symbol, const RangeField &value) final
typename Parser::Function3D Function3D
Definition: mu.hh:29
MuParser(MuParser &&)=default
void define_function(const std::string &symbol, Function0D &&function) final
typename Parser::Function0D Function0D
Definition: mu.hh:26
typename Parser::Function1D Function1D
Definition: mu.hh:27
typename Parser::RangeField RangeField
Definition: mu.hh:24
MuParser(const MuParser &)=delete
MuParser & operator=(const MuParser &)=delete
Definition: parser.hh:16
fu2::unique_function< RangeField(RangeField, RangeField, RangeField, RangeField) const > Function4D
Definition: parser.hh:35
Definition: axis_names.hh:7