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) : addr_(addr), size_(size) {}
33
39
50 template <typename DataType>
51 RawData(const DataType &data)
53 {
54 }
55
63 RawData(const RawData &data) = default;
64
73 RawData(char *data) : addr_(data), size_(data ? strlen(data) : 0) {}
74
85 template <size_t N>
86 RawData(const char (&data)[N]) : addr_(&data), size_(N - 1)
87 {
88 }
89
98 RawData(const std::string &data)
99 : addr_(const_cast<char *>(data.data())), size_(data.size())
100 {
101 }
102
112 RawData &operator=(const RawData &data) = default;
113
114 void *addr_;
115 size_t size_;
116};
117
128{
129 public:
139 ConstRawData(const void *addr, size_t size) : addr_(addr), size_(size) {}
140
146
158 template <typename DataType>
161 {
162 }
163
171 ConstRawData(const ConstRawData &data) = default;
172
181 ConstRawData(const RawData &data) : addr_(data.addr_), size_(data.size_) {}
182
191 ConstRawData(char *data) : addr_(data), size_(data ? strlen(data) : 0) {}
192
200 ConstRawData(const char *data) : addr_(data), size_(data ? strlen(data) : 0) {}
201
211 ConstRawData &operator=(const ConstRawData &data) = default;
212
213 const void
215 size_t size_;
216};
217
218} // namespace LibXR
219
225{
226 public:
227 using ID = const void *;
234 template <typename T>
235 static ID GetID()
236 {
237 static char id; // NOLINT
238 return &id;
239 }
240};
常量原始数据封装类。 A class for encapsulating constant raw data.
ConstRawData(const RawData &data)
从 RawData 构造 ConstRawData,数据地址和大小保持不变。 Constructs ConstRawData from RawData, keeping the same data ad...
ConstRawData()
默认构造函数,初始化为空数据。 Default constructor initializing to empty data.
ConstRawData(char *data)
从 char * 指针构造 ConstRawData,数据大小为字符串长度(不含 \0)。 Constructs ConstRawData from a char * pointer,...
ConstRawData & operator=(const ConstRawData &data)=default
赋值运算符重载。 Overloaded assignment operator.
ConstRawData(const char *data)
从 char * 指针构造 ConstRawData(常量版本)。 Constructs ConstRawData from a const char * pointer.
ConstRawData(const void *addr, size_t size)
使用指定地址和大小构造 ConstRawData 对象。 Constructs a ConstRawData object with the specified address and size.
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(void *addr, size_t size)
使用指定地址和大小构造 RawData 对象。 Constructs a RawData object with the specified address and size.
RawData()
默认构造函数,初始化为空数据。 Default constructor initializing to empty data.
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(char *data)
从 char * 指针构造 RawData,数据大小为字符串长度(不含 \0)。 Constructs RawData from a char * pointer,...
RawData(const char(&data)[N])
从字符数组构造 RawData,数据大小为数组长度减 1(不含 \0)。 Constructs RawData from a character array, with size set to arra...
类型标识符生成器,替代 typeid
static ID GetID()
获取类型的唯一标识符
LibXR Color Control Library / LibXR终端颜色控制库
constexpr auto min(T1 a, T2 b) -> typename std::common_type< T1, T2 >::type
计算两个数的最小值