🛰️航天仿真算法库 SpaceAST 0.0.1
载入中...
搜索中...
未找到
DataPort.hpp
浏览该文件的文档.
1
20
21#pragma once
22
23#include "AstGlobal.h"
24// #include "AstUtil/Dimension.hpp" // for Dimension
25
26AST_NAMESPACE_BEGIN
27
28typedef ptr_t signal_t; // 信号(指向数据的指针)
29typedef signal_t* signalsignal_t; // 信号指针(指向信号的指针/指向数据指针的指针)
30
33{
34public:
35 enum EValueType: int8_t{
37 eDouble=0,
38 eFloat=1,
39 eInt=2,
40 eBoolean=3,
41 };
42 enum EModeType: int8_t {
43 eAny = -1,
44 eAssign = 0,
45 eAccumulate = 1
46 };
47 // DataPort() = default;
48 DataPort(Identifier* name, signal_t* signalPtr, int width, EValueType type, EModeType mode = eAny)
49 : name_(name), signalPtr_(signalPtr), width_(width), type_(type), mode_(mode)
50 {}
51 ~DataPort() = default;
52
53 AST_CORE_API
54 static errc_t connect(DataPort* src, DataPort* dst);
55
56 AST_CORE_API
57 errc_t connect(DataPort* dst);
58
61 void setWidth(int width){ width_ = width; }
62
65 int getWidth() const{ return width_; }
66
69 EValueType getDataType() const{ return type_; }
70
74 double* getSignalDouble() const{ return this->getSignal<double>(); }
75
79 void setSignalDouble(double* signal){ this->setSignal<double>(signal); }
80
84 int* getSignalInt() const{ return this->getSignal<int>(); }
85
89 void setSignalInt(int* signal){ this->setSignal<int>(signal); }
90
94 Vector3d* getSignalVector3d() const{ return this->getSignal<Vector3d>(); }
95
99 void setSignalVector3d(Vector3d* signal){ this->setSignal<Vector3d>(signal); }
100
104 template<typename T=void>
105 T* getSignal() const{ return (T*)*signalPtr_; }
106
110 template<typename T=void>
111 void setSignal(T* signal){ *signalPtr_ = signal; }
112
116 signal_t* getSignalPtr() const{ return signalPtr_; }
117
120 EModeType getMode() const{ return mode_; }
121public:
123 signal_t* signalPtr_;
124 int width_;
126 EModeType mode_{eAny};
127 // Dimension dimension_; ///< 数据量纲 @todo: 支持数据量纲
128};
129
130
131AST_NAMESPACE_END
数据端口
定义 DataPort.hpp:33
double * getSignalDouble() const
获取数据端口的实数值指针
定义 DataPort.hpp:74
signal_t * getSignalPtr() const
获取数据端口的信号指针(指向数据指针的指针)
定义 DataPort.hpp:116
Identifier * name_
端口名称
定义 DataPort.hpp:122
signal_t * signalPtr_
信号指针(指向数据指针的指针)
定义 DataPort.hpp:123
EModeType
定义 DataPort.hpp:42
Vector3d * getSignalVector3d() const
获取数据端口的向量3值指针
定义 DataPort.hpp:94
int getWidth() const
获取数据端口的宽度
定义 DataPort.hpp:65
void setSignalVector3d(Vector3d *signal)
设置数据端口的向量3值指针
定义 DataPort.hpp:99
void setSignalDouble(double *signal)
设置数据端口的实数值指针
定义 DataPort.hpp:79
EValueType getDataType() const
获取数据端口的数据类型
定义 DataPort.hpp:69
void setSignalInt(int *signal)
设置数据端口的整数值指针
定义 DataPort.hpp:89
int width_
数据宽度
定义 DataPort.hpp:124
void setSignal(T *signal)
设置数据端口的信号指针(指向数据指针的指针)
定义 DataPort.hpp:111
EValueType
定义 DataPort.hpp:35
EModeType getMode() const
获取数据端口的数据模式
定义 DataPort.hpp:120
int * getSignalInt() const
获取数据端口的整数值指针
定义 DataPort.hpp:84
EValueType type_
数据类型
定义 DataPort.hpp:125
void setWidth(int width)
设置数据端口的宽度
定义 DataPort.hpp:61
T * getSignal() const
获取数据端口的任意类型值指针
定义 DataPort.hpp:105
标识符类
定义 Identifier.hpp:37
EValueType
定义 Property.hpp:38
@ eInvalid
无效类型
@ eAssign
赋值 =
定义 ScriptAPI.hpp:83
Unit T
特斯拉
定义 Unit.cpp:492