111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* 211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * 311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * 411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Copyright (c) 1994 511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Hewlett-Packard Company 611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * 711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Copyright (c) 1996,1997 811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Silicon Graphics Computer Systems, Inc. 911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * 1011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Copyright (c) 1997 1111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Moscow Center for SPARC Technology 1211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * 1311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Copyright (c) 1999 1411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Boris Fomitchev 1511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * 1611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * This material is provided "as is", with absolutely no warranty expressed 1711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * or implied. Any use is at your own risk. 1811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * 1911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Permission to use or copy this software for any purpose is hereby granted 2011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * without fee, provided the above notices are retained on all copies. 2111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Permission to modify the code and to distribute modified code is granted, 2211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * provided the above notices are retained, and a notice that the code was 2311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * modified is included with the above copyright notice. 2411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * 2511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */ 2611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef _STLP_SLIST_BASE_C 2711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define _STLP_SLIST_BASE_C 2811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 2911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef _STLP_INTERNAL_SLIST_BASE_H 3011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# include <stl/_slist_base.h> 3111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif 3211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 3311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert_STLP_BEGIN_NAMESPACE 3411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 3511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert_STLP_MOVE_TO_PRIV_NAMESPACE 3611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 3711cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttemplate <class _Dummy> 3811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert_Slist_node_base* _STLP_CALL 3911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert_Sl_global<_Dummy>::__previous(_Slist_node_base* __head, 4011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert const _Slist_node_base* __node) { 4111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert while (__head && __head->_M_next != __node) 4211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __head = __head->_M_next; 4311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert return __head; 4411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} 4511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 4611cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttemplate <class _Dummy> 4711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertvoid _STLP_CALL 4811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert_Sl_global<_Dummy>::__splice_after(_Slist_node_base* __pos, _Slist_node_base* __head) { 4911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert _Slist_node_base* __before_last = __previous(__head, 0); 5011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert if (__before_last != __head) { 5111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert _Slist_node_base* __after = __pos->_M_next; 5211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __pos->_M_next = __head->_M_next; 5311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __head->_M_next = 0; 5411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __before_last->_M_next = __after; 5511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert } 5611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} 5711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 5811cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttemplate <class _Dummy> 5911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertvoid _STLP_CALL 6011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert_Sl_global<_Dummy>::__splice_after(_Slist_node_base* __pos, 6111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert _Slist_node_base* __before_first, 6211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert _Slist_node_base* __before_last) { 6311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert if (__pos != __before_first && __pos != __before_last) { 6411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert _Slist_node_base* __first = __before_first->_M_next; 6511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert _Slist_node_base* __after = __pos->_M_next; 6611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __before_first->_M_next = __before_last->_M_next; 6711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __pos->_M_next = __first; 6811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __before_last->_M_next = __after; 6911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert } 7011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} 7111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 7211cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttemplate <class _Dummy> 7311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert_Slist_node_base* _STLP_CALL 7411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert_Sl_global<_Dummy>::__reverse(_Slist_node_base* __node) { 7511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert _Slist_node_base* __result = __node; 7611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __node = __node->_M_next; 7711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __result->_M_next = 0; 7811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert while(__node) { 7911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert _Slist_node_base* __next = __node->_M_next; 8011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __node->_M_next = __result; 8111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __result = __node; 8211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __node = __next; 8311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert } 8411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert return __result; 8511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} 8611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 8711cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttemplate <class _Dummy> 8811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertsize_t _STLP_CALL 8911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert_Sl_global<_Dummy>::size(_Slist_node_base* __node) { 9011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert size_t __result = 0; 9111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert for ( ; __node != 0; __node = __node->_M_next) 9211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ++__result; 9311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert return __result; 9411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} 9511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 9611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert_STLP_MOVE_TO_STD_NAMESPACE 9711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 9811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert_STLP_END_NAMESPACE 9911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 10011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif /* _STLP_SLIST_BASE_C */ 10111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 10211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// Local Variables: 10311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// mode:C++ 10411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// End: 105