X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=libstdc%2B%2B-v3%2Finclude%2Fbits%2Flist.tcc;h=aaaa8c364bdffdcaedfa1bc109a2818fea1acb73;hb=ac4ededf628466d520f6b6edbf15f14d2c1fe776;hp=2b50518e44e4268f05ea7e3e21777cde722d6fff;hpb=c1f858a3d0ef5b4858405ec960bd83f03a05cd72;p=pf3gnuchains%2Fgcc-fork.git diff --git a/libstdc++-v3/include/bits/list.tcc b/libstdc++-v3/include/bits/list.tcc index 2b50518e44e..aaaa8c364bd 100644 --- a/libstdc++-v3/include/bits/list.tcc +++ b/libstdc++-v3/include/bits/list.tcc @@ -1,6 +1,6 @@ // List implementation (out of line) -*- C++ -*- -// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. +// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -61,7 +61,7 @@ #ifndef _LIST_TCC #define _LIST_TCC 1 -namespace __gnu_norm +namespace _GLIBCXX_STD { template void @@ -69,8 +69,8 @@ namespace __gnu_norm _M_clear() { typedef _List_node<_Tp> _Node; - _Node* __cur = static_cast<_Node*>(this->_M_node._M_next); - while (__cur != &this->_M_node) + _Node* __cur = static_cast<_Node*>(this->_M_impl._M_node._M_next); + while (__cur != &this->_M_impl._M_node) { _Node* __tmp = __cur; __cur = static_cast<_Node*>(__cur->_M_next); @@ -78,7 +78,7 @@ namespace __gnu_norm _M_put_node(__tmp); } } - + template typename list<_Tp,_Alloc>::iterator list<_Tp,_Alloc>:: @@ -88,7 +88,7 @@ namespace __gnu_norm __tmp->hook(__position._M_node); return __tmp; } - + template typename list<_Tp,_Alloc>::iterator list<_Tp,_Alloc>:: @@ -98,7 +98,7 @@ namespace __gnu_norm _M_erase(__position); return __ret; } - + template void list<_Tp,_Alloc>:: @@ -113,28 +113,28 @@ namespace __gnu_norm else // __i == end() insert(end(), __new_size - __len, __x); } - + template list<_Tp,_Alloc>& list<_Tp,_Alloc>:: operator=(const list& __x) { if (this != &__x) - { - iterator __first1 = begin(); - iterator __last1 = end(); - const_iterator __first2 = __x.begin(); - const_iterator __last2 = __x.end(); - while (__first1 != __last1 && __first2 != __last2) - *__first1++ = *__first2++; - if (__first2 == __last2) - erase(__first1, __last1); - else - insert(__last1, __first2, __last2); - } + { + iterator __first1 = begin(); + iterator __last1 = end(); + const_iterator __first2 = __x.begin(); + const_iterator __last2 = __x.end(); + while (__first1 != __last1 && __first2 != __last2) + *__first1++ = *__first2++; + if (__first2 == __last2) + erase(__first1, __last1); + else + insert(__last1, __first2, __last2); + } return *this; } - + template void list<_Tp,_Alloc>:: @@ -148,17 +148,17 @@ namespace __gnu_norm else erase(__i, end()); } - + template template void list<_Tp,_Alloc>:: - _M_assign_dispatch(_InputIterator __first2, _InputIterator __last2, + _M_assign_dispatch(_InputIterator __first2, _InputIterator __last2, __false_type) { iterator __first1 = begin(); iterator __last1 = end(); - for (; __first1 != __last1 && __first2 != __last2; + for (; __first1 != __last1 && __first2 != __last2; ++__first1, ++__first2) *__first1 = *__first2; if (__first2 == __last2) @@ -166,7 +166,7 @@ namespace __gnu_norm else insert(__last1, __first2, __last2); } - + template void list<_Tp,_Alloc>:: @@ -183,7 +183,7 @@ namespace __gnu_norm __first = __next; } } - + template void list<_Tp,_Alloc>:: @@ -191,7 +191,8 @@ namespace __gnu_norm { iterator __first = begin(); iterator __last = end(); - if (__first == __last) return; + if (__first == __last) + return; iterator __next = __first; while (++__next != __last) { @@ -202,7 +203,7 @@ namespace __gnu_norm __next = __first; } } - + template void list<_Tp,_Alloc>:: @@ -229,15 +230,15 @@ namespace __gnu_norm _M_transfer(__last1, __first2, __last2); } } - + template void list<_Tp,_Alloc>:: sort() { // Do nothing if the list has length 0 or 1. - if (this->_M_node._M_next != &this->_M_node - && this->_M_node._M_next->_M_next != &this->_M_node) + if (this->_M_impl._M_node._M_next != &this->_M_impl._M_node + && this->_M_impl._M_node._M_next->_M_next != &this->_M_impl._M_node) { list __carry; list __tmp[64]; @@ -245,26 +246,28 @@ namespace __gnu_norm list * __counter; do - { - __carry.splice(__carry.begin(), *this, begin()); + { + __carry.splice(__carry.begin(), *this, begin()); - for(__counter = &__tmp[0]; - (__counter != __fill) && !__counter->empty(); - ++__counter) - { - __counter->merge(__carry); - __carry.swap(*__counter); - } - __carry.swap(*__counter); - if (__counter == __fill) ++__fill; - } while ( !empty() ); + for(__counter = &__tmp[0]; + (__counter != __fill) && !__counter->empty(); + ++__counter) + { + __counter->merge(__carry); + __carry.swap(*__counter); + } + __carry.swap(*__counter); + if (__counter == __fill) + ++__fill; + } + while ( !empty() ); for (__counter = &__tmp[1]; __counter != __fill; ++__counter) __counter->merge( *(__counter-1) ); swap( *(__fill-1) ); } } - + template template void @@ -277,11 +280,12 @@ namespace __gnu_norm { iterator __next = __first; ++__next; - if (__pred(*__first)) _M_erase(__first); + if (__pred(*__first)) + _M_erase(__first); __first = __next; } } - + template template void @@ -301,7 +305,7 @@ namespace __gnu_norm __next = __first; } } - + template template void @@ -309,7 +313,7 @@ namespace __gnu_norm merge(list& __x, _StrictWeakOrdering __comp) { // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 300. list::merge() specification incomplete + // 300. list::merge() specification incomplete if (this != &__x) { iterator __first1 = begin(); @@ -329,43 +333,45 @@ namespace __gnu_norm _M_transfer(__last1, __first2, __last2); } } - + template template - void - list<_Tp,_Alloc>:: - sort(_StrictWeakOrdering __comp) - { - // Do nothing if the list has length 0 or 1. - if (this->_M_node._M_next != &this->_M_node && - this->_M_node._M_next->_M_next != &this->_M_node) + void + list<_Tp,_Alloc>:: + sort(_StrictWeakOrdering __comp) { - list __carry; - list __tmp[64]; - list * __fill = &__tmp[0]; - list * __counter; + // Do nothing if the list has length 0 or 1. + if (this->_M_impl._M_node._M_next != &this->_M_impl._M_node + && this->_M_impl._M_node._M_next->_M_next != &this->_M_impl._M_node) + { + list __carry; + list __tmp[64]; + list * __fill = &__tmp[0]; + list * __counter; - do - { - __carry.splice(__carry.begin(), *this, begin()); + do + { + __carry.splice(__carry.begin(), *this, begin()); - for(__counter = &__tmp[0]; - (__counter != __fill) && !__counter->empty(); - ++__counter) - { - __counter->merge(__carry, __comp); - __carry.swap(*__counter); - } - __carry.swap(*__counter); - if (__counter == __fill) ++__fill; - } while ( !empty() ); - - for (__counter = &__tmp[1]; __counter != __fill; ++__counter) - __counter->merge( *(__counter-1), __comp ); - swap( *(__fill-1) ); + for(__counter = &__tmp[0]; + (__counter != __fill) && !__counter->empty(); + ++__counter) + { + __counter->merge(__carry, __comp); + __carry.swap(*__counter); + } + __carry.swap(*__counter); + if (__counter == __fill) + ++__fill; + } + while ( !empty() ); + + for (__counter = &__tmp[1]; __counter != __fill; ++__counter) + __counter->merge( *(__counter-1), __comp ); + swap( *(__fill-1) ); + } } - } -} // namespace __gnu_norm +} // namespace std #endif /* _LIST_TCC */