Hi
Trivial patch to cleanup parallel/algo.h by generalizing usage of
std::__iterator_category.
* include/parallel/algo.h: Generalize usage of
std::__iterator_category.
Adjust whitespaces.
Tested under Linux x86_64 parallel mode.
François
Index: include/parallel/algo.h
===
--- include/parallel/algo.h (revision 240461)
+++ include/parallel/algo.h (working copy)
@@ -65,70 +65,66 @@
// Sequential fallback
template
inline _Function
-for_each(_IIter __begin, _IIter __end, _Function __f,
- __gnu_parallel::sequential_tag)
+for_each(_IIter __begin, _IIter __end, _Function __f,
+ __gnu_parallel::sequential_tag)
{ return _GLIBCXX_STD_A::for_each(__begin, __end, __f); }
-
// Sequential fallback for input iterator case
template
inline _Function
-__for_each_switch(_IIter __begin, _IIter __end, _Function __f,
-_IteratorTag)
+__for_each_switch(_IIter __begin, _IIter __end, _Function __f,
+ _IteratorTag)
{ return for_each(__begin, __end, __f, __gnu_parallel::sequential_tag()); }
// Parallel algorithm for random access iterators
template
_Function
-__for_each_switch(_RAIter __begin, _RAIter __end,
-_Function __f, random_access_iterator_tag,
-__gnu_parallel::_Parallelism __parallelism_tag)
+__for_each_switch(_RAIter __begin, _RAIter __end,
+ _Function __f, random_access_iterator_tag,
+ __gnu_parallel::_Parallelism __parallelism_tag)
{
if (_GLIBCXX_PARALLEL_CONDITION(
-static_cast<__gnu_parallel::_SequenceIndex>(__end - __begin)
->= __gnu_parallel::_Settings::get().for_each_minimal_n
-&& __gnu_parallel::__is_parallel(__parallelism_tag)))
-{
- bool __dummy;
-__gnu_parallel::__for_each_selector<_RAIter> __functionality;
+ static_cast<__gnu_parallel::_SequenceIndex>(__end - __begin)
+ >= __gnu_parallel::_Settings::get().for_each_minimal_n
+ && __gnu_parallel::__is_parallel(__parallelism_tag)))
+ {
+ bool __dummy;
+ __gnu_parallel::__for_each_selector<_RAIter> __functionality;
- return __gnu_parallel::
-__for_each_template_random_access(
- __begin, __end, __f, __functionality,
- __gnu_parallel::_DummyReduct(), true, __dummy, -1,
- __parallelism_tag);
-}
+ return __gnu_parallel::
+ __for_each_template_random_access(
+ __begin, __end, __f, __functionality,
+ __gnu_parallel::_DummyReduct(), true, __dummy, -1,
+ __parallelism_tag);
+ }
else
-return for_each(__begin, __end, __f, __gnu_parallel::sequential_tag());
+ return for_each(__begin, __end, __f, __gnu_parallel::sequential_tag());
}
// Public interface
template
inline _Function
-for_each(_Iterator __begin, _Iterator __end, _Function __f,
- __gnu_parallel::_Parallelism __parallelism_tag)
+for_each(_Iterator __begin, _Iterator __end, _Function __f,
+ __gnu_parallel::_Parallelism __parallelism_tag)
{
- typedef std::iterator_traits<_Iterator> _IteratorTraits;
- typedef typename _IteratorTraits::iterator_category _IteratorCategory;
- return __for_each_switch(__begin, __end, __f, _IteratorCategory(),
- __parallelism_tag);
+ return __for_each_switch(__begin, __end, __f,
+ std::__iterator_category(__begin),
+ __parallelism_tag);
}
template
inline _Function
-for_each(_Iterator __begin, _Iterator __end, _Function __f)
+for_each(_Iterator __begin, _Iterator __end, _Function __f)
{
- typedef std::iterator_traits<_Iterator> _IteratorTraits;
- typedef typename _IteratorTraits::iterator_category _IteratorCategory;
- return __for_each_switch(__begin, __end, __f, _IteratorCategory());
+ return __for_each_switch(__begin, __end, __f,
+ std::__iterator_category(__begin));
}
-
// Sequential fallback
template
inline _IIter
-find(_IIter __begin, _IIter __end, const _Tp& __val,
- __gnu_parallel::sequential_tag)
+find(_IIter __begin, _IIter __end, const _Tp& __val,
+ __gnu_parallel::sequential_tag)
{ return _GLIBCXX_STD_A::find(__begin, __end, __val); }
// Sequential fallback for input iterator case
@@ -135,7 +131,7 @@
template
inline _IIter
__find_switch(_IIter __begin, _IIter __end, const _Tp& __val,
-_IteratorTag)
+ _IteratorTag)
{ return _GLIBCXX_STD_A::find(__begin, __end, __val); }
// Parallel find for random access iterators
@@ -142,23 +138,23 @@
template
_RAIter
__find_switch(_RAIter __begin, _RAIter __end,
-const _Tp& __val, random_access_iterator_tag)
+ const _Tp& __val, random_access_iterator_tag)
{
typedef iterator_traits<_RAIter> _TraitsType;