🛰️航天仿真算法库 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{
36 eInvalid=-1,
37 eDouble=0,
38 eFloat=1,
39 eInt,
40 eBoolean,
41 };
42 // DataPort() = default;
43 ~DataPort() = default;
44
45 AST_CORE_API
46 static errc_t connect(DataPort* src, DataPort* dst);
47
48 AST_CORE_API
49 errc_t connect(DataPort* dst);
50
53 void setWidth(int width){ width_ = width; }
54
57 int getWidth() const{ return width_; }
58
61 EValueType getDataType() const{ return type_; }
62
66 double* getSignalDouble() const{ return this->getSignal<double>(); }
67
71 void setSignalDouble(double* signal){ this->setSignal<double>(signal); }
72
76 int* getSignalInt() const{ return this->getSignal<int>(); }
77
81 void setSignalInt(int* signal){ this->setSignal<int>(signal); }
82
86 Vector3d* getSignalVector3d() const{ return this->getSignal<Vector3d>(); }
87
91 void setSignalVector3d(Vector3d* signal){ this->setSignal<Vector3d>(signal); }
92
96 template<typename T=void>
97 T* getSignal() const{ return (T*)*signalPtr_; }
98
102 template<typename T=void>
103 void setSignal(T* signal){ *signalPtr_ = signal; }
104
108 signal_t* getSignalPtr() const{ return signalPtr_; }
109
110public:
112 signal_t* signalPtr_;
113 int width_;
114 EValueType type_;
115 // Dimension dimension_; ///< 数据量纲 @todo: 支持数据量纲
116};
117
118
119AST_NAMESPACE_END
数据端口
定义 DataPort.hpp:33
double * getSignalDouble() const
获取数据端口的实数值指针
定义 DataPort.hpp:66
signal_t * getSignalPtr() const
获取数据端口的信号指针(指向数据指针的指针)
定义 DataPort.hpp:108
Identifier * name_
端口名称
定义 DataPort.hpp:111
signal_t * signalPtr_
信号指针(指向数据指针的指针)
定义 DataPort.hpp:112
Vector3d * getSignalVector3d() const
获取数据端口的向量3值指针
定义 DataPort.hpp:86
int getWidth() const
获取数据端口的宽度
定义 DataPort.hpp:57
void setSignalVector3d(Vector3d *signal)
设置数据端口的向量3值指针
定义 DataPort.hpp:91
void setSignalDouble(double *signal)
设置数据端口的实数值指针
定义 DataPort.hpp:71
EValueType getDataType() const
获取数据端口的数据类型
定义 DataPort.hpp:61
void setSignalInt(int *signal)
设置数据端口的整数值指针
定义 DataPort.hpp:81
int width_
数据宽度
定义 DataPort.hpp:113
void setSignal(T *signal)
设置数据端口的信号指针(指向数据指针的指针)
定义 DataPort.hpp:103
int * getSignalInt() const
获取数据端口的整数值指针
定义 DataPort.hpp:76
EValueType type_
数据类型
定义 DataPort.hpp:114
void setWidth(int width)
设置数据端口的宽度
定义 DataPort.hpp:53
T * getSignal() const
获取数据端口的任意类型值指针
定义 DataPort.hpp:97
标识符类
定义 Identifier.hpp:37
@ eDouble
double类型
定义 Property.hpp:37
@ eInt
int类型
定义 Property.hpp:38