🛰️航天仿真算法库 SpaceAST 0.0.1
载入中...
搜索中...
未找到
ExprCalculation.hpp
浏览该文件的文档.
1
20
21#pragma once
22
23#include "AstGlobal.h"
24#include "Expr.hpp"
25#include "AstUtil/ObjectCalculation.hpp"
26
27
28AST_NAMESPACE_BEGIN
29
36class AST_SCRIPT_API ExprCalculationBase : public Expr
37{
38public:
39
40
41};
42
43
44
45class AST_SCRIPT_API ExprCalculation : public ExprCalculationBase
46{
47public:
48 AST_EXPR(ExprCalculation)
49
50
54 static ExprCalculation* New(Object* obj=nullptr, ObjectCalculation* calc=nullptr);
55
56
57 ExprCalculation() = default;
59 ~ExprCalculation() = default;
60
61 Value* eval() const override;
62
63 errc_t setValue(Value* val) override;
64
65 errc_t setValueDouble(double val) override;
66
67 errc_t getValueDouble(double& val) const override;
68
69 std::string getExpression(Object* context=nullptr) const override;
70
71public:
75 errc_t calculate(double& val) const;
76
77public:
78 Object* object() const {return object_.get();}
79 void setObject(Object* obj);
80
81 ObjectCalculation* calculation() const {return calculation_.get();}
82 void setCalculation(ObjectCalculation* calc);
83private:
84 void syncTypeMatched();
85private:
86 bool typeMatched_{false};
87 WeakPtr<Object> object_;
88 WeakPtr<ObjectCalculation> calculation_;
89};
90
93AST_NAMESPACE_END
94
95
定义 ExprCalculation.hpp:37
定义 ExprCalculation.hpp:46
表达式基类
定义 Expr.hpp:40
virtual errc_t setValueDouble(double val)
设置表达式的双精度值
定义 Expr.cpp:32
virtual errc_t getValueDouble(double &val) const
获取表达式的双精度值
定义 Expr.cpp:38
virtual errc_t setValue(Value *val)
设置表达式的值
定义 Expr.hpp:56
virtual Value * eval() const =0
求值
virtual std::string getExpression(Object *context=nullptr) const =0
获取表达式的字符串表示
对象计算基类
定义 ObjectCalculation.hpp:41
对象基类,继承自该类的对象可以使用运行时类型信息相关功能,实现强弱引用计数、运行时元信息(属性访问、序列化等)等基础功能
定义 Object.hpp:95
值对象基类
定义 Value.hpp:43
弱引用指针
定义 WeakPtr.hpp:35