🛰️航天仿真算法库 SpaceAST 0.0.1
载入中...
搜索中...
未找到
Expr.hpp
浏览该文件的文档.
1
20
21#pragma once
22
23#include "AstGlobal.h"
24#include "AstUtil/Object.hpp"
25#include "AstUtil/ObjectNamed.hpp"
26#include "AstScript/ScriptAPI.hpp"
27
28AST_NAMESPACE_BEGIN
29
30class Value;
31
39class AST_SCRIPT_API Expr: public ObjectNamed // 表达式需要名称吗??
40{
41public:
42 using ObjectNamed::ObjectNamed;
43 ~Expr() override = default;
44
47 virtual void accept(ExprVisitor& visitor) = 0;
48
51 virtual Value* eval() const = 0;
52
53 Expr* expand() const;
54
56 virtual errc_t setValue(Value* val) {return eErrorReadonly;};
57
59 virtual errc_t setValueDouble(double val);
60
62 virtual errc_t getValueDouble(double& val) const;
63
67 virtual std::string getExpression(Object* context=nullptr) const = 0;
68};
69
70
71AST_NAMESPACE_END
表达式访问器
定义 ExprVisitor.hpp:62
表达式基类
定义 Expr.hpp:40
virtual void accept(ExprVisitor &visitor)=0
接受表达式访问者
virtual errc_t setValue(Value *val)
设置表达式的值
定义 Expr.hpp:56
virtual Value * eval() const =0
求值
virtual std::string getExpression(Object *context=nullptr) const =0
获取表达式的字符串表示
命名对象
定义 ObjectNamed.hpp:36
对象基类,继承自该类的对象可以使用运行时类型信息相关功能,实现强弱引用计数、运行时元信息(属性访问、序列化等)等基础功能
定义 Object.hpp:95
值对象基类
定义 Value.hpp:43