Show
Ignore:
Timestamp:
12/23/07 14:12:23 (4 years ago)
Author:
rakshasa
Message:

* Refactoring utils::Directory.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/libtorrent/rak/algorithm.h

    r939 r1022  
    123123// Count the number of elements from the start of the containers to 
    124124// the first inequal element. 
    125 template <typename _InputIter> 
    126 typename std::iterator_traits<_InputIter>::difference_type 
    127 count_base(_InputIter __first1, _InputIter __last1, 
    128            _InputIter __first2, _InputIter __last2) { 
     125template <typename _InputIter1, typename _InputIter2> 
     126typename std::iterator_traits<_InputIter1>::difference_type 
     127count_base(_InputIter1 __first1, _InputIter1 __last1, 
     128           _InputIter2 __first2, _InputIter2 __last2) { 
    129129 
    130   typename std::iterator_traits<_InputIter>::difference_type __n = 0; 
     130  typename std::iterator_traits<_InputIter1>::difference_type __n = 0; 
    131131 
    132132  for ( ;__first1 != __last1 && __first2 != __last2; ++__first1, ++__first2, ++__n) 
     
    137137} 
    138138 
    139 template <typename _InputIter> 
    140 typename std::iterator_traits<_InputIter>::value_type 
    141 make_base(_InputIter __first, _InputIter __last) { 
     139template <typename _Return, typename _InputIter, typename _Ftor> 
     140_Return 
     141make_base(_InputIter __first, _InputIter __last, _Ftor __ftor) { 
    142142  if (__first == __last) 
    143143    return ""; 
    144144 
    145   typename std::iterator_traits<_InputIter>::value_type __base = *__first++; 
     145  _Return __base = __ftor(*__first++); 
    146146 
    147147  for ( ;__first != __last; ++__first) { 
    148148    typename std::iterator_traits<_InputIter>::difference_type __pos = count_base(__base.begin(), __base.end(), 
    149                                                                                   __first->begin(), __first->end()); 
     149                                                                                  __ftor(*__first).begin(), __ftor(*__first).end()); 
    150150 
    151151    if (__pos < (typename std::iterator_traits<_InputIter>::difference_type)__base.size()) 
     
    156156} 
    157157 
    158  
    159  
    160158} 
    161159