libxr  1.0
Want to be the best embedded framework
Loading...
Searching...
No Matches
libxr_type.hpp
1#pragma once
2
3#include <cstring>
4#include <string>
5
6#include "libxr_def.hpp"
7
8namespace LibXR
9{
10
21{
22 public:
32 RawData(void *addr, size_t size);
33
38 RawData();
39
50 template <typename DataType>
51 RawData(const DataType &data)
52 : addr_(const_cast<DataType *>(&data)), size_(sizeof(DataType))
53 {
54 }
55
63 RawData(const RawData &data) = default;
64
73 RawData(char *data);
74
85 template <size_t N>
86 RawData(const char (&data)[N]) : addr_(reinterpret_cast<void *>(data)), size_(N - 1)
87 {
88 }
89
98 explicit RawData(const std::string &data);
99
109 RawData &operator=(const RawData &data) = default;
110
111 void *addr_;
112 size_t size_;
113};
114
125{
126 public:
136 ConstRawData(const void *addr, size_t size);
137
142 ConstRawData();
143
155 template <typename DataType>
156 ConstRawData(const DataType &data)
157 : addr_(reinterpret_cast<const DataType *>(&data)), size_(sizeof(DataType))
158 {
159 }
160
168 ConstRawData(const ConstRawData &data) = default;
169
178 ConstRawData(const RawData &data);
179
188 ConstRawData(char *data);
189
197 ConstRawData(const char *data);
198
209 template <size_t N>
210 ConstRawData(const char (&data)[N])
211 : addr_(reinterpret_cast<const void *>(data)), size_(N - 1)
212 {
213 }
214
224 ConstRawData &operator=(const ConstRawData &data) = default;
225
226 const void
228 size_t size_;
229};
230
236{
237 public:
238 using ID = const void *;
245 template <typename T>
246 static ID GetID()
247 {
248 static char id; // NOLINT
249 return &id;
250 }
251};
252
253} // namespace LibXR
常量原始数据封装类。 A class for encapsulating constant raw data.
ConstRawData(const char(&data)[N])
从字符数组构造 ConstRawData,数据大小为数组长度减 1(不含 \0)。 Constructs ConstRawData from a character array,...
ConstRawData()
默认构造函数,初始化为空数据。 Default constructor initializing to empty data.
ConstRawData & operator=(const ConstRawData &data)=default
赋值运算符重载。 Overloaded assignment operator.
size_t size_
数据大小(字节)。 The size of the data (in bytes).
ConstRawData(const ConstRawData &data)=default
拷贝构造函数。 Copy constructor.
const void * addr_
数据存储地址(常量)。 The storage address of the data (constant).
ConstRawData(const DataType &data)
使用任意数据类型构造 ConstRawData,数据地址指向该对象,大小为该类型的字节大小。 Constructs ConstRawData using any data type,...
原始数据封装类。 A class for encapsulating raw data.
RawData & operator=(const RawData &data)=default
赋值运算符重载。 Overloaded assignment operator.
RawData()
默认构造函数,初始化为空数据。 Default constructor initializing to empty data.
Definition libxr_type.cpp:7
RawData(const std::string &data)
从 std::string 构造 RawData,数据地址指向字符串内容,大小为字符串长度。 Constructs RawData from std::string,...
size_t size_
数据大小(字节)。 The size of the data (in bytes).
void * addr_
数据存储地址。 The storage address of the data.
RawData(const DataType &data)
使用任意数据类型构造 RawData,数据地址指向该对象,大小为该类型的字节大小。 Constructs RawData using any data type, pointing to the obj...
RawData(const RawData &data)=default
拷贝构造函数。 Copy constructor.
RawData(const char(&data)[N])
从字符数组构造 RawData,数据大小为数组长度减 1(不含 \0)。 Constructs RawData from a character array, with size set to arra...
类型标识符生成器,替代 typeid
static ID GetID()
获取类型的唯一标识符
LibXR 命名空间
Definition ch32_gpio.hpp:9