5#include "libxr_assert.hpp"
6#include "libxr_def.hpp"
58 template <
typename Data>
82 template <
typename...
Args>
109 operator Data&()
noexcept {
return data_; }
129 pos->next_ =
nullptr;
186 if (
pos->next_ == &data)
188 pos->next_ = data.next_;
189 data.next_ =
nullptr;
191 return ErrorCode::OK;
195 return ErrorCode::NOT_FOUND;
213 template <
typename Data,
typename Func, SizeLimitMode LimitMode = SizeLimitMode::MORE>
219 Assert::SizeLimitCheck<LimitMode>(
sizeof(
Data),
pos->size_);
227 return ErrorCode::OK;
247 template <
typename Data,
typename Func, SizeLimitMode LimitMode = SizeLimitMode::MORE>
252 return ErrorCode::BUSY;
257 Assert::SizeLimitCheck<LimitMode>(
sizeof(
Data),
pos->size_);
265 return ErrorCode::OK;
链表基础节点,所有节点都继承自该类。 Base node for the linked list, serving as a parent for all nodes.
BaseNode * next_
指向下一个节点的指针。 Pointer to the next node.
~BaseNode()
析构函数,确保节点不会在列表中残留。 Destructor ensuring the node does not remain in the list.
size_t size_
当前节点的数据大小(字节)。 Size of the current node (in bytes).
BaseNode(size_t size)
构造 BaseNode 并设置节点大小。 Constructs a BaseNode and sets its size.
数据节点模板,继承自 BaseNode,用于存储具体数据类型。 Template data node that inherits from BaseNode to store specific data...
Data * operator->() noexcept
操作符重载,提供数据访问接口。 Operator overloads providing access to the data.
Node & operator=(const Data &data)
赋值运算符重载,允许直接对节点赋值。 Overloaded assignment operator for assigning values to the node.
Data data_
存储的数据。 The stored data.
Node()
默认构造函数,初始化节点大小。 Default constructor initializing the node size.
Node(const Data &data)
使用数据值构造 Node 节点。 Constructs a Node with the given data value.
Node(Args... args)
通过参数列表构造节点 (Constructor initializing a node using arguments list).
链表实现,用于存储和管理数据节点。 A linked list implementation for storing and managing data nodes.
uint32_t Size() noexcept
获取链表中的节点数量。 Gets the number of nodes in the linked list.
~List()
析构函数,释放所有节点。 Destructor releasing all nodes.
LibXR::Mutex mutex_
线程安全的互斥锁。 Thread-safe mutex.
void Add(BaseNode &data)
向链表添加一个节点。 Adds a node to the linked list.
ErrorCode ForeachFromCallback(Func func, bool in_isr)
在回调环境中遍历链表节点,并应用回调函数。 Iterates over each node in a callback environment and applies a function.
List() noexcept
默认构造函数,初始化链表头节点。 Default constructor initializing the linked list head node.
ErrorCode Delete(BaseNode &data) noexcept
从链表中删除指定的节点。 Deletes a specified node from the linked list.
ErrorCode Foreach(Func func)
遍历链表中的每个节点,并应用回调函数。 Iterates over each node in the list and applies a callback function.
BaseNode head_
链表头节点。 The head node of the list.
互斥锁类,提供线程同步机制 (Mutex class providing thread synchronization mechanisms).
ErrorCode TryLockInCallback(bool in_isr)
在回调(ISR)中尝试加锁 (Attempt to lock the mutex inside an interrupt service routine (ISR)).
ErrorCode Lock()
加锁,如果锁已被占用,则阻塞等待 (Lock the mutex, blocking if it is already locked).
void UnlockFromCallback(bool in_isr)
在回调(ISR)中解锁 (Unlock the mutex inside an interrupt service routine (ISR)).
void Unlock()
解锁互斥锁 (Unlock the mutex).
LibXR Color Control Library / LibXR终端颜色控制库
constexpr auto min(T1 a, T2 b) -> typename std::common_type< T1, T2 >::type
计算两个数的最小值