ASTNode.hpp
Go to the documentation of this file.
1#ifndef ASTNODE_HPP
2#define ASTNODE_HPP
3
5
6#include "ActionValue.hpp"
7
8namespace Opm {
9namespace Action {
10
11class ActionContext;
12class WellSet;
13class ASTNode {
14public:
15
17 ASTNode(TokenType type_arg);
18 ASTNode(double value);
19 ASTNode(TokenType type_arg, FuncType func_type_arg, const std::string& func_arg, const std::vector<std::string>& arg_list_arg);
20
22
23 Action::Result eval(const Action::Context& context) const;
24 Action::Value value(const Action::Context& context) const;
27 void add_child(const ASTNode& child);
28 size_t size() const;
30
31 bool operator==(const ASTNode& data) const;
32
33 template<class Serializer>
34 void serializeOp(Serializer& serializer)
35 {
36 serializer(type);
37 serializer(func_type);
38 serializer(func);
39 serializer(arg_list);
40 serializer(number);
41 serializer.vector(children);
42 }
43
44private:
45 std::vector<std::string> arg_list;
46 double number = 0.0;
47
48 /*
49 To have a member std::vector<ASTNode> inside the ASTNode class is
50 supposedly borderline undefined behaviour; it compiles without warnings
51 and works. Good for enough for me.
52 */
53 std::vector<ASTNode> children;
54};
55}
56}
57#endif
const char *const string
Definition: cJSON.h:170
Definition: ASTNode.hpp:13
ASTNode(TokenType type_arg, FuncType func_type_arg, const std::string &func_arg, const std::vector< std::string > &arg_list_arg)
Action::Value value(const Action::Context &context) const
void add_child(const ASTNode &child)
std::string func
Definition: ASTNode.hpp:29
static ASTNode serializeObject()
size_t size() const
ASTNode(TokenType type_arg)
FuncType func_type
Definition: ASTNode.hpp:26
ASTNode(double value)
TokenType type
Definition: ASTNode.hpp:25
Action::Result eval(const Action::Context &context) const
bool operator==(const ASTNode &data) const
void serializeOp(Serializer &serializer)
Definition: ASTNode.hpp:34
Definition: ActionContext.hpp:38
Definition: ActionResult.hpp:89
Definition: ActionValue.hpp:40
Definition: Serializer.hpp:38
Action
Definition: InputErrorAction.hpp:36
Definition: A.hpp:4
TokenType
Definition: ActionValue.hpp:7
FuncType
Definition: ActionValue.hpp:24
static std::string data()
Definition: exprtk.hpp:40022