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 parallelism
00103          = __gnu_parallel::parallel_unbalanced);
00104 
00105 
00106   template<typename _IIter, typename _Predicate>
00107     typename iterator_traits<_IIter>::difference_type
00108     count_if(_IIter, _IIter, _Predicate);
00109 
00110   template<typename _IIter, typename _Predicate>
00111     typename iterator_traits<_IIter>::difference_type
00112     count_if(_IIter, _IIter, _Predicate, __gnu_parallel::sequential_tag);
00113 
00114   template<typename _IIter, typename _Predicate>
00115     typename iterator_traits<_IIter>::difference_type
00116     count_if(_IIter, _IIter, _Predicate, __gnu_parallel::_Parallelism);
00117 
00118   template<typename _IIter, typename _Predicate, typename _IterTag>
00119     typename iterator_traits<_IIter>::difference_type
00120     count_if_switch(_IIter, _IIter, _Predicate, _IterTag);
00121 
00122   template<typename _RAIter, typename _Predicate>
00123     typename iterator_traits<_RAIter>::difference_type
00124     count_if_switch(_RAIter, _RAIter, _Predicate, random_access_iterator_tag,
00125             __gnu_parallel::_Parallelism parallelism
00126             = __gnu_parallel::parallel_unbalanced);
00127 
00128   // algobase.h
00129   template<typename _IIter1, typename _IIter2>
00130     bool
00131     equal(_IIter1, _IIter1, _IIter2, __gnu_parallel::sequential_tag);
00132 
00133   template<typename _IIter1, typename _IIter2, typename Predicate>
00134     bool
00135     equal(_IIter1, _IIter1, _IIter2, Predicate,
00136       __gnu_parallel::sequential_tag);
00137 
00138   template<typename _IIter1, typename _IIter2>
00139     bool
00140     equal(_IIter1, _IIter1, _IIter2);
00141 
00142   template<typename _IIter1, typename _IIter2, typename Predicate>
00143     bool
00144     equal(_IIter1, _IIter1, _IIter2, Predicate);
00145 
00146   template<typename _IIter, typename _Tp>
00147     _IIter
00148     find(_IIter, _IIter, const _Tp&, __gnu_parallel::sequential_tag);
00149 
00150   template<typename _IIter, typename _Tp>
00151     _IIter
00152     find(_IIter, _IIter, const _Tp& val);
00153 
00154   template<typename _IIter, typename _Tp, typename _IterTag>
00155     _IIter
00156     find_switch(_IIter, _IIter, const _Tp&, _IterTag);
00157 
00158   template<typename _RAIter, typename _Tp>
00159     _RAIter
00160     find_switch(_RAIter, _RAIter, const _Tp&, random_access_iterator_tag);
00161 
00162   template<typename _IIter, typename _Predicate>
00163     _IIter
00164     find_if(_IIter, _IIter, _Predicate, __gnu_parallel::sequential_tag);
00165 
00166   template<typename _IIter, typename _Predicate>
00167     _IIter
00168     find_if(_IIter, _IIter, _Predicate);
00169 
00170   template<typename _IIter, typename _Predicate, typename _IterTag>
00171     _IIter
00172     find_if_switch(_IIter, _IIter, _Predicate, _IterTag);
00173 
00174   template<typename _RAIter, typename _Predicate>
00175     _RAIter
00176     find_if_switch(_RAIter, _RAIter, _Predicate, random_access_iterator_tag);
00177 
00178   template<typename _IIter, typename _FIter>
00179     _IIter
00180     find_first_of(_IIter, _IIter, _FIter, _FIter,
00181           __gnu_parallel::sequential_tag);
00182 
00183   template<typename _IIter, typename _FIter, typename _BiPredicate>
00184     _IIter
00185     find_first_of(_IIter, _IIter, _FIter, _FIter, _BiPredicate,
00186           __gnu_parallel::sequential_tag);
00187 
00188   template<typename _IIter, typename _FIter, typename _BiPredicate>
00189     _IIter
00190     find_first_of(_IIter, _IIter, _FIter, _FIter, _BiPredicate);
00191 
00192   template<typename _IIter, typename _FIter>
00193     _IIter
00194     find_first_of(_IIter, _IIter, _FIter, _FIter);
00195 
00196   template<typename _IIter, typename _FIter,
00197        typename _IterTag1, typename _IterTag2>
00198     _IIter
00199     find_first_of_switch(_IIter, _IIter, _FIter, _FIter, _IterTag1, _IterTag2);
00200 
00201   template<typename _RAIter, typename _FIter, typename _BiPredicate,
00202        typename _IterTag>
00203     _RAIter
00204     find_first_of_switch(_RAIter, _RAIter, _FIter, _FIter, _BiPredicate,
00205              random_access_iterator_tag, _IterTag);
00206 
00207   template<typename _IIter, typename _FIter, typename _BiPredicate,
00208        typename _IterTag1, typename _IterTag2>
00209     _IIter
00210     find_first_of_switch(_IIter, _IIter, _FIter, _FIter, _BiPredicate,
00211              _IterTag1, _IterTag2);
00212 
00213 
00214   template<typename _IIter, typename _Function>
00215     _Function
00216     for_each(_IIter, _IIter, _Function);
00217 
00218   template<typename _IIter, typename _Function>
00219     _Function
00220     for_each(_IIter, _IIter, _Function, __gnu_parallel::sequential_tag);
00221 
00222   template<typename _Iterator, typename _Function>
00223     _Function
00224     for_each(_Iterator, _Iterator, _Function, __gnu_parallel::_Parallelism);
00225 
00226   template<typename _IIter, typename _Function, typename _IterTag>
00227     _Function
00228     for_each_switch(_IIter, _IIter, _Function, _IterTag);
00229 
00230   template<typename _RAIter, typename _Function>
00231     _Function
00232     for_each_switch(_RAIter, _RAIter, _Function, random_access_iterator_tag, 
00233             __gnu_parallel::_Parallelism  parallelism
00234             = __gnu_parallel::parallel_balanced);
00235 
00236 
00237   template<typename _FIter, typename _Generator>
00238     void
00239     generate(_FIter, _FIter, _Generator);
00240 
00241   template<typename _FIter, typename _Generator>
00242     void
00243     generate(_FIter, _FIter, _Generator, __gnu_parallel::sequential_tag);
00244 
00245   template<typename _FIter, typename _Generator>
00246     void
00247     generate(_FIter, _FIter, _Generator, __gnu_parallel::_Parallelism);
00248 
00249   template<typename _FIter, typename _Generator, typename _IterTag>
00250     void
00251     generate_switch(_FIter, _FIter, _Generator, _IterTag);
00252 
00253   template<typename _RAIter, typename _Generator>
00254     void
00255     generate_switch(_RAIter, _RAIter, _Generator, random_access_iterator_tag, 
00256             __gnu_parallel::_Parallelism parallelism
00257             = __gnu_parallel::parallel_balanced);
00258 
00259   template<typename _OIter, typename _Size, typename _Generator>
00260     _OIter
00261     generate_n(_OIter, _Size, _Generator);
00262 
00263   template<typename _OIter, typename _Size, typename _Generator>
00264     _OIter
00265     generate_n(_OIter, _Size, _Generator, __gnu_parallel::sequential_tag);
00266 
00267   template<typename _OIter, typename _Size, typename _Generator>
00268     _OIter
00269     generate_n(_OIter, _Size, _Generator, __gnu_parallel::_Parallelism);
00270 
00271   template<typename _OIter, typename _Size, typename _Generator,
00272        typename _IterTag>
00273     _OIter
00274     generate_n_switch(_OIter, _Size, _Generator, _IterTag);
00275 
00276   template<typename _RAIter, typename _Size, typename _Generator>
00277     _RAIter
00278     generate_n_switch(_RAIter, _Size, _Generator, random_access_iterator_tag, 
00279               __gnu_parallel::_Parallelism parallelism
00280               = __gnu_parallel::parallel_balanced);
00281 
00282   template<typename _IIter1, typename _IIter2>
00283     bool
00284     lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2,
00285                 __gnu_parallel::sequential_tag);
00286 
00287   template<typename _IIter1, typename _IIter2, typename _Predicate>
00288     bool
00289     lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2, _Predicate,
00290                 __gnu_parallel::sequential_tag);
00291 
00292   template<typename _IIter1, typename _IIter2>
00293     bool
00294     lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2);
00295 
00296   template<typename _IIter1, typename _IIter2, typename _Predicate>
00297     bool
00298     lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2, _Predicate);
00299 
00300   template<typename _IIter1, typename _IIter2,
00301        typename _Predicate, typename _IterTag1, typename _IterTag2>
00302     bool
00303     lexicographical_compare_switch(_IIter1, _IIter1, _IIter2, _IIter2,
00304                    _Predicate, _IterTag1, _IterTag2);
00305 
00306   template<typename _RAIter1, typename _RAIter2, typename _Predicate>
00307     bool
00308     lexicographical_compare_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2,
00309                    _Predicate, random_access_iterator_tag,
00310                    random_access_iterator_tag);
00311 
00312   // algo.h
00313   template<typename _IIter1, typename _IIter2>
00314     pair<_IIter1, _IIter2>
00315     mismatch(_IIter1, _IIter1, _IIter2, __gnu_parallel::sequential_tag);
00316 
00317   template<typename _IIter1, typename _IIter2, typename _Predicate>
00318     pair<_IIter1, _IIter2>
00319     mismatch(_IIter1, _IIter1, _IIter2, _Predicate,
00320          __gnu_parallel::sequential_tag);
00321 
00322   template<typename _IIter1, typename _IIter2>
00323     pair<_IIter1, _IIter2>
00324     mismatch(_IIter1, _IIter1, _IIter2);
00325 
00326   template<typename _IIter1, typename _IIter2, typename _Predicate>
00327     pair<_IIter1, _IIter2>
00328     mismatch(_IIter1, _IIter1, _IIter2, _Predicate);
00329 
00330   template<typename _IIter1, typename _IIter2, typename _Predicate,
00331        typename _IterTag1, typename _IterTag2>
00332     pair<_IIter1, _IIter2>
00333     mismatch_switch(_IIter1, _IIter1, _IIter2, _Predicate,
00334             _IterTag1, _IterTag2);
00335 
00336   template<typename _RAIter1, typename _RAIter2, typename _Predicate>
00337     pair<_RAIter1, _RAIter2>
00338     mismatch_switch(_RAIter1, _RAIter1, _RAIter2, _Predicate,
00339             random_access_iterator_tag, random_access_iterator_tag);
00340 
00341   template<typename _FIter1, typename _FIter2>
00342     _FIter1
00343     search(_FIter1, _FIter1, _FIter2, _FIter2, __gnu_parallel::sequential_tag);
00344 
00345   template<typename _FIter1, typename _FIter2>
00346     _FIter1
00347     search(_FIter1, _FIter1, _FIter2, _FIter2);
00348 
00349   template<typename _FIter1, typename _FIter2, typename _BiPredicate>
00350     _FIter1
00351     search(_FIter1, _FIter1, _FIter2, _FIter2, _BiPredicate,
00352        __gnu_parallel::sequential_tag);
00353 
00354   template<typename _FIter1, typename _FIter2, typename _BiPredicate>
00355     _FIter1
00356     search(_FIter1, _FIter1, _FIter2, _FIter2, _BiPredicate);
00357 
00358   template<typename _RAIter1, typename _RAIter2>
00359     _RAIter1
00360     search_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2,
00361           random_access_iterator_tag, random_access_iterator_tag);
00362 
00363   template<typename _FIter1, typename _FIter2, typename _IterTag1,
00364        typename _IterTag2>
00365     _FIter1
00366     search_switch(_FIter1, _FIter1, _FIter2, _FIter2, _IterTag1, _IterTag2);
00367 
00368   template<typename _RAIter1, typename _RAIter2, typename _BiPredicate>
00369     _RAIter1
00370     search_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2, _BiPredicate,
00371           random_access_iterator_tag, random_access_iterator_tag);
00372 
00373   template<typename _FIter1, typename _FIter2, typename _BiPredicate,
00374        typename _IterTag1, typename _IterTag2>
00375     _FIter1
00376     search_switch(_FIter1, _FIter1, _FIter2, _FIter2, _BiPredicate,
00377           _IterTag1, _IterTag2);
00378 
00379   template<typename _FIter, typename _Integer, typename _Tp>
00380     _FIter
00381     search_n(_FIter, _FIter, _Integer, const _Tp&,
00382          __gnu_parallel::sequential_tag);
00383 
00384   template<typename _FIter, typename _Integer, typename _Tp,
00385        typename _BiPredicate>
00386     _FIter
00387     search_n(_FIter, _FIter, _Integer, const _Tp&, _BiPredicate,
00388          __gnu_parallel::sequential_tag);
00389     
00390   template<typename _FIter, typename _Integer, typename _Tp>
00391     _FIter
00392     search_n(_FIter, _FIter, _Integer, const _Tp&);
00393 
00394   template<typename _FIter, typename _Integer, typename _Tp,
00395        typename _BiPredicate>
00396     _FIter
00397     search_n(_FIter, _FIter, _Integer, const _Tp&, _BiPredicate);
00398 
00399   template<typename _RAIter, typename _Integer, typename _Tp,
00400        typename _BiPredicate>
00401     _RAIter
00402     search_n_switch(_RAIter, _RAIter, _Integer, const _Tp&,
00403             _BiPredicate, random_access_iterator_tag);
00404 
00405   template<typename _FIter, typename _Integer, typename _Tp,
00406        typename _BiPredicate, typename _IterTag>
00407     _FIter
00408     search_n_switch(_FIter, _FIter, _Integer, const _Tp&,
00409             _BiPredicate, _IterTag);
00410 
00411 
00412   template<typename _IIter, typename _OIter, typename UnaryOperation>
00413     _OIter
00414     transform(_IIter, _IIter, _OIter, UnaryOperation);
00415 
00416   template<typename _IIter, typename _OIter, typename UnaryOperation>
00417     _OIter
00418     transform(_IIter, _IIter, _OIter, UnaryOperation, 
00419           __gnu_parallel::sequential_tag);
00420 
00421   template<typename _IIter, typename _OIter, typename UnaryOperation>
00422     _OIter
00423     transform(_IIter, _IIter, _OIter, UnaryOperation, 
00424           __gnu_parallel::_Parallelism);
00425 
00426   template<typename _IIter, typename _OIter, typename UnaryOperation,
00427        typename _IterTag1, typename _IterTag2>
00428     _OIter
00429     transform1_switch(_IIter, _IIter, _OIter, UnaryOperation, 
00430               _IterTag1, _IterTag2);
00431     
00432 
00433   template<typename _RAIIter, typename _RAOIter, typename UnaryOperation>
00434     _RAOIter
00435     transform1_switch(_RAIIter, _RAIIter, _RAOIter, UnaryOperation, 
00436               random_access_iterator_tag, random_access_iterator_tag, 
00437               __gnu_parallel::_Parallelism parallelism
00438               = __gnu_parallel::parallel_balanced);
00439 
00440 
00441   template<typename _IIter1, typename _IIter2, typename _OIter,
00442        typename _BiOperation>
00443     _OIter
00444     transform(_IIter1, _IIter1, _IIter2, _OIter, _BiOperation);
00445 
00446   template<typename _IIter1, typename _IIter2, typename _OIter,
00447        typename _BiOperation>
00448     _OIter
00449     transform(_IIter1, _IIter1, _IIter2, _OIter, _BiOperation, 
00450           __gnu_parallel::sequential_tag);
00451 
00452   template<typename _IIter1, typename _IIter2, typename _OIter,
00453        typename _BiOperation>
00454     _OIter
00455     transform(_IIter1, _IIter1, _IIter2, _OIter, _BiOperation, 
00456           __gnu_parallel::_Parallelism);
00457 
00458   template<typename _RAIter1, typename _RAIter2, typename _RAIter3,
00459        typename _BiOperation>
00460     _RAIter3
00461     transform2_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter3, _BiOperation, 
00462               random_access_iterator_tag, random_access_iterator_tag, 
00463               random_access_iterator_tag,
00464               __gnu_parallel::_Parallelism parallelism
00465               = __gnu_parallel::parallel_balanced);
00466 
00467   template<typename _IIter1, typename _IIter2, typename _OIter,
00468        typename _BiOperation, typename _Tag1,
00469        typename _Tag2, typename _Tag3>
00470     _OIter
00471     transform2_switch(_IIter1, _IIter1, _IIter2, _OIter, _BiOperation, 
00472               _Tag1, _Tag2, _Tag3);
00473 
00474 
00475   template<typename _FIter, typename _Tp>
00476     void
00477     replace(_FIter, _FIter, const _Tp&, const _Tp&);
00478 
00479   template<typename _FIter, typename _Tp>
00480     void
00481     replace(_FIter, _FIter, const _Tp&, const _Tp&, 
00482         __gnu_parallel::sequential_tag);
00483 
00484   template<typename _FIter, typename _Tp>
00485     void
00486     replace(_FIter, _FIter, const _Tp&, const _Tp&,
00487         __gnu_parallel::_Parallelism);
00488 
00489   template<typename _FIter, typename _Tp, typename _IterTag>
00490     void
00491     replace_switch(_FIter, _FIter, const _Tp&, const _Tp&, _IterTag);
00492 
00493   template<typename _RAIter, typename _Tp>
00494     void
00495     replace_switch(_RAIter, _RAIter, const _Tp&, const _Tp&, 
00496            random_access_iterator_tag, __gnu_parallel::_Parallelism);
00497 
00498 
00499   template<typename _FIter, typename _Predicate, typename _Tp>
00500     void
00501     replace_if(_FIter, _FIter, _Predicate, const _Tp&);
00502 
00503   template<typename _FIter, typename _Predicate, typename _Tp>
00504     void
00505     replace_if(_FIter, _FIter, _Predicate, const _Tp&,
00506            __gnu_parallel::sequential_tag);
00507 
00508   template<typename _FIter, typename _Predicate, typename _Tp>
00509     void
00510     replace_if(_FIter, _FIter, _Predicate, const _Tp&,
00511            __gnu_parallel::_Parallelism);
00512 
00513   template<typename _FIter, typename _Predicate, typename _Tp,
00514        typename _IterTag>
00515     void
00516     replace_if_switch(_FIter, _FIter, _Predicate, const _Tp&, _IterTag);
00517  
00518   template<typename _RAIter, typename _Predicate, typename _Tp>
00519     void
00520     replace_if_switch(_RAIter, _RAIter, _Predicate, const _Tp&,
00521               random_access_iterator_tag,
00522               __gnu_parallel::_Parallelism);
00523 
00524 
00525   template<typename _FIter>
00526     _FIter
00527     max_element(_FIter, _FIter);
00528 
00529   template<typename _FIter>
00530     _FIter
00531     max_element(_FIter, _FIter, __gnu_parallel::sequential_tag);
00532 
00533   template<typename _FIter>
00534     _FIter
00535     max_element(_FIter, _FIter, __gnu_parallel::_Parallelism);
00536 
00537   template<typename _FIter, typename _Compare>
00538     _FIter
00539     max_element(_FIter, _FIter, _Compare);
00540 
00541   template<typename _FIter, typename _Compare>
00542     _FIter
00543     max_element(_FIter, _FIter, _Compare, __gnu_parallel::sequential_tag);
00544 
00545   template<typename _FIter, typename _Compare>
00546     _FIter
00547     max_element(_FIter, _FIter, _Compare, __gnu_parallel::_Parallelism);
00548 
00549   template<typename _FIter, typename _Compare, typename _IterTag>
00550     _FIter
00551     max_element_switch(_FIter, _FIter, _Compare, _IterTag);
00552 
00553   template<typename _RAIter, typename _Compare>
00554     _RAIter
00555     max_element_switch(_RAIter, _RAIter, _Compare, random_access_iterator_tag, 
00556                __gnu_parallel::_Parallelism parallelism
00557                = __gnu_parallel::parallel_balanced);
00558 
00559 
00560   template<typename _IIter1, typename _IIter2, typename _OIter>
00561     _OIter
00562     merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, 
00563       __gnu_parallel::sequential_tag);
00564 
00565   template<typename _IIter1, typename _IIter2, typename _OIter,
00566        typename _Compare>
00567     _OIter
00568     merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare, 
00569       __gnu_parallel::sequential_tag);
00570 
00571   template<typename _IIter1, typename _IIter2, typename _OIter,
00572        typename _Compare>
00573     _OIter
00574     merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
00575 
00576   template<typename _IIter1, typename _IIter2, typename _OIter>
00577     _OIter
00578     merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
00579 
00580   template<typename _IIter1, typename _IIter2, typename _OIter,
00581        typename _Compare, typename _IterTag1, typename _IterTag2,
00582        typename _IterTag3>
00583     _OIter
00584     merge_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare, 
00585          _IterTag1, _IterTag2, _IterTag3);
00586 
00587   template<typename _IIter1, typename _IIter2, typename _OIter,
00588        typename _Compare>
00589     _OIter
00590     merge_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare, 
00591          random_access_iterator_tag, random_access_iterator_tag, 
00592          random_access_iterator_tag);
00593 
00594 
00595   template<typename _FIter>
00596     _FIter
00597     min_element(_FIter, _FIter);
00598 
00599   template<typename _FIter>
00600     _FIter
00601     min_element(_FIter, _FIter, __gnu_parallel::sequential_tag);
00602 
00603   template<typename _FIter>
00604     _FIter
00605     min_element(_FIter, _FIter, __gnu_parallel::_Parallelism parallelism_tag);
00606 
00607   template<typename _FIter, typename _Compare>
00608     _FIter
00609     min_element(_FIter, _FIter, _Compare);
00610 
00611   template<typename _FIter, typename _Compare>
00612     _FIter
00613     min_element(_FIter, _FIter, _Compare, __gnu_parallel::sequential_tag);
00614 
00615   template<typename _FIter, typename _Compare>
00616     _FIter
00617     min_element(_FIter, _FIter, _Compare, __gnu_parallel::_Parallelism);
00618 
00619   template<typename _FIter, typename _Compare, typename _IterTag>
00620     _FIter
00621     min_element_switch(_FIter, _FIter, _Compare, _IterTag);
00622 
00623   template<typename _RAIter, typename _Compare>
00624     _RAIter
00625     min_element_switch(_RAIter, _RAIter, _Compare, random_access_iterator_tag, 
00626                __gnu_parallel::_Parallelism parallelism
00627                = __gnu_parallel::parallel_balanced);
00628 
00629   template<typename _RAIter>
00630     void
00631     nth_element(_RAIter, _RAIter, _RAIter, __gnu_parallel::sequential_tag);
00632 
00633   template<typename _RAIter, typename _Compare>
00634     void
00635     nth_element(_RAIter, _RAIter, _RAIter, _Compare,
00636         __gnu_parallel::sequential_tag);
00637 
00638   template<typename _RAIter, typename _Compare>
00639     void
00640     nth_element(_RAIter, _RAIter, _RAIter, _Compare);
00641 
00642   template<typename _RAIter>
00643     void
00644     nth_element(_RAIter, _RAIter, _RAIter);
00645 
00646   template<typename _RAIter, typename _Compare>
00647     void
00648     partial_sort(_RAIter, _RAIter, _RAIter, _Compare,
00649          __gnu_parallel::sequential_tag);
00650 
00651   template<typename _RAIter>
00652     void
00653     partial_sort(_RAIter, _RAIter, _RAIter, __gnu_parallel::sequential_tag);
00654 
00655   template<typename _RAIter, typename _Compare>
00656     void
00657     partial_sort(_RAIter, _RAIter, _RAIter, _Compare);
00658 
00659   template<typename _RAIter>
00660     void
00661     partial_sort(_RAIter, _RAIter, _RAIter);
00662 
00663   template<typename _FIter, typename Predicate>
00664     _FIter
00665     partition(_FIter, _FIter, Predicate, __gnu_parallel::sequential_tag);
00666     
00667   template<typename _FIter, typename Predicate>
00668     _FIter
00669     partition(_FIter, _FIter, Predicate);
00670 
00671   template<typename _FIter, typename Predicate, typename _IterTag>
00672     _FIter
00673     partition_switch(_FIter, _FIter, Predicate, _IterTag);
00674     
00675   template<typename _RAIter, typename Predicate>
00676     _RAIter
00677     partition_switch(_RAIter, _RAIter, Predicate, random_access_iterator_tag);
00678 
00679   template<typename _RAIter>
00680     void
00681     random_shuffle(_RAIter, _RAIter, __gnu_parallel::sequential_tag);
00682 
00683   template<typename _RAIter, typename _RandomNumberGenerator>
00684     void
00685     random_shuffle(_RAIter, _RAIter, _RandomNumberGenerator&,
00686            __gnu_parallel::sequential_tag);
00687 
00688   template<typename _RAIter>
00689     void
00690     random_shuffle(_RAIter, _RAIter);
00691 
00692   template<typename _RAIter, typename _RandomNumberGenerator>
00693     void
00694     random_shuffle(_RAIter, _RAIter, _RandomNumberGenerator&);
00695 
00696   template<typename _IIter1, typename _IIter2, typename _OIter>
00697     _OIter
00698     set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
00699         __gnu_parallel::sequential_tag);
00700 
00701   template<typename _IIter1, typename _IIter2, typename _OIter,
00702        typename Predicate>
00703     _OIter
00704     set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, Predicate,
00705           __gnu_parallel::sequential_tag);
00706 
00707   template<typename _IIter1, typename _IIter2, typename _OIter>
00708     _OIter
00709     set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
00710 
00711   template<typename _IIter1, typename _IIter2, typename _OIter,
00712        typename _Predicate>
00713     _OIter 
00714     set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate);
00715 
00716   template<typename _IIter1, typename _IIter2, typename _Predicate,
00717        typename _OIter, typename _IterTag1, typename _IterTag2,
00718        typename _IterTag3>
00719     _OIter
00720     set_union_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
00721              _Predicate, _IterTag1, _IterTag2, _IterTag3);
00722 
00723   template<typename _RAIter1, typename _RAIter2, typename _Output_RAIter,
00724        typename _Predicate>
00725     _Output_RAIter
00726     set_union_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2, _Output_RAIter,
00727              _Predicate, random_access_iterator_tag,
00728              random_access_iterator_tag, random_access_iterator_tag);
00729 
00730   template<typename _IIter1, typename _IIter2, typename _OIter>
00731     _OIter
00732     set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
00733              __gnu_parallel::sequential_tag);
00734 
00735   template<typename _IIter1, typename _IIter2, typename _OIter,
00736        typename _Predicate>
00737     _OIter
00738     set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate,
00739              __gnu_parallel::sequential_tag);
00740 
00741   template<typename _IIter1, typename _IIter2, typename _OIter>
00742     _OIter
00743     set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
00744 
00745   template<typename _IIter1, typename _IIter2, typename _OIter,
00746        typename _Predicate>
00747     _OIter 
00748     set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate);
00749 
00750   template<typename _IIter1, typename _IIter2, typename _Predicate,
00751        typename _OIter, typename _IterTag1, typename _IterTag2,
00752        typename _IterTag3>
00753     _OIter
00754     set_intersection_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
00755                 _Predicate, _IterTag1, _IterTag2, _IterTag3);
00756 
00757   template<typename _RAIter1, typename _RAIter2, typename _Output_RAIter,
00758        typename _Predicate>
00759     _Output_RAIter
00760     set_intersection_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2,
00761                 _Output_RAIter, _Predicate,
00762                 random_access_iterator_tag,
00763                 random_access_iterator_tag,
00764                 random_access_iterator_tag);
00765 
00766   template<typename _IIter1, typename _IIter2, typename _OIter>
00767     _OIter
00768     set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
00769                  __gnu_parallel::sequential_tag);
00770 
00771   template<typename _IIter1, typename _IIter2, typename _OIter,
00772        typename _Predicate>
00773     _OIter
00774     set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
00775                  _Predicate, __gnu_parallel::sequential_tag);
00776 
00777   template<typename _IIter1, typename _IIter2, typename _OIter>
00778     _OIter 
00779     set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
00780 
00781   template<typename _IIter1, typename _IIter2, typename _OIter,
00782        typename _Predicate>
00783     _OIter 
00784     set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
00785                  _Predicate);
00786 
00787   template<typename _IIter1, typename _IIter2, typename _Predicate,
00788        typename _OIter, typename _IterTag1, typename _IterTag2,
00789        typename _IterTag3>
00790     _OIter
00791     set_symmetric_difference_switch(_IIter1, _IIter1, _IIter2, _IIter2,
00792                     _OIter, _Predicate, _IterTag1, _IterTag2,
00793                     _IterTag3);
00794 
00795   template<typename _RAIter1, typename _RAIter2, typename _Output_RAIter,
00796        typename _Predicate>
00797     _Output_RAIter
00798     set_symmetric_difference_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2,
00799                     _Output_RAIter, _Predicate,
00800                     random_access_iterator_tag,
00801                     random_access_iterator_tag,
00802                     random_access_iterator_tag);
00803 
00804 
00805   template<typename _IIter1, typename _IIter2, typename _OIter>
00806     _OIter
00807     set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
00808            __gnu_parallel::sequential_tag);
00809 
00810   template<typename _IIter1, typename _IIter2, typename _OIter,
00811        typename _Predicate>
00812     _OIter
00813     set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate,
00814            __gnu_parallel::sequential_tag);
00815 
00816   template<typename _IIter1, typename _IIter2, typename _OIter>
00817     _OIter
00818     set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
00819 
00820   template<typename _IIter1, typename _IIter2, typename _OIter,
00821        typename _Predicate>
00822     _OIter
00823     set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate);
00824 
00825   template<typename _IIter1, typename _IIter2, typename _Predicate,
00826        typename _OIter, typename _IterTag1, typename _IterTag2,
00827        typename _IterTag3>
00828     _OIter
00829     set_difference_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
00830               _Predicate, _IterTag1, _IterTag2, _IterTag3);
00831 
00832   template<typename _RAIter1, typename _RAIter2, typename _Output_RAIter,
00833        typename _Predicate>
00834     _Output_RAIter
00835     set_difference_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2,
00836               _Output_RAIter, _Predicate,
00837               random_access_iterator_tag,
00838               random_access_iterator_tag,
00839               random_access_iterator_tag);
00840 
00841 
00842   template<typename _RAIter>
00843     void
00844     sort(_RAIter, _RAIter, __gnu_parallel::sequential_tag);
00845 
00846   template<typename _RAIter, typename _Compare>
00847     void
00848     sort(_RAIter, _RAIter, _Compare, __gnu_parallel::sequential_tag);
00849 
00850   template<typename _RAIter>
00851     void
00852     sort(_RAIter, _RAIter);
00853 
00854   template<typename _RAIter, typename _Compare>
00855     void
00856     sort(_RAIter, _RAIter, _Compare);
00857 
00858   template<typename _RAIter>
00859     void
00860     stable_sort(_RAIter, _RAIter, __gnu_parallel::sequential_tag);
00861 
00862   template<typename _RAIter, typename _Compare>
00863     void
00864     stable_sort(_RAIter, _RAIter, _Compare, __gnu_parallel::sequential_tag);
00865 
00866   template<typename _RAIter>
00867     void
00868     stable_sort(_RAIter, _RAIter);
00869 
00870   template<typename _RAIter, typename _Compare>
00871     void
00872     stable_sort(_RAIter, _RAIter, _Compare);
00873 
00874   template<typename _IIter, typename _OIter>
00875     _OIter
00876     unique_copy(_IIter, _IIter, _OIter, __gnu_parallel::sequential_tag);
00877 
00878   template<typename _IIter, typename _OIter, typename _Predicate>
00879     _OIter
00880     unique_copy(_IIter, _IIter, _OIter, _Predicate,
00881         __gnu_parallel::sequential_tag);
00882 
00883   template<typename _IIter, typename _OIter>
00884     _OIter
00885     unique_copy(_IIter, _IIter, _OIter);
00886 
00887   template<typename _IIter, typename _OIter, typename _Predicate>
00888     _OIter
00889     unique_copy(_IIter, _IIter, _OIter, _Predicate);
00890 
00891   template<typename _IIter, typename _OIter, typename _Predicate,
00892        typename _IterTag1, typename _IterTag2>
00893     _OIter
00894     unique_copy_switch(_IIter, _IIter, _OIter, _Predicate,
00895                _IterTag1, _IterTag2);
00896 
00897   template<typename _RAIter, typename _RandomAccess_OIter, typename _Predicate>
00898     _RandomAccess_OIter
00899     unique_copy_switch(_RAIter, _RAIter, _RandomAccess_OIter, _Predicate,
00900                random_access_iterator_tag, random_access_iterator_tag);
00901 } // end namespace __parallel
00902 } // end namespace std
00903 
00904 #endif

Generated on Sat Dec 12 09:40:08 2009 for libstdc++ by  doxygen 1.5.6