/home/ntakagi/work/STLport-5.1.5/stlport/stl/_slist_base.cGo to the documentation of this file.00001 /* 00002 * 00003 * 00004 * Copyright (c) 1994 00005 * Hewlett-Packard Company 00006 * 00007 * Copyright (c) 1996,1997 00008 * Silicon Graphics Computer Systems, Inc. 00009 * 00010 * Copyright (c) 1997 00011 * Moscow Center for SPARC Technology 00012 * 00013 * Copyright (c) 1999 00014 * Boris Fomitchev 00015 * 00016 * This material is provided "as is", with absolutely no warranty expressed 00017 * or implied. Any use is at your own risk. 00018 * 00019 * Permission to use or copy this software for any purpose is hereby granted 00020 * without fee, provided the above notices are retained on all copies. 00021 * Permission to modify the code and to distribute modified code is granted, 00022 * provided the above notices are retained, and a notice that the code was 00023 * modified is included with the above copyright notice. 00024 * 00025 */ 00026 #ifndef _STLP_SLIST_BASE_C 00027 #define _STLP_SLIST_BASE_C 00028 00029 #ifndef _STLP_INTERNAL_SLIST_BASE_H 00030 # include <stl/_slist_base.h> 00031 #endif 00032 00033 _STLP_BEGIN_NAMESPACE 00034 00035 _STLP_MOVE_TO_PRIV_NAMESPACE 00036 00037 template <class _Dummy> 00038 _Slist_node_base* _STLP_CALL 00039 _Sl_global<_Dummy>::__previous(_Slist_node_base* __head, 00040 const _Slist_node_base* __node) { 00041 while (__head && __head->_M_next != __node) 00042 __head = __head->_M_next; 00043 return __head; 00044 } 00045 00046 template <class _Dummy> 00047 void _STLP_CALL 00048 _Sl_global<_Dummy>::__splice_after(_Slist_node_base* __pos, _Slist_node_base* __head) { 00049 _Slist_node_base* __before_last = __previous(__head, 0); 00050 if (__before_last != __head) { 00051 _Slist_node_base* __after = __pos->_M_next; 00052 __pos->_M_next = __head->_M_next; 00053 __head->_M_next = 0; 00054 __before_last->_M_next = __after; 00055 } 00056 } 00057 00058 template <class _Dummy> 00059 void _STLP_CALL 00060 _Sl_global<_Dummy>::__splice_after(_Slist_node_base* __pos, 00061 _Slist_node_base* __before_first, 00062 _Slist_node_base* __before_last) { 00063 if (__pos != __before_first && __pos != __before_last) { 00064 _Slist_node_base* __first = __before_first->_M_next; 00065 _Slist_node_base* __after = __pos->_M_next; 00066 __before_first->_M_next = __before_last->_M_next; 00067 __pos->_M_next = __first; 00068 __before_last->_M_next = __after; 00069 } 00070 } 00071 00072 template <class _Dummy> 00073 _Slist_node_base* _STLP_CALL 00074 _Sl_global<_Dummy>::__reverse(_Slist_node_base* __node) { 00075 _Slist_node_base* __result = __node; 00076 __node = __node->_M_next; 00077 __result->_M_next = 0; 00078 while(__node) { 00079 _Slist_node_base* __next = __node->_M_next; 00080 __node->_M_next = __result; 00081 __result = __node; 00082 __node = __next; 00083 } 00084 return __result; 00085 } 00086 00087 template <class _Dummy> 00088 size_t _STLP_CALL 00089 _Sl_global<_Dummy>::size(_Slist_node_base* __node) { 00090 size_t __result = 0; 00091 for ( ; __node != 0; __node = __node->_M_next) 00092 ++__result; 00093 return __result; 00094 } 00095 00096 _STLP_MOVE_TO_STD_NAMESPACE 00097 00098 _STLP_END_NAMESPACE 00099 00100 #endif /* _STLP_SLIST_BASE_C */ 00101 00102 // Local Variables: 00103 // mode:C++ 00104 // End:
Generated on Mon Mar 10 15:32:36 2008 by ![]() |