parallel/algorithmfwd.h

Go to the documentation of this file.
00001 // <algorithm> parallel extensions -*- C++ -*-
00002 
00003 // Copyright (C) 2007, 2008 Free Software Foundation, Inc.
00004 //
00005 // This file is part of the GNU ISO C++ Library.  This library is free
00006 // software; you can redistribute it and/or modify it under the terms
00007 // of the GNU General Public License as published by the Free Software
00008 // Foundation; either version 2, or (at your option) any later
00009 // version.
00010 
00011 // This library is distributed in the hope that it will be useful, but
00012 // WITHOUT ANY WARRANTY; without even the implied warranty of
00013 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00014 // General Public License for more details.
00015 
00016 // You should have received a copy of the GNU General Public License
00017 // along with this library; see the file COPYING.  If not, write to
00018 // the Free Software Foundation, 59 Temple Place - Suite 330, Boston,
00019 // MA 02111-1307, USA.
00020 
00021 // As a special exception, you may use this file as part of a free
00022 // software library without restriction.  Specifically, if other files
00023 // instantiate templates or use macros or inline functions from this
00024 // file, or you compile this file and link it with other files to
00025 // produce an executable, this file does not by itself cause the
00026 // resulting executable to be covered by the GNU General Public
00027 // License.  This exception does not however invalidate any other
00028 // reasons why the executable file might be covered by the GNU General
00029 // Public License.
00030 
00031 /** @file parallel/algorithmfwd.h
00032  *  This file is a GNU parallel extension to the Standard C++ Library.
00033  */
00034 
00035 #ifndef _GLIBCXX_PARALLEL_ALGORITHMFWD_H
00036 #define _GLIBCXX_PARALLEL_ALGORITHMFWD_H 1
00037 
00038 #pragma GCC system_header
00039 
00040 #include <parallel/tags.h>
00041 #include <parallel/settings.h>
00042 
00043 namespace std
00044 {
00045 namespace __parallel
00046 {
00047   template<typename _FIter>
00048     _FIter
00049     adjacent_find(_FIter, _FIter);
00050 
00051   template<typename _FIter>
00052     _FIter
00053     adjacent_find(_FIter, _FIter, __gnu_parallel::sequential_tag);
00054 
00055   template<typename _FIter, typename _IterTag>
00056     _FIter
00057     adjacent_find_switch(_FIter, _FIter, _IterTag);
00058 
00059   template<typename _RAIter>
00060     _RAIter
00061     adjacent_find_switch(_RAIter, _RAIter, random_access_iterator_tag);
00062 
00063 
00064   template<typename _FIter, typename _BiPredicate>
00065     _FIter
00066     adjacent_find(_FIter, _FIter, _BiPredicate);
00067 
00068   template<typename _FIter, typename _BiPredicate>
00069     _FIter
00070     adjacent_find(_FIter, _FIter, _BiPredicate,
00071           __gnu_parallel::sequential_tag);
00072 
00073   template<typename _FIter, typename _BiPredicate, typename _IterTag>
00074     _FIter
00075     adjacent_find_switch(_FIter, _FIter, _BiPredicate, _IterTag);
00076 
00077   template<typename _RAIter, typename _BiPredicate>
00078     _RAIter
00079     adjacent_find_switch(_RAIter, _RAIter, _BiPredicate, 
00080              random_access_iterator_tag);
00081 
00082 
00083   template<typename _IIter, typename _Tp>
00084     typename iterator_traits<_IIter>::difference_type
00085     count(_IIter, _IIter, const _Tp&);
00086 
00087   template<typename _IIter, typename _Tp>
00088     typename iterator_traits<_IIter>::difference_type
00089     count(_IIter, _IIter, const _Tp&, __gnu_parallel::sequential_tag);
00090 
00091   template<typename _IIter, typename _Tp>
00092     typename iterator_traits<_IIter>::difference_type
00093     count(_IIter, _IIter, const _Tp&, __gnu_parallel::_Parallelism);
00094 
00095   template<typename _IIter, typename _Tp, typename _IterTag>
00096     typename iterator_traits<_IIter>::difference_type
00097     count_switch(_IIter, _IIter, const _Tp&, _IterTag);
00098 
00099   template<typename _RAIter, typename _Tp>
00100     typename iterator_traits<_RAIter>::difference_type
00101     count_switch(_RAIter, _RAIter, const _Tp&, random_access_iterator_tag,
00102          __gnu_parallel::_Parallelism);
00103 
00104 
00105   template<typename _IIter, typename _Predicate>
00106     typename iterator_traits<_IIter>::difference_type
00107     count_if(_IIter, _IIter, _Predicate);
00108 
00109   template<typename _IIter, typename _Predicate>
00110     typename iterator_traits<_IIter>::difference_type
00111     count_if(_IIter, _IIter, _Predicate, __gnu_parallel::sequential_tag);
00112 
00113   template<typename _IIter, typename _Predicate>
00114     typename iterator_traits<_IIter>::difference_type
00115     count_if(_IIter, _IIter, _Predicate, __gnu_parallel::_Parallelism);
00116 
00117   template<typename _IIter, typename _Predicate, typename _IterTag>
00118     typename iterator_traits<_IIter>::difference_type
00119     count_if_switch(_IIter, _IIter, _Predicate, _IterTag);
00120 
00121   template<typename _RAIter, typename _Predicate>
00122     typename iterator_traits<_RAIter>::difference_type
00123     count_if_switch(_RAIter, _RAIter, _Predicate, random_access_iterator_tag,
00124             __gnu_parallel::_Parallelism);
00125 
00126   // algobase.h
00127   template<typename _IIter1, typename _IIter2>
00128     bool
00129     equal(_IIter1, _IIter1, _IIter2, __gnu_parallel::sequential_tag);
00130 
00131   template<typename _IIter1, typename _IIter2, typename Predicate>
00132     bool
00133     equal(_IIter1, _IIter1, _IIter2, Predicate,
00134       __gnu_parallel::sequential_tag);
00135 
00136   template<typename _IIter1, typename _IIter2>
00137     bool
00138     equal(_IIter1, _IIter1, _IIter2);
00139 
00140   template<typename _IIter1, typename _IIter2, typename Predicate>
00141     bool
00142     equal(_IIter1, _IIter1, _IIter2, Predicate);
00143 
00144   template<typename _IIter, typename _Tp>
00145     _IIter
00146     find(_IIter, _IIter, const _Tp&, __gnu_parallel::sequential_tag);
00147 
00148   template<typename _IIter, typename _Tp>
00149     _IIter
00150     find(_IIter, _IIter, const _Tp& val);
00151 
00152   template<typename _IIter, typename _Tp, typename _IterTag>
00153     _IIter
00154     find_switch(_IIter, _IIter, const _Tp&, _IterTag);
00155 
00156   template<typename _RAIter, typename _Tp>
00157     _RAIter
00158     find_switch(_RAIter, _RAIter, const _Tp&, random_access_iterator_tag);
00159 
00160   template<typename _IIter, typename _Predicate>
00161     _IIter
00162     find_if(_IIter, _IIter, _Predicate, __gnu_parallel::sequential_tag);
00163 
00164   template<typename _IIter, typename _Predicate>
00165     _IIter
00166     find_if(_IIter, _IIter, _Predicate);
00167 
00168   template<typename _IIter, typename _Predicate, typename _IterTag>
00169     _IIter
00170     find_if_switch(_IIter, _IIter, _Predicate, _IterTag);
00171 
00172   template<typename _RAIter, typename _Predicate>
00173     _RAIter
00174     find_if_switch(_RAIter, _RAIter, _Predicate, random_access_iterator_tag);
00175 
00176   template<typename _IIter, typename _FIter>
00177     _IIter
00178     find_first_of(_IIter, _IIter, _FIter, _FIter,
00179           __gnu_parallel::sequential_tag);
00180 
00181   template<typename _IIter, typename _FIter, typename _BiPredicate>
00182     _IIter
00183     find_first_of(_IIter, _IIter, _FIter, _FIter, _BiPredicate,
00184           __gnu_parallel::sequential_tag);
00185 
00186   template<typename _IIter, typename _FIter, typename _BiPredicate>
00187     _IIter
00188     find_first_of(_IIter, _IIter, _FIter, _FIter, _BiPredicate);
00189 
00190   template<typename _IIter, typename _FIter>
00191     _IIter
00192     find_first_of(_IIter, _IIter, _FIter, _FIter);
00193 
00194   template<typename _IIter, typename _FIter,
00195        typename _IterTag1, typename _IterTag2>
00196     _IIter
00197     find_first_of_switch(_IIter, _IIter, _FIter, _FIter, _IterTag1, _IterTag2);
00198 
00199   template<typename _RAIter, typename _FIter, typename _BiPredicate,
00200        typename _IterTag>
00201     _RAIter
00202     find_first_of_switch(_RAIter, _RAIter, _FIter, _FIter, _BiPredicate,
00203              random_access_iterator_tag, _IterTag);
00204 
00205   template<typename _IIter, typename _FIter, typename _BiPredicate,
00206        typename _IterTag1, typename _IterTag2>
00207     _IIter
00208     find_first_of_switch(_IIter, _IIter, _FIter, _FIter, _BiPredicate,
00209              _IterTag1, _IterTag2);
00210 
00211 
00212   template<typename _IIter, typename _Function>
00213     _Function
00214     for_each(_IIter, _IIter, _Function);
00215 
00216   template<typename _IIter, typename _Function>
00217     _Function
00218     for_each(_IIter, _IIter, _Function, __gnu_parallel::sequential_tag);
00219 
00220   template<typename _Iterator, typename _Function>
00221     _Function
00222     for_each(_Iterator, _Iterator, _Function, __gnu_parallel::_Parallelism);
00223 
00224   template<typename _IIter, typename _Function, typename _IterTag>
00225     _Function
00226     for_each_switch(_IIter, _IIter, _Function, _IterTag);
00227 
00228   template<typename _RAIter, typename _Function>
00229     _Function
00230     for_each_switch(_RAIter, _RAIter, _Function, random_access_iterator_tag, 
00231             __gnu_parallel::_Parallelism);
00232 
00233 
00234   template<typename _FIter, typename _Generator>
00235     void
00236     generate(_FIter, _FIter, _Generator);
00237 
00238   template<typename _FIter, typename _Generator>
00239     void
00240     generate(_FIter, _FIter, _Generator, __gnu_parallel::sequential_tag);
00241 
00242   template<typename _FIter, typename _Generator>
00243     void
00244     generate(_FIter, _FIter, _Generator, __gnu_parallel::_Parallelism);
00245 
00246   template<typename _FIter, typename _Generator, typename _IterTag>
00247     void
00248     generate_switch(_FIter, _FIter, _Generator, _IterTag);
00249 
00250   template<typename _RAIter, typename _Generator>
00251     void
00252     generate_switch(_RAIter, _RAIter, _Generator, random_access_iterator_tag, 
00253             __gnu_parallel::_Parallelism);
00254 
00255   template<typename _OIter, typename _Size, typename _Generator>
00256     _OIter
00257     generate_n(_OIter, _Size, _Generator);
00258 
00259   template<typename _OIter, typename _Size, typename _Generator>
00260     _OIter
00261     generate_n(_OIter, _Size, _Generator, __gnu_parallel::sequential_tag);
00262 
00263   template<typename _OIter, typename _Size, typename _Generator>
00264     _OIter
00265     generate_n(_OIter, _Size, _Generator, __gnu_parallel::_Parallelism);
00266 
00267   template<typename _OIter, typename _Size, typename _Generator,
00268        typename _IterTag>
00269     _OIter
00270     generate_n_switch(_OIter, _Size, _Generator, _IterTag);
00271 
00272   template<typename _RAIter, typename _Size, typename _Generator>
00273     _RAIter
00274     generate_n_switch(_RAIter, _Size, _Generator, random_access_iterator_tag, 
00275               __gnu_parallel::_Parallelism);
00276 
00277   template<typename _IIter1, typename _IIter2>
00278     bool
00279     lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2,
00280                 __gnu_parallel::sequential_tag);
00281 
00282   template<typename _IIter1, typename _IIter2, typename _Predicate>
00283     bool
00284     lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2, _Predicate,
00285                 __gnu_parallel::sequential_tag);
00286 
00287   template<typename _IIter1, typename _IIter2>
00288     bool
00289     lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2);
00290 
00291   template<typename _IIter1, typename _IIter2, typename _Predicate>
00292     bool
00293     lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2, _Predicate);
00294 
00295   template<typename _IIter1, typename _IIter2,
00296        typename _Predicate, typename _IterTag1, typename _IterTag2>
00297     bool
00298     lexicographical_compare_switch(_IIter1, _IIter1, _IIter2, _IIter2,
00299                    _Predicate, _IterTag1, _IterTag2);
00300 
00301   template<typename _RAIter1, typename _RAIter2, typename _Predicate>
00302     bool
00303     lexicographical_compare_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2,
00304                    _Predicate, random_access_iterator_tag,
00305                    random_access_iterator_tag);
00306 
00307   // algo.h
00308   template<typename _IIter1, typename _IIter2>
00309     pair<_IIter1, _IIter2>
00310     mismatch(_IIter1, _IIter1, _IIter2, __gnu_parallel::sequential_tag);
00311 
00312   template<typename _IIter1, typename _IIter2, typename _Predicate>
00313     pair<_IIter1, _IIter2>
00314     mismatch(_IIter1, _IIter1, _IIter2, _Predicate,
00315          __gnu_parallel::sequential_tag);
00316 
00317   template<typename _IIter1, typename _IIter2>
00318     pair<_IIter1, _IIter2>
00319     mismatch(_IIter1, _IIter1, _IIter2);
00320 
00321   template<typename _IIter1, typename _IIter2, typename _Predicate>
00322     pair<_IIter1, _IIter2>
00323     mismatch(_IIter1, _IIter1, _IIter2, _Predicate);
00324 
00325   template<typename _IIter1, typename _IIter2, typename _Predicate,
00326        typename _IterTag1, typename _IterTag2>
00327     pair<_IIter1, _IIter2>
00328     mismatch_switch(_IIter1, _IIter1, _IIter2, _Predicate,
00329             _IterTag1, _IterTag2);
00330 
00331   template<typename _RAIter1, typename _RAIter2, typename _Predicate>
00332     pair<_RAIter1, _RAIter2>
00333     mismatch_switch(_RAIter1, _RAIter1, _RAIter2, _Predicate,
00334             random_access_iterator_tag, random_access_iterator_tag);
00335 
00336   template<typename _FIter1, typename _FIter2>
00337     _FIter1
00338     search(_FIter1, _FIter1, _FIter2, _FIter2, __gnu_parallel::sequential_tag);
00339 
00340   template<typename _FIter1, typename _FIter2>
00341     _FIter1
00342     search(_FIter1, _FIter1, _FIter2, _FIter2);
00343 
00344   template<typename _FIter1, typename _FIter2, typename _BiPredicate>
00345     _FIter1
00346     search(_FIter1, _FIter1, _FIter2, _FIter2, _BiPredicate,
00347        __gnu_parallel::sequential_tag);
00348 
00349   template<typename _FIter1, typename _FIter2, typename _BiPredicate>
00350     _FIter1
00351     search(_FIter1, _FIter1, _FIter2, _FIter2, _BiPredicate);
00352 
00353   template<typename _RAIter1, typename _RAIter2>
00354     _RAIter1
00355     search_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2,
00356           random_access_iterator_tag, random_access_iterator_tag);
00357 
00358   template<typename _FIter1, typename _FIter2, typename _IterTag1,
00359        typename _IterTag2>
00360     _FIter1
00361     search_switch(_FIter1, _FIter1, _FIter2, _FIter2, _IterTag1, _IterTag2);
00362 
00363   template<typename _RAIter1, typename _RAIter2, typename _BiPredicate>
00364     _RAIter1
00365     search_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2, _BiPredicate,
00366           random_access_iterator_tag, random_access_iterator_tag);
00367 
00368   template<typename _FIter1, typename _FIter2, typename _BiPredicate,
00369        typename _IterTag1, typename _IterTag2>
00370     _FIter1
00371     search_switch(_FIter1, _FIter1, _FIter2, _FIter2, _BiPredicate,
00372           _IterTag1, _IterTag2);
00373 
00374   template<typename _FIter, typename _Integer, typename _Tp>
00375     _FIter
00376     search_n(_FIter, _FIter, _Integer, const _Tp&,
00377          __gnu_parallel::sequential_tag);
00378 
00379   template<typename _FIter, typename _Integer, typename _Tp,
00380        typename _BiPredicate>
00381     _FIter
00382     search_n(_FIter, _FIter, _Integer, const _Tp&, _BiPredicate,
00383          __gnu_parallel::sequential_tag);
00384     
00385   template<typename _FIter, typename _Integer, typename _Tp>
00386     _FIter
00387     search_n(_FIter, _FIter, _Integer, const _Tp&);
00388 
00389   template<typename _FIter, typename _Integer, typename _Tp,
00390        typename _BiPredicate>
00391     _FIter
00392     search_n(_FIter, _FIter, _Integer, const _Tp&, _BiPredicate);
00393 
00394   template<typename _RAIter, typename _Integer, typename _Tp,
00395        typename _BiPredicate>
00396     _RAIter
00397     search_n_switch(_RAIter, _RAIter, _Integer, const _Tp&,
00398             _BiPredicate, random_access_iterator_tag);
00399 
00400   template<typename _FIter, typename _Integer, typename _Tp,
00401        typename _BiPredicate, typename _IterTag>
00402     _FIter
00403     search_n_switch(_FIter, _FIter, _Integer, const _Tp&,
00404             _BiPredicate, _IterTag);
00405 
00406 
00407   template<typename _IIter, typename _OIter, typename UnaryOperation>
00408     _OIter
00409     transform(_IIter, _IIter, _OIter, UnaryOperation);
00410 
00411   template<typename _IIter, typename _OIter, typename UnaryOperation>
00412     _OIter
00413     transform(_IIter, _IIter, _OIter, UnaryOperation, 
00414           __gnu_parallel::sequential_tag);
00415 
00416   template<typename _IIter, typename _OIter, typename UnaryOperation>
00417     _OIter
00418     transform(_IIter, _IIter, _OIter, UnaryOperation, 
00419           __gnu_parallel::_Parallelism);
00420 
00421   template<typename _IIter, typename _OIter, typename UnaryOperation,
00422        typename _IterTag1, typename _IterTag2>
00423     _OIter
00424     transform1_switch(_IIter, _IIter, _OIter, UnaryOperation, 
00425               _IterTag1, _IterTag2);
00426     
00427 
00428   template<typename _RAIIter, typename _RAOIter, typename UnaryOperation>
00429     _RAOIter
00430     transform1_switch(_RAIIter, _RAIIter, _RAOIter, UnaryOperation, 
00431               random_access_iterator_tag, random_access_iterator_tag, 
00432               __gnu_parallel::_Parallelism);
00433 
00434 
00435   template<typename _IIter1, typename _IIter2, typename _OIter,
00436        typename _BiOperation>
00437     _OIter
00438     transform(_IIter1, _IIter1, _IIter2, _OIter, _BiOperation);
00439 
00440   template<typename _IIter1, typename _IIter2, typename _OIter,
00441        typename _BiOperation>
00442     _OIter
00443     transform(_IIter1, _IIter1, _IIter2, _OIter, _BiOperation, 
00444           __gnu_parallel::sequential_tag);
00445 
00446   template<typename _IIter1, typename _IIter2, typename _OIter,
00447        typename _BiOperation>
00448     _OIter
00449     transform(_IIter1, _IIter1, _IIter2, _OIter, _BiOperation, 
00450           __gnu_parallel::_Parallelism);
00451 
00452   template<typename _RAIter1, typename _RAIter2, typename _RAIter3,
00453        typename _BiOperation>
00454     _RAIter3
00455     transform2_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter3, _BiOperation, 
00456               random_access_iterator_tag, random_access_iterator_tag, 
00457               random_access_iterator_tag,
00458               __gnu_parallel::_Parallelism);
00459 
00460   template<typename _IIter1, typename _IIter2, typename _OIter,
00461        typename _BiOperation, typename _Tag1,
00462        typename _Tag2, typename _Tag3>
00463     _OIter
00464     transform2_switch(_IIter1, _IIter1, _IIter2, _OIter, _BiOperation, 
00465               _Tag1, _Tag2, _Tag3);
00466 
00467 
00468   template<typename _FIter, typename _Tp>
00469     void
00470     replace(_FIter, _FIter, const _Tp&, const _Tp&);
00471 
00472   template<typename _FIter, typename _Tp>
00473     void
00474     replace(_FIter, _FIter, const _Tp&, const _Tp&, 
00475         __gnu_parallel::sequential_tag);
00476 
00477   template<typename _FIter, typename _Tp>
00478     void
00479     replace(_FIter, _FIter, const _Tp&, const _Tp&,
00480         __gnu_parallel::_Parallelism);
00481 
00482   template<typename _FIter, typename _Tp, typename _IterTag>
00483     void
00484     replace_switch(_FIter, _FIter, const _Tp&, const _Tp&, _IterTag);
00485 
00486   template<typename _RAIter, typename _Tp>
00487     void
00488     replace_switch(_RAIter, _RAIter, const _Tp&, const _Tp&, 
00489            random_access_iterator_tag, __gnu_parallel::_Parallelism);
00490 
00491 
00492   template<typename _FIter, typename _Predicate, typename _Tp>
00493     void
00494     replace_if(_FIter, _FIter, _Predicate, const _Tp&);
00495 
00496   template<typename _FIter, typename _Predicate, typename _Tp>
00497     void
00498     replace_if(_FIter, _FIter, _Predicate, const _Tp&,
00499            __gnu_parallel::sequential_tag);
00500 
00501   template<typename _FIter, typename _Predicate, typename _Tp>
00502     void
00503     replace_if(_FIter, _FIter, _Predicate, const _Tp&,
00504            __gnu_parallel::_Parallelism);
00505 
00506   template<typename _FIter, typename _Predicate, typename _Tp,
00507        typename _IterTag>
00508     void
00509     replace_if_switch(_FIter, _FIter, _Predicate, const _Tp&, _IterTag);
00510  
00511   template<typename _RAIter, typename _Predicate, typename _Tp>
00512     void
00513     replace_if_switch(_RAIter, _RAIter, _Predicate, const _Tp&,
00514               random_access_iterator_tag,
00515               __gnu_parallel::_Parallelism);
00516 
00517 
00518   template<typename _FIter>
00519     _FIter
00520     max_element(_FIter, _FIter);
00521 
00522   template<typename _FIter>
00523     _FIter
00524     max_element(_FIter, _FIter, __gnu_parallel::sequential_tag);
00525 
00526   template<typename _FIter>
00527     _FIter
00528     max_element(_FIter, _FIter, __gnu_parallel::_Parallelism);
00529 
00530   template<typename _FIter, typename _Compare>
00531     _FIter
00532     max_element(_FIter, _FIter, _Compare);
00533 
00534   template<typename _FIter, typename _Compare>
00535     _FIter
00536     max_element(_FIter, _FIter, _Compare, __gnu_parallel::sequential_tag);
00537 
00538   template<typename _FIter, typename _Compare>
00539     _FIter
00540     max_element(_FIter, _FIter, _Compare, __gnu_parallel::_Parallelism);
00541 
00542   template<typename _FIter, typename _Compare, typename _IterTag>
00543     _FIter
00544     max_element_switch(_FIter, _FIter, _Compare, _IterTag);
00545 
00546   template<typename _RAIter, typename _Compare>
00547     _RAIter
00548     max_element_switch(_RAIter, _RAIter, _Compare, random_access_iterator_tag, 
00549                __gnu_parallel::_Parallelism);
00550 
00551 
00552   template<typename _IIter1, typename _IIter2, typename _OIter>
00553     _OIter
00554     merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, 
00555       __gnu_parallel::sequential_tag);
00556 
00557   template<typename _IIter1, typename _IIter2, typename _OIter,
00558        typename _Compare>
00559     _OIter
00560     merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare, 
00561       __gnu_parallel::sequential_tag);
00562 
00563   template<typename _IIter1, typename _IIter2, typename _OIter,
00564        typename _Compare>
00565     _OIter
00566     merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
00567 
00568   template<typename _IIter1, typename _IIter2, typename _OIter>
00569     _OIter
00570     merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
00571 
00572   template<typename _IIter1, typename _IIter2, typename _OIter,
00573        typename _Compare, typename _IterTag1, typename _IterTag2,
00574        typename _IterTag3>
00575     _OIter
00576     merge_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare, 
00577          _IterTag1, _IterTag2, _IterTag3);
00578 
00579   template<typename _IIter1, typename _IIter2, typename _OIter,
00580        typename _Compare>
00581     _OIter
00582     merge_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare, 
00583          random_access_iterator_tag, random_access_iterator_tag, 
00584          random_access_iterator_tag);
00585 
00586 
00587   template<typename _FIter>
00588     _FIter
00589     min_element(_FIter, _FIter);
00590 
00591   template<typename _FIter>
00592     _FIter
00593     min_element(_FIter, _FIter, __gnu_parallel::sequential_tag);
00594 
00595   template<typename _FIter>
00596     _FIter
00597     min_element(_FIter, _FIter, __gnu_parallel::_Parallelism parallelism_tag);
00598 
00599   template<typename _FIter, typename _Compare>
00600     _FIter
00601     min_element(_FIter, _FIter, _Compare);
00602 
00603   template<typename _FIter, typename _Compare>
00604     _FIter
00605     min_element(_FIter, _FIter, _Compare, __gnu_parallel::sequential_tag);
00606 
00607   template<typename _FIter, typename _Compare>
00608     _FIter
00609     min_element(_FIter, _FIter, _Compare, __gnu_parallel::_Parallelism);
00610 
00611   template<typename _FIter, typename _Compare, typename _IterTag>
00612     _FIter
00613     min_element_switch(_FIter, _FIter, _Compare, _IterTag);
00614 
00615   template<typename _RAIter, typename _Compare>
00616     _RAIter
00617     min_element_switch(_RAIter, _RAIter, _Compare, random_access_iterator_tag, 
00618                __gnu_parallel::_Parallelism);
00619 
00620   template<typename _RAIter>
00621     void
00622     nth_element(_RAIter, _RAIter, _RAIter, __gnu_parallel::sequential_tag);
00623 
00624   template<typename _RAIter, typename _Compare>
00625     void
00626     nth_element(_RAIter, _RAIter, _RAIter, _Compare,
00627         __gnu_parallel::sequential_tag);
00628 
00629   template<typename _RAIter, typename _Compare>
00630     void
00631     nth_element(_RAIter, _RAIter, _RAIter, _Compare);
00632 
00633   template<typename _RAIter>
00634     void
00635     nth_element(_RAIter, _RAIter, _RAIter);
00636 
00637   template<typename _RAIter, typename _Compare>
00638     void
00639     partial_sort(_RAIter, _RAIter, _RAIter, _Compare,
00640          __gnu_parallel::sequential_tag);
00641 
00642   template<typename _RAIter>
00643     void
00644     partial_sort(_RAIter, _RAIter, _RAIter, __gnu_parallel::sequential_tag);
00645 
00646   template<typename _RAIter, typename _Compare>
00647     void
00648     partial_sort(_RAIter, _RAIter, _RAIter, _Compare);
00649 
00650   template<typename _RAIter>
00651     void
00652     partial_sort(_RAIter, _RAIter, _RAIter);
00653 
00654   template<typename _FIter, typename Predicate>
00655     _FIter
00656     partition(_FIter, _FIter, Predicate, __gnu_parallel::sequential_tag);
00657     
00658   template<typename _FIter, typename Predicate>
00659     _FIter
00660     partition(_FIter, _FIter, Predicate);
00661 
00662   template<typename _FIter, typename Predicate, typename _IterTag>
00663     _FIter
00664     partition_switch(_FIter, _FIter, Predicate, _IterTag);
00665     
00666   template<typename _RAIter, typename Predicate>
00667     _RAIter
00668     partition_switch(_RAIter, _RAIter, Predicate, random_access_iterator_tag);
00669 
00670   template<typename _RAIter>
00671     void
00672     random_shuffle(_RAIter, _RAIter, __gnu_parallel::sequential_tag);
00673 
00674   template<typename _RAIter, typename _RandomNumberGenerator>
00675     void
00676     random_shuffle(_RAIter, _RAIter, _RandomNumberGenerator&,
00677            __gnu_parallel::sequential_tag);
00678 
00679   template<typename _RAIter>
00680     void
00681     random_shuffle(_RAIter, _RAIter);
00682 
00683   template<typename _RAIter, typename _RandomNumberGenerator>
00684     void
00685     random_shuffle(_RAIter, _RAIter, _RandomNumberGenerator&);
00686 
00687   template<typename _IIter1, typename _IIter2, typename _OIter>
00688     _OIter
00689     set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
00690         __gnu_parallel::sequential_tag);
00691 
00692   template<typename _IIter1, typename _IIter2, typename _OIter,
00693        typename Predicate>
00694     _OIter
00695     set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, Predicate,
00696           __gnu_parallel::sequential_tag);
00697 
00698   template<typename _IIter1, typename _IIter2, typename _OIter>
00699     _OIter
00700     set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
00701 
00702   template<typename _IIter1, typename _IIter2, typename _OIter,
00703        typename _Predicate>
00704     _OIter 
00705     set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate);
00706 
00707   template<typename _IIter1, typename _IIter2, typename _Predicate,
00708        typename _OIter, typename _IterTag1, typename _IterTag2,
00709        typename _IterTag3>
00710     _OIter
00711     set_union_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
00712              _Predicate, _IterTag1, _IterTag2, _IterTag3);
00713 
00714   template<typename _RAIter1, typename _RAIter2, typename _Output_RAIter,
00715        typename _Predicate>
00716     _Output_RAIter
00717     set_union_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2, _Output_RAIter,
00718              _Predicate, random_access_iterator_tag,
00719              random_access_iterator_tag, random_access_iterator_tag);
00720 
00721   template<typename _IIter1, typename _IIter2, typename _OIter>
00722     _OIter
00723     set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
00724              __gnu_parallel::sequential_tag);
00725 
00726   template<typename _IIter1, typename _IIter2, typename _OIter,
00727        typename _Predicate>
00728     _OIter
00729     set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate,
00730              __gnu_parallel::sequential_tag);
00731 
00732   template<typename _IIter1, typename _IIter2, typename _OIter>
00733     _OIter
00734     set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
00735 
00736   template<typename _IIter1, typename _IIter2, typename _OIter,
00737        typename _Predicate>
00738     _OIter 
00739     set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate);
00740 
00741   template<typename _IIter1, typename _IIter2, typename _Predicate,
00742        typename _OIter, typename _IterTag1, typename _IterTag2,
00743        typename _IterTag3>
00744     _OIter
00745     set_intersection_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
00746                 _Predicate, _IterTag1, _IterTag2, _IterTag3);
00747 
00748   template<typename _RAIter1, typename _RAIter2, typename _Output_RAIter,
00749        typename _Predicate>
00750     _Output_RAIter
00751     set_intersection_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2,
00752                 _Output_RAIter, _Predicate,
00753                 random_access_iterator_tag,
00754                 random_access_iterator_tag,
00755                 random_access_iterator_tag);
00756 
00757   template<typename _IIter1, typename _IIter2, typename _OIter>
00758     _OIter
00759     set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
00760                  __gnu_parallel::sequential_tag);
00761 
00762   template<typename _IIter1, typename _IIter2, typename _OIter,
00763        typename _Predicate>
00764     _OIter
00765     set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
00766                  _Predicate, __gnu_parallel::sequential_tag);
00767 
00768   template<typename _IIter1, typename _IIter2, typename _OIter>
00769     _OIter 
00770     set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
00771 
00772   template<typename _IIter1, typename _IIter2, typename _OIter,
00773        typename _Predicate>
00774     _OIter 
00775     set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
00776                  _Predicate);
00777 
00778   template<typename _IIter1, typename _IIter2, typename _Predicate,
00779        typename _OIter, typename _IterTag1, typename _IterTag2,
00780        typename _IterTag3>
00781     _OIter
00782     set_symmetric_difference_switch(_IIter1, _IIter1, _IIter2, _IIter2,
00783                     _OIter, _Predicate, _IterTag1, _IterTag2,
00784                     _IterTag3);
00785 
00786   template<typename _RAIter1, typename _RAIter2, typename _Output_RAIter,
00787        typename _Predicate>
00788     _Output_RAIter
00789     set_symmetric_difference_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2,
00790                     _Output_RAIter, _Predicate,
00791                     random_access_iterator_tag,
00792                     random_access_iterator_tag,
00793                     random_access_iterator_tag);
00794 
00795 
00796   template<typename _IIter1, typename _IIter2, typename _OIter>
00797     _OIter
00798     set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
00799            __gnu_parallel::sequential_tag);
00800 
00801   template<typename _IIter1, typename _IIter2, typename _OIter,
00802        typename _Predicate>
00803     _OIter
00804     set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate,
00805            __gnu_parallel::sequential_tag);
00806 
00807   template<typename _IIter1, typename _IIter2, typename _OIter>
00808     _OIter
00809     set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
00810 
00811   template<typename _IIter1, typename _IIter2, typename _OIter,
00812        typename _Predicate>
00813     _OIter
00814     set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate);
00815 
00816   template<typename _IIter1, typename _IIter2, typename _Predicate,
00817        typename _OIter, typename _IterTag1, typename _IterTag2,
00818        typename _IterTag3>
00819     _OIter
00820     set_difference_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
00821               _Predicate, _IterTag1, _IterTag2, _IterTag3);
00822 
00823   template<typename _RAIter1, typename _RAIter2, typename _Output_RAIter,
00824        typename _Predicate>
00825     _Output_RAIter
00826     set_difference_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2,
00827               _Output_RAIter, _Predicate,
00828               random_access_iterator_tag,
00829               random_access_iterator_tag,
00830               random_access_iterator_tag);
00831 
00832 
00833   template<typename _RAIter>
00834     void
00835     sort(_RAIter, _RAIter, __gnu_parallel::sequential_tag);
00836 
00837   template<typename _RAIter, typename _Compare>
00838     void
00839     sort(_RAIter, _RAIter, _Compare, __gnu_parallel::sequential_tag);
00840 
00841   template<typename _RAIter>
00842     void
00843     sort(_RAIter, _RAIter);
00844 
00845   template<typename _RAIter, typename _Compare>
00846     void
00847     sort(_RAIter, _RAIter, _Compare);
00848 
00849   template<typename _RAIter>
00850     void
00851     stable_sort(_RAIter, _RAIter, __gnu_parallel::sequential_tag);
00852 
00853   template<typename _RAIter, typename _Compare>
00854     void
00855     stable_sort(_RAIter, _RAIter, _Compare, __gnu_parallel::sequential_tag);
00856 
00857   template<typename _RAIter>
00858     void
00859     stable_sort(_RAIter, _RAIter);
00860 
00861   template<typename _RAIter, typename _Compare>
00862     void
00863     stable_sort(_RAIter, _RAIter, _Compare);
00864 
00865   template<typename _IIter, typename _OIter>
00866     _OIter
00867     unique_copy(_IIter, _IIter, _OIter, __gnu_parallel::sequential_tag);
00868 
00869   template<typename _IIter, typename _OIter, typename _Predicate>
00870     _OIter
00871     unique_copy(_IIter, _IIter, _OIter, _Predicate,
00872         __gnu_parallel::sequential_tag);
00873 
00874   template<typename _IIter, typename _OIter>
00875     _OIter
00876     unique_copy(_IIter, _IIter, _OIter);
00877 
00878   template<typename _IIter, typename _OIter, typename _Predicate>
00879     _OIter
00880     unique_copy(_IIter, _IIter, _OIter, _Predicate);
00881 
00882   template<typename _IIter, typename _OIter, typename _Predicate,
00883        typename _IterTag1, typename _IterTag2>
00884     _OIter
00885     unique_copy_switch(_IIter, _IIter, _OIter, _Predicate,
00886                _IterTag1, _IterTag2);
00887 
00888   template<typename _RAIter, typename _RandomAccess_OIter, typename _Predicate>
00889     _RandomAccess_OIter
00890     unique_copy_switch(_RAIter, _RAIter, _RandomAccess_OIter, _Predicate,
00891                random_access_iterator_tag, random_access_iterator_tag);
00892 } // end namespace __parallel
00893 } // end namespace std
00894 
00895 #endif

Generated on Fri Jan 23 20:12:08 2009 for libstdc++ by  doxygen 1.5.6