| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2005, 2006, 2007, 2008, 2011, 2012 Apple Inc. All rights reserv
ed. | 2 * Copyright (C) 2005, 2006, 2007, 2008, 2011, 2012 Apple Inc. All rights reserv
ed. |
| 3 * Copyright (C) 2011, Benjamin Poulain <ikipou@gmail.com> | 3 * Copyright (C) 2011, Benjamin Poulain <ikipou@gmail.com> |
| 4 * | 4 * |
| 5 * This library is free software; you can redistribute it and/or | 5 * This library is free software; you can redistribute it and/or |
| 6 * modify it under the terms of the GNU Library General Public | 6 * modify it under the terms of the GNU Library General Public |
| 7 * License as published by the Free Software Foundation; either | 7 * License as published by the Free Software Foundation; either |
| 8 * version 2 of the License, or (at your option) any later version. | 8 * version 2 of the License, or (at your option) any later version. |
| 9 * | 9 * |
| 10 * This library is distributed in the hope that it will be useful, | 10 * This library is distributed in the hope that it will be useful, |
| (...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 149 // Add the value to the beginning of the collection. If the value was al
ready in | 149 // Add the value to the beginning of the collection. If the value was al
ready in |
| 150 // the list, it is moved to the beginning. | 150 // the list, it is moved to the beginning. |
| 151 AddResult prependOrMoveToFirst(ValuePeekInType); | 151 AddResult prependOrMoveToFirst(ValuePeekInType); |
| 152 | 152 |
| 153 AddResult insertBefore(ValuePeekInType beforeValue, ValuePeekInType newV
alue); | 153 AddResult insertBefore(ValuePeekInType beforeValue, ValuePeekInType newV
alue); |
| 154 AddResult insertBefore(iterator, ValuePeekInType); | 154 AddResult insertBefore(iterator, ValuePeekInType); |
| 155 | 155 |
| 156 void remove(ValuePeekInType); | 156 void remove(ValuePeekInType); |
| 157 void remove(iterator); | 157 void remove(iterator); |
| 158 void clear(); | 158 void clear(); |
| 159 template<typename Collection> |
| 160 void removeAll(const Collection& other); |
| 159 | 161 |
| 160 private: | 162 private: |
| 161 void unlink(Node*); | 163 void unlink(Node*); |
| 162 void unlinkAndDelete(Node*); | 164 void unlinkAndDelete(Node*); |
| 163 void appendNode(Node*); | 165 void appendNode(Node*); |
| 164 void prependNode(Node*); | 166 void prependNode(Node*); |
| 165 void insertNodeBefore(Node* beforeNode, Node* newNode); | 167 void insertNodeBefore(Node* beforeNode, Node* newNode); |
| 166 void deleteAllNodes(); | 168 void deleteAllNodes(); |
| 167 void createAllocatorIfNeeded(); | 169 void createAllocatorIfNeeded(); |
| 168 | 170 |
| (...skipping 662 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 831 template<typename T, size_t inlineCapacity, typename U> | 833 template<typename T, size_t inlineCapacity, typename U> |
| 832 inline void ListHashSet<T, inlineCapacity, U>::clear() | 834 inline void ListHashSet<T, inlineCapacity, U>::clear() |
| 833 { | 835 { |
| 834 deleteAllNodes(); | 836 deleteAllNodes(); |
| 835 m_impl.clear(); | 837 m_impl.clear(); |
| 836 m_head = 0; | 838 m_head = 0; |
| 837 m_tail = 0; | 839 m_tail = 0; |
| 838 } | 840 } |
| 839 | 841 |
| 840 template<typename T, size_t inlineCapacity, typename U> | 842 template<typename T, size_t inlineCapacity, typename U> |
| 843 template<typename Collection> |
| 844 inline void ListHashSet<T, inlineCapacity, U>::removeAll(const Collection& o
ther) |
| 845 { |
| 846 if (other.isEmpty() || isEmpty()) |
| 847 return; |
| 848 typedef typename Collection::const_iterator CollectionIterator; |
| 849 CollectionIterator otherEnd(other.end()); |
| 850 for (CollectionIterator it(other.begin()); it != otherEnd; ++it) |
| 851 remove(*it); |
| 852 } |
| 853 |
| 854 template<typename T, size_t inlineCapacity, typename U> |
| 841 void ListHashSet<T, inlineCapacity, U>::unlink(Node* node) | 855 void ListHashSet<T, inlineCapacity, U>::unlink(Node* node) |
| 842 { | 856 { |
| 843 if (!node->m_prev) { | 857 if (!node->m_prev) { |
| 844 ASSERT(node == m_head); | 858 ASSERT(node == m_head); |
| 845 m_head = node->m_next; | 859 m_head = node->m_next; |
| 846 } else { | 860 } else { |
| 847 ASSERT(node != m_head); | 861 ASSERT(node != m_head); |
| 848 node->m_prev->m_next = node->m_next; | 862 node->m_prev->m_next = node->m_next; |
| 849 } | 863 } |
| 850 | 864 |
| (...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 968 inline void deleteAllValues(const ListHashSet<T, inlineCapacity, U>& collect
ion) | 982 inline void deleteAllValues(const ListHashSet<T, inlineCapacity, U>& collect
ion) |
| 969 { | 983 { |
| 970 deleteAllValues<true, typename ListHashSet<T, inlineCapacity, U>::ValueT
ype>(collection.m_impl); | 984 deleteAllValues<true, typename ListHashSet<T, inlineCapacity, U>::ValueT
ype>(collection.m_impl); |
| 971 } | 985 } |
| 972 | 986 |
| 973 } // namespace WTF | 987 } // namespace WTF |
| 974 | 988 |
| 975 using WTF::ListHashSet; | 989 using WTF::ListHashSet; |
| 976 | 990 |
| 977 #endif /* WTF_ListHashSet_h */ | 991 #endif /* WTF_ListHashSet_h */ |
| OLD | NEW |