5#include "libxr_assert.hpp"
6#include "libxr_def.hpp"
58 template <
typename Data>
82 template <
typename... Args>
83 explicit Node(Args&&... args)
109 Data& operator*() noexcept {
return data_; }
110 operator Data&()
noexcept {
return data_; }
129 auto tmp = pos->next_;
130 pos->next_ =
nullptr;
187 if (pos->next_ == &data)
189 pos->next_ = data.next_;
190 data.next_ =
nullptr;
192 return ErrorCode::OK;
196 return ErrorCode::NOT_FOUND;
214 template <
typename Data,
typename Func, SizeLimitMode LimitMode = SizeLimitMode::MORE>
221 if (
auto res = func(
static_cast<Node<Data>*
>(pos)->data_); res != ErrorCode::OK)
228 return ErrorCode::OK;
static void SizeLimitCheck(size_t limit, size_t size)
在非调试模式下的占位大小检查函数(无实际作用)。 Dummy size limit check for non-debug builds.
链表基础节点,所有节点都继承自该类。 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.
Node(Args &&... args)
通过参数列表构造节点 (Constructor initializing a node using arguments list).
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.
链表实现,用于存储和管理数据节点。 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.
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 Lock()
加锁,如果锁已被占用,则阻塞等待 (Lock the mutex, blocking if it is already locked).
void Unlock()
解锁互斥锁 (Unlock the mutex).