Re: parallel/algo.h cleanup

2016-09-26 Thread Jonathan Wakely

On 25/09/16 17:23 +0200, François Dumont wrote:

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.


N.B. for a patch of this size it would have been easier to review the
whitespace changes separately from the substantial changes.



   Tested under Linux x86_64 parallel mode.


OK for trunk, but please also test normal mode before committing. It
shouldn't cause any problems, but best to be sure.



parallel/algo.h cleanup

2016-09-25 Thread François Dumont

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;