Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  1. // <parallel/numeric> Forward declarations -*- C++ -*-
  2.  
  3. // Copyright (C) 2007-2013 Free Software Foundation, Inc.
  4. //
  5. // This file is part of the GNU ISO C++ Library.  This library is free
  6. // software; you can redistribute it and/or modify it under the terms
  7. // of the GNU General Public License as published by the Free Software
  8. // Foundation; either version 3, or (at your option) any later
  9. // version.
  10.  
  11. // This library is distributed in the hope that it will be useful, but
  12. // WITHOUT ANY WARRANTY; without even the implied warranty of
  13. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  14. // General Public License for more details.
  15.  
  16. // Under Section 7 of GPL version 3, you are granted additional
  17. // permissions described in the GCC Runtime Library Exception, version
  18. // 3.1, as published by the Free Software Foundation.
  19.  
  20. // You should have received a copy of the GNU General Public License and
  21. // a copy of the GCC Runtime Library Exception along with this program;
  22. // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
  23. // <http://www.gnu.org/licenses/>.
  24.  
  25. /** @file parallel/numericfwd.h
  26.  *  This file is a GNU parallel extension to the Standard C++ Library.
  27.  */
  28.  
  29. #ifndef _GLIBCXX_PARALLEL_NUMERICFWD_H
  30. #define _GLIBCXX_PARALLEL_NUMERICFWD_H 1
  31.  
  32. #pragma GCC system_header
  33.  
  34. #include <parallel/tags.h>
  35. #include <parallel/settings.h>
  36.  
  37. namespace std _GLIBCXX_VISIBILITY(default)
  38. {
  39. namespace __parallel
  40. {
  41.   template<typename _IIter, typename _Tp>
  42.     _Tp
  43.     accumulate(_IIter, _IIter, _Tp);
  44.  
  45.   template<typename _IIter, typename _Tp>
  46.     _Tp
  47.     accumulate(_IIter, _IIter, _Tp, __gnu_parallel::sequential_tag);
  48.  
  49.   template<typename _IIter, typename _Tp>
  50.     _Tp
  51.     accumulate(_IIter, _IIter, _Tp, __gnu_parallel::_Parallelism);
  52.  
  53.   template<typename _IIter, typename _Tp, typename _Tag>
  54.     _Tp
  55.     __accumulate_switch(_IIter, _IIter, _Tp, _Tag);
  56.  
  57.   template<typename _IIter, typename _Tp, typename _BinaryOper>
  58.     _Tp
  59.     accumulate(_IIter, _IIter, _Tp, _BinaryOper);
  60.  
  61.   template<typename _IIter, typename _Tp, typename _BinaryOper>
  62.     _Tp
  63.     accumulate(_IIter, _IIter, _Tp, _BinaryOper,
  64.                __gnu_parallel::sequential_tag);
  65.  
  66.   template<typename _IIter, typename _Tp, typename _BinaryOper>
  67.     _Tp
  68.     accumulate(_IIter, _IIter, _Tp, _BinaryOper,
  69.                __gnu_parallel::_Parallelism);
  70.  
  71.   template<typename _IIter, typename _Tp, typename _BinaryOper,
  72.            typename _Tag>
  73.     _Tp
  74.     __accumulate_switch(_IIter, _IIter, _Tp, _BinaryOper, _Tag);
  75.  
  76.   template<typename _RAIter, typename _Tp, typename _BinaryOper>
  77.     _Tp
  78.     __accumulate_switch(_RAIter, _RAIter, _Tp, _BinaryOper,
  79.                       random_access_iterator_tag,
  80.                       __gnu_parallel::_Parallelism __parallelism
  81.                       = __gnu_parallel::parallel_unbalanced);
  82.  
  83.   template<typename _IIter, typename _OIter>
  84.     _OIter
  85.     adjacent_difference(_IIter, _IIter, _OIter);
  86.  
  87.   template<typename _IIter, typename _OIter, typename _BinaryOper>
  88.     _OIter
  89.     adjacent_difference(_IIter, _IIter, _OIter, _BinaryOper);
  90.  
  91.   template<typename _IIter, typename _OIter>
  92.     _OIter
  93.     adjacent_difference(_IIter, _IIter, _OIter,
  94.                         __gnu_parallel::sequential_tag);
  95.  
  96.   template<typename _IIter, typename _OIter, typename _BinaryOper>
  97.     _OIter
  98.     adjacent_difference(_IIter, _IIter, _OIter, _BinaryOper,
  99.                         __gnu_parallel::sequential_tag);
  100.  
  101.   template<typename _IIter, typename _OIter>
  102.     _OIter
  103.     adjacent_difference(_IIter, _IIter, _OIter,
  104.                         __gnu_parallel::_Parallelism);
  105.  
  106.   template<typename _IIter, typename _OIter, typename _BinaryOper>
  107.     _OIter
  108.     adjacent_difference(_IIter, _IIter, _OIter, _BinaryOper,
  109.                         __gnu_parallel::_Parallelism);
  110.  
  111.   template<typename _IIter, typename _OIter, typename _BinaryOper,
  112.            typename _Tag1, typename _Tag2>
  113.     _OIter
  114.     __adjacent_difference_switch(_IIter, _IIter, _OIter, _BinaryOper,
  115.                                _Tag1, _Tag2);
  116.  
  117.   template<typename _IIter, typename _OIter, typename _BinaryOper>
  118.     _OIter
  119.     __adjacent_difference_switch(_IIter, _IIter, _OIter, _BinaryOper,
  120.                                random_access_iterator_tag,
  121.                                random_access_iterator_tag,
  122.                                __gnu_parallel::_Parallelism __parallelism
  123.                                = __gnu_parallel::parallel_unbalanced);
  124.  
  125.   template<typename _IIter1, typename _IIter2, typename _Tp>
  126.     _Tp
  127.     inner_product(_IIter1, _IIter1, _IIter2, _Tp);
  128.  
  129.   template<typename _IIter1, typename _IIter2, typename _Tp>
  130.     _Tp
  131.     inner_product(_IIter1, _IIter1, _IIter2, _Tp,
  132.                   __gnu_parallel::sequential_tag);
  133.  
  134.   template<typename _IIter1, typename _IIter2, typename _Tp>
  135.     _Tp
  136.     inner_product(_IIter1, _IIter1, _IIter2, _Tp,
  137.                   __gnu_parallel::_Parallelism);
  138.  
  139.   template<typename _IIter1, typename _IIter2, typename _Tp,
  140.            typename _BinaryFunction1, typename _BinaryFunction2>
  141.     _Tp
  142.     inner_product(_IIter1, _IIter1, _IIter2, _Tp,
  143.                   _BinaryFunction1, _BinaryFunction2);
  144.  
  145.   template<typename _IIter1, typename _IIter2, typename _Tp,
  146.            typename _BinaryFunction1, typename _BinaryFunction2>
  147.     _Tp
  148.     inner_product(_IIter1, _IIter1, _IIter2, _Tp, _BinaryFunction1,
  149.                   _BinaryFunction2, __gnu_parallel::sequential_tag);
  150.  
  151.   template<typename _IIter1, typename _IIter2, typename _Tp,
  152.            typename BinaryFunction1, typename BinaryFunction2>
  153.     _Tp
  154.     inner_product(_IIter1, _IIter1, _IIter2, _Tp, BinaryFunction1,
  155.                   BinaryFunction2, __gnu_parallel::_Parallelism);
  156.  
  157.   template<typename _RAIter1, typename _RAIter2, typename _Tp,
  158.            typename BinaryFunction1, typename BinaryFunction2>
  159.     _Tp
  160.     __inner_product_switch(_RAIter1, _RAIter1, _RAIter2, _Tp, BinaryFunction1,
  161.                          BinaryFunction2, random_access_iterator_tag,
  162.                          random_access_iterator_tag,
  163.                          __gnu_parallel::_Parallelism
  164.                          = __gnu_parallel::parallel_unbalanced);
  165.  
  166.   template<typename _IIter1, typename _IIter2, typename _Tp,
  167.            typename _BinaryFunction1, typename _BinaryFunction2,
  168.            typename _Tag1, typename _Tag2>
  169.     _Tp
  170.     __inner_product_switch(_IIter1, _IIter1, _IIter2, _Tp, _BinaryFunction1,
  171.                          _BinaryFunction2, _Tag1, _Tag2);
  172.  
  173.  
  174.   template<typename _IIter, typename _OIter>
  175.     _OIter
  176.     partial_sum(_IIter, _IIter, _OIter, __gnu_parallel::sequential_tag);
  177.  
  178.   template<typename _IIter, typename _OIter, typename _BinaryOper>
  179.     _OIter
  180.     partial_sum(_IIter, _IIter, _OIter, _BinaryOper,
  181.                 __gnu_parallel::sequential_tag);
  182.  
  183.   template<typename _IIter, typename _OIter>
  184.     _OIter
  185.     partial_sum(_IIter, _IIter, _OIter __result);
  186.  
  187.   template<typename _IIter, typename _OIter, typename _BinaryOper>
  188.     _OIter
  189.     partial_sum(_IIter, _IIter, _OIter, _BinaryOper);
  190.  
  191.   template<typename _IIter, typename _OIter, typename _BinaryOper,
  192.            typename _Tag1, typename _Tag2>
  193.     _OIter
  194.     __partial_sum_switch(_IIter, _IIter, _OIter, _BinaryOper, _Tag1, _Tag2);
  195.  
  196.   template<typename _IIter, typename _OIter, typename _BinaryOper>
  197.     _OIter
  198.     __partial_sum_switch(_IIter, _IIter, _OIter, _BinaryOper,
  199.                        random_access_iterator_tag, random_access_iterator_tag);
  200. } // end namespace
  201. } // end namespace
  202.  
  203. #endif /* _GLIBCXX_PARALLEL_NUMERICFWD_H */
  204.