IntrusiveList: Make Iterator::operator* return a T&

This makes iteration a little more pleasant :^)
This commit is contained in:
Andreas Kling 2019-08-17 11:25:32 +02:00
parent 6b81d8de70
commit e3f3c980bf
Notes: sideshowbarker 2024-07-19 12:39:46 +09:00
2 changed files with 7 additions and 7 deletions

View file

@ -32,7 +32,7 @@ public:
Iterator();
Iterator(T* value);
T* operator*() const;
T& operator*() const;
T* operator->() const;
bool operator==(const Iterator& other) const;
bool operator!=(const Iterator& other) const { return !(*this == other); }
@ -78,9 +78,9 @@ inline IntrusiveList<T, member>::Iterator::Iterator(T* value)
}
template<class T, IntrusiveListNode T::*member>
inline T* IntrusiveList<T, member>::Iterator::operator*() const
inline T& IntrusiveList<T, member>::Iterator::operator*() const
{
return m_value;
return *m_value;
}
template<class T, IntrusiveListNode T::*member>

View file

@ -405,9 +405,9 @@ inline IterationDecision Scheduler::for_each_runnable(Callback callback)
ASSERT_INTERRUPTS_DISABLED();
auto& tl = g_scheduler_data->m_runnable_threads;
for (auto it = tl.begin(); it != tl.end();) {
auto thread = *it;
auto& thread = *it;
it = ++it;
if (callback(*thread) == IterationDecision::Break)
if (callback(thread) == IterationDecision::Break)
return IterationDecision::Break;
}
@ -420,9 +420,9 @@ inline IterationDecision Scheduler::for_each_nonrunnable(Callback callback)
ASSERT_INTERRUPTS_DISABLED();
auto& tl = g_scheduler_data->m_nonrunnable_threads;
for (auto it = tl.begin(); it != tl.end();) {
auto thread = *it;
auto& thread = *it;
it = ++it;
if (callback(*thread) == IterationDecision::Break)
if (callback(thread) == IterationDecision::Break)
return IterationDecision::Break;
}