@@ -24,9 +24,9 @@ class IntrusiveListNode;
2424
2525struct ExtractIntrusiveListTypes {
2626 template <typename V, typename Container, typename T>
27- static V value (IntrusiveListNode<V, Container> T::*x);
27+ static V value (IntrusiveListNode<V, Container> T::* x);
2828 template <typename V, typename Container, typename T>
29- static Container container (IntrusiveListNode<V, Container> T::*x);
29+ static Container container (IntrusiveListNode<V, Container> T::* x);
3030};
3131
3232template <typename T, typename Container = RawPtr<T>>
@@ -37,14 +37,14 @@ class IntrusiveListStorage {
3737private:
3838 friend class IntrusiveListNode <T, Container>;
3939
40- template <class T_ , typename Container_, SubstitutedIntrusiveListNode<T_, Container_> T_::*member>
40+ template <class T_ , typename Container_, SubstitutedIntrusiveListNode<T_, Container_> T_::* member>
4141 friend class IntrusiveList ;
4242
4343 SubstitutedIntrusiveListNode<T, Container>* m_first { nullptr };
4444 SubstitutedIntrusiveListNode<T, Container>* m_last { nullptr };
4545};
4646
47- template <class T , typename Container, SubstitutedIntrusiveListNode<T, Container> T::*member>
47+ template <class T , typename Container, SubstitutedIntrusiveListNode<T, Container> T::* member>
4848class IntrusiveList {
4949 AK_MAKE_NONCOPYABLE (IntrusiveList);
5050 AK_MAKE_NONMOVABLE (IntrusiveList);
@@ -166,7 +166,7 @@ class IntrusiveListNode {
166166 // to be of equal types. so for now, just make the members public on clang.
167167#if !defined(AK_COMPILER_CLANG)
168168private:
169- template <class T_ , typename Container_, SubstitutedIntrusiveListNode<T_, Container_> T_::*member>
169+ template <class T_ , typename Container_, SubstitutedIntrusiveListNode<T_, Container_> T_::* member>
170170 friend class ::AK::Detail::IntrusiveList;
171171#endif
172172
@@ -176,7 +176,7 @@ class IntrusiveListNode {
176176 [[no_unique_address]] SelfReferenceIfNeeded<Container, IsRaw> m_self;
177177};
178178
179- template <class T , typename Container, SubstitutedIntrusiveListNode<T, Container> T::*member>
179+ template <class T , typename Container, SubstitutedIntrusiveListNode<T, Container> T::* member>
180180inline typename IntrusiveList<T, Container, member>::Iterator& IntrusiveList<T, Container, member>::Iterator::erase()
181181{
182182 auto old = m_value;
@@ -185,26 +185,26 @@ inline typename IntrusiveList<T, Container, member>::Iterator& IntrusiveList<T,
185185 return *this ;
186186}
187187
188- template <class T , typename Container, SubstitutedIntrusiveListNode<T, Container> T::*member>
188+ template <class T , typename Container, SubstitutedIntrusiveListNode<T, Container> T::* member>
189189inline IntrusiveList<T, Container, member>::~IntrusiveList ()
190190{
191191 clear ();
192192}
193193
194- template <class T , typename Container, SubstitutedIntrusiveListNode<T, Container> T::*member>
194+ template <class T , typename Container, SubstitutedIntrusiveListNode<T, Container> T::* member>
195195inline void IntrusiveList<T, Container, member>::clear()
196196{
197197 while (m_storage.m_first )
198198 m_storage.m_first ->remove ();
199199}
200200
201- template <class T , typename Container, SubstitutedIntrusiveListNode<T, Container> T::*member>
201+ template <class T , typename Container, SubstitutedIntrusiveListNode<T, Container> T::* member>
202202inline bool IntrusiveList<T, Container, member>::is_empty() const
203203{
204204 return m_storage.m_first == nullptr ;
205205}
206206
207- template <class T , typename Container, SubstitutedIntrusiveListNode<T, Container> T::*member>
207+ template <class T , typename Container, SubstitutedIntrusiveListNode<T, Container> T::* member>
208208inline size_t IntrusiveList<T, Container, member>::size_slow() const
209209{
210210 size_t size = 0 ;
@@ -215,7 +215,7 @@ inline size_t IntrusiveList<T, Container, member>::size_slow() const
215215 return size;
216216}
217217
218- template <class T , typename Container, SubstitutedIntrusiveListNode<T, Container> T::*member>
218+ template <class T , typename Container, SubstitutedIntrusiveListNode<T, Container> T::* member>
219219inline void IntrusiveList<T, Container, member>::append(T& n)
220220{
221221 remove (n);
@@ -234,7 +234,7 @@ inline void IntrusiveList<T, Container, member>::append(T& n)
234234 m_storage.m_first = &nnode;
235235}
236236
237- template <class T , typename Container, SubstitutedIntrusiveListNode<T, Container> T::*member>
237+ template <class T , typename Container, SubstitutedIntrusiveListNode<T, Container> T::* member>
238238inline void IntrusiveList<T, Container, member>::prepend(T& n)
239239{
240240 remove (n);
@@ -253,7 +253,7 @@ inline void IntrusiveList<T, Container, member>::prepend(T& n)
253253 m_storage.m_last = &nnode;
254254}
255255
256- template <class T , typename Container, SubstitutedIntrusiveListNode<T, Container> T::*member>
256+ template <class T , typename Container, SubstitutedIntrusiveListNode<T, Container> T::* member>
257257inline void IntrusiveList<T, Container, member>::insert_before(T& bn, T& n)
258258{
259259 remove (n);
@@ -275,28 +275,28 @@ inline void IntrusiveList<T, Container, member>::insert_before(T& bn, T& n)
275275 new_node.m_self .reference = &n;
276276}
277277
278- template <class T , typename Container, SubstitutedIntrusiveListNode<T, Container> T::*member>
278+ template <class T , typename Container, SubstitutedIntrusiveListNode<T, Container> T::* member>
279279inline void IntrusiveList<T, Container, member>::remove(T& n)
280280{
281281 auto & nnode = n.*member;
282282 if (nnode.m_storage )
283283 nnode.remove ();
284284}
285285
286- template <class T , typename Container, SubstitutedIntrusiveListNode<T, Container> T::*member>
286+ template <class T , typename Container, SubstitutedIntrusiveListNode<T, Container> T::* member>
287287inline bool IntrusiveList<T, Container, member>::contains(T const & n) const
288288{
289289 auto & nnode = n.*member;
290290 return nnode.m_storage == &m_storage;
291291}
292292
293- template <class T , typename Container, SubstitutedIntrusiveListNode<T, Container> T::*member>
293+ template <class T , typename Container, SubstitutedIntrusiveListNode<T, Container> T::* member>
294294inline Container IntrusiveList<T, Container, member>::first() const
295295{
296296 return m_storage.m_first ? node_to_value (*m_storage.m_first ) : nullptr ;
297297}
298298
299- template <class T , typename Container, SubstitutedIntrusiveListNode<T, Container> T::*member>
299+ template <class T , typename Container, SubstitutedIntrusiveListNode<T, Container> T::* member>
300300inline Container IntrusiveList<T, Container, member>::take_first()
301301{
302302 if (Container ptr = first ()) {
@@ -306,7 +306,7 @@ inline Container IntrusiveList<T, Container, member>::take_first()
306306 return nullptr ;
307307}
308308
309- template <class T , typename Container, SubstitutedIntrusiveListNode<T, Container> T::*member>
309+ template <class T , typename Container, SubstitutedIntrusiveListNode<T, Container> T::* member>
310310inline Container IntrusiveList<T, Container, member>::take_last()
311311{
312312 if (Container ptr = last ()) {
@@ -316,63 +316,63 @@ inline Container IntrusiveList<T, Container, member>::take_last()
316316 return nullptr ;
317317}
318318
319- template <class T , typename Container, SubstitutedIntrusiveListNode<T, Container> T::*member>
319+ template <class T , typename Container, SubstitutedIntrusiveListNode<T, Container> T::* member>
320320inline Container IntrusiveList<T, Container, member>::last() const
321321{
322322 return m_storage.m_last ? node_to_value (*m_storage.m_last ) : nullptr ;
323323}
324324
325- template <class T , typename Container, SubstitutedIntrusiveListNode<T, Container> T::*member>
325+ template <class T , typename Container, SubstitutedIntrusiveListNode<T, Container> T::* member>
326326inline T const * IntrusiveList<T, Container, member>::next(T const * current)
327327{
328328 auto & nextnode = (current->*member).m_next ;
329329 T const * nextstruct = nextnode ? node_to_value (*nextnode) : nullptr ;
330330 return nextstruct;
331331}
332332
333- template <class T , typename Container, SubstitutedIntrusiveListNode<T, Container> T::*member>
333+ template <class T , typename Container, SubstitutedIntrusiveListNode<T, Container> T::* member>
334334inline T const * IntrusiveList<T, Container, member>::prev(T const * current)
335335{
336336 auto & prevnode = (current->*member).m_prev ;
337337 T const * prevstruct = prevnode ? node_to_value (*prevnode) : nullptr ;
338338 return prevstruct;
339339}
340340
341- template <class T , typename Container, SubstitutedIntrusiveListNode<T, Container> T::*member>
341+ template <class T , typename Container, SubstitutedIntrusiveListNode<T, Container> T::* member>
342342inline T* IntrusiveList<T, Container, member>::next(T* current)
343343{
344344 auto & nextnode = (current->*member).m_next ;
345345 T* nextstruct = nextnode ? node_to_value (*nextnode) : nullptr ;
346346 return nextstruct;
347347}
348348
349- template <class T , typename Container, SubstitutedIntrusiveListNode<T, Container> T::*member>
349+ template <class T , typename Container, SubstitutedIntrusiveListNode<T, Container> T::* member>
350350inline T* IntrusiveList<T, Container, member>::prev(T* current)
351351{
352352 auto & prevnode = (current->*member).m_prev ;
353353 T* prevstruct = prevnode ? node_to_value (*prevnode) : nullptr ;
354354 return prevstruct;
355355}
356356
357- template <class T , typename Container, SubstitutedIntrusiveListNode<T, Container> T::*member>
357+ template <class T , typename Container, SubstitutedIntrusiveListNode<T, Container> T::* member>
358358inline typename IntrusiveList<T, Container, member>::Iterator IntrusiveList<T, Container, member>::begin()
359359{
360360 return m_storage.m_first ? Iterator (node_to_value (*m_storage.m_first )) : Iterator ();
361361}
362362
363- template <class T , typename Container, SubstitutedIntrusiveListNode<T, Container> T::*member>
363+ template <class T , typename Container, SubstitutedIntrusiveListNode<T, Container> T::* member>
364364inline typename IntrusiveList<T, Container, member>::ReverseIterator IntrusiveList<T, Container, member>::rbegin()
365365{
366366 return m_storage.m_last ? ReverseIterator (node_to_value (*m_storage.m_last )) : ReverseIterator ();
367367}
368368
369- template <class T , typename Container, SubstitutedIntrusiveListNode<T, Container> T::*member>
369+ template <class T , typename Container, SubstitutedIntrusiveListNode<T, Container> T::* member>
370370inline typename IntrusiveList<T, Container, member>::ConstIterator IntrusiveList<T, Container, member>::begin() const
371371{
372372 return m_storage.m_first ? ConstIterator (node_to_value (*m_storage.m_first )) : ConstIterator ();
373373}
374374
375- template <class T , typename Container, SubstitutedIntrusiveListNode<T, Container> T::*member>
375+ template <class T , typename Container, SubstitutedIntrusiveListNode<T, Container> T::* member>
376376inline T* IntrusiveList<T, Container, member>::node_to_value(SubstitutedIntrusiveListNode<T, Container>& node)
377377{
378378 // Note: A data member pointer is a 32-bit offset in the Windows ABI (both x86 and x86_64),
@@ -426,7 +426,7 @@ inline bool IntrusiveListNode<T, Container>::is_in_list() const
426426// By default, intrusive lists cannot contain null entries anyway, so switch to RefPtr
427427// and just make the user-facing functions deref the pointers.
428428
429- template <class T , SubstitutedIntrusiveListNode<T, NonnullRefPtr<T>> T::*member>
429+ template <class T , SubstitutedIntrusiveListNode<T, NonnullRefPtr<T>> T::* member>
430430class IntrusiveList <T, NonnullRefPtr<T>, member> : public IntrusiveList<T, RefPtr<T>, member> {
431431public:
432432 [[nodiscard]] NonnullRefPtr<T> first () const { return *IntrusiveList<T, RefPtr<T>, member>::first (); }
@@ -441,7 +441,7 @@ class IntrusiveList<T, NonnullRefPtr<T>, member> : public IntrusiveList<T, RefPt
441441// By default, intrusive lists cannot contain null entries anyway, so switch to LockRefPtr
442442// and just make the user-facing functions deref the pointers.
443443
444- template <class T , SubstitutedIntrusiveListNode<T, NonnullLockRefPtr<T>> T::*member>
444+ template <class T , SubstitutedIntrusiveListNode<T, NonnullLockRefPtr<T>> T::* member>
445445class IntrusiveList <T, NonnullLockRefPtr<T>, member> : public IntrusiveList<T, LockRefPtr<T>, member> {
446446public:
447447 [[nodiscard]] NonnullLockRefPtr<T> first () const { return *IntrusiveList<T, LockRefPtr<T>, member>::first (); }
0 commit comments