|
|
@ -15,19 +15,20 @@ class KernelCore; |
|
|
|
|
|
|
|
|
class KLinkedListNode : public boost::intrusive::list_base_hook<>, |
|
|
class KLinkedListNode : public boost::intrusive::list_base_hook<>, |
|
|
public KSlabAllocated<KLinkedListNode> { |
|
|
public KSlabAllocated<KLinkedListNode> { |
|
|
private: |
|
|
|
|
|
void* m_item; |
|
|
|
|
|
|
|
|
|
|
|
public: |
|
|
public: |
|
|
KLinkedListNode() : m_item(nullptr) {} |
|
|
|
|
|
|
|
|
KLinkedListNode() = default; |
|
|
|
|
|
|
|
|
constexpr void Initialize(void* it) { |
|
|
|
|
|
|
|
|
void Initialize(void* it) { |
|
|
m_item = it; |
|
|
m_item = it; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
constexpr void* GetItem() const { |
|
|
|
|
|
|
|
|
void* GetItem() const { |
|
|
return m_item; |
|
|
return m_item; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private: |
|
|
|
|
|
void* m_item = nullptr; |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
template <typename T> |
|
|
template <typename T> |
|
|
@ -61,13 +62,9 @@ public: |
|
|
using iterator_category = std::bidirectional_iterator_tag; |
|
|
using iterator_category = std::bidirectional_iterator_tag; |
|
|
using value_type = typename KLinkedList::value_type; |
|
|
using value_type = typename KLinkedList::value_type; |
|
|
using difference_type = typename KLinkedList::difference_type; |
|
|
using difference_type = typename KLinkedList::difference_type; |
|
|
using pointer = typename std::conditional<Const, KLinkedList::const_pointer, |
|
|
|
|
|
KLinkedList::pointer>::type; |
|
|
|
|
|
using reference = typename std::conditional<Const, KLinkedList::const_reference, |
|
|
|
|
|
KLinkedList::reference>::type; |
|
|
|
|
|
|
|
|
|
|
|
private: |
|
|
|
|
|
BaseIterator m_base_it; |
|
|
|
|
|
|
|
|
using pointer = std::conditional_t<Const, KLinkedList::const_pointer, KLinkedList::pointer>; |
|
|
|
|
|
using reference = |
|
|
|
|
|
std::conditional_t<Const, KLinkedList::const_reference, KLinkedList::reference>; |
|
|
|
|
|
|
|
|
public: |
|
|
public: |
|
|
explicit Iterator(BaseIterator it) : m_base_it(it) {} |
|
|
explicit Iterator(BaseIterator it) : m_base_it(it) {} |
|
|
@ -117,6 +114,9 @@ public: |
|
|
operator Iterator<true>() const { |
|
|
operator Iterator<true>() const { |
|
|
return Iterator<true>(m_base_it); |
|
|
return Iterator<true>(m_base_it); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private: |
|
|
|
|
|
BaseIterator m_base_it; |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
public: |
|
|
public: |
|
|
|