Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
6554 serge 1
//  Forward declarations -*- C++ -*-
2
 
3
// Copyright (C) 2007-2015 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
// .
24
 
25
/** @file parallel/algorithmfwd.h
26
 *  This file is a GNU parallel extension to the Standard C++ Library.
27
 */
28
 
29
#ifndef _GLIBCXX_PARALLEL_ALGORITHMFWD_H
30
#define _GLIBCXX_PARALLEL_ALGORITHMFWD_H 1
31
 
32
#pragma GCC system_header
33
 
34
#include 
35
#include 
36
 
37
namespace std _GLIBCXX_VISIBILITY(default)
38
{
39
namespace __parallel
40
{
41
  template
42
    _FIter
43
    adjacent_find(_FIter, _FIter);
44
 
45
  template
46
    _FIter
47
    adjacent_find(_FIter, _FIter, __gnu_parallel::sequential_tag);
48
 
49
  template
50
    _FIter
51
    __adjacent_find_switch(_FIter, _FIter, _IterTag);
52
 
53
  template
54
    _RAIter
55
    __adjacent_find_switch(_RAIter, _RAIter, random_access_iterator_tag);
56
 
57
 
58
  template
59
    _FIter
60
    adjacent_find(_FIter, _FIter, _BiPredicate);
61
 
62
  template
63
    _FIter
64
    adjacent_find(_FIter, _FIter, _BiPredicate,
65
                  __gnu_parallel::sequential_tag);
66
 
67
  template
68
    _FIter
69
    __adjacent_find_switch(_FIter, _FIter, _BiPredicate, _IterTag);
70
 
71
  template
72
    _RAIter
73
    __adjacent_find_switch(_RAIter, _RAIter, _BiPredicate,
74
                         random_access_iterator_tag);
75
 
76
 
77
  template
78
    typename iterator_traits<_IIter>::difference_type
79
    count(_IIter, _IIter, const _Tp&);
80
 
81
  template
82
    typename iterator_traits<_IIter>::difference_type
83
    count(_IIter, _IIter, const _Tp&, __gnu_parallel::sequential_tag);
84
 
85
  template
86
    typename iterator_traits<_IIter>::difference_type
87
    count(_IIter, _IIter, const _Tp&, __gnu_parallel::_Parallelism);
88
 
89
  template
90
    typename iterator_traits<_IIter>::difference_type
91
    __count_switch(_IIter, _IIter, const _Tp&, _IterTag);
92
 
93
  template
94
    typename iterator_traits<_RAIter>::difference_type
95
    __count_switch(_RAIter, _RAIter, const _Tp&, random_access_iterator_tag,
96
                 __gnu_parallel::_Parallelism __parallelism
97
                 = __gnu_parallel::parallel_unbalanced);
98
 
99
 
100
  template
101
    typename iterator_traits<_IIter>::difference_type
102
    count_if(_IIter, _IIter, _Predicate);
103
 
104
  template
105
    typename iterator_traits<_IIter>::difference_type
106
    count_if(_IIter, _IIter, _Predicate, __gnu_parallel::sequential_tag);
107
 
108
  template
109
    typename iterator_traits<_IIter>::difference_type
110
    count_if(_IIter, _IIter, _Predicate, __gnu_parallel::_Parallelism);
111
 
112
  template
113
    typename iterator_traits<_IIter>::difference_type
114
    __count_if_switch(_IIter, _IIter, _Predicate, _IterTag);
115
 
116
  template
117
    typename iterator_traits<_RAIter>::difference_type
118
    __count_if_switch(_RAIter, _RAIter, _Predicate, random_access_iterator_tag,
119
                    __gnu_parallel::_Parallelism __parallelism
120
                    = __gnu_parallel::parallel_unbalanced);
121
 
122
  // algobase.h
123
  template
124
    bool
125
    equal(_IIter1, _IIter1, _IIter2, __gnu_parallel::sequential_tag);
126
 
127
  template
128
    bool
129
    equal(_IIter1, _IIter1, _IIter2, _Predicate,
130
          __gnu_parallel::sequential_tag);
131
 
132
  template
133
    bool
134
    equal(_IIter1, _IIter1, _IIter2);
135
 
136
  template
137
    bool
138
    equal(_IIter1, _IIter1, _IIter2, _Predicate);
139
 
140
  template
141
    _IIter
142
    find(_IIter, _IIter, const _Tp&, __gnu_parallel::sequential_tag);
143
 
144
  template
145
    _IIter
146
    find(_IIter, _IIter, const _Tp& __val);
147
 
148
  template
149
    _IIter
150
    __find_switch(_IIter, _IIter, const _Tp&, _IterTag);
151
 
152
  template
153
    _RAIter
154
    __find_switch(_RAIter, _RAIter, const _Tp&, random_access_iterator_tag);
155
 
156
  template
157
    _IIter
158
    find_if(_IIter, _IIter, _Predicate, __gnu_parallel::sequential_tag);
159
 
160
  template
161
    _IIter
162
    find_if(_IIter, _IIter, _Predicate);
163
 
164
  template
165
    _IIter
166
    __find_if_switch(_IIter, _IIter, _Predicate, _IterTag);
167
 
168
  template
169
    _RAIter
170
    __find_if_switch(_RAIter, _RAIter, _Predicate, random_access_iterator_tag);
171
 
172
  template
173
    _IIter
174
    find_first_of(_IIter, _IIter, _FIter, _FIter,
175
                  __gnu_parallel::sequential_tag);
176
 
177
  template
178
    _IIter
179
    find_first_of(_IIter, _IIter, _FIter, _FIter, _BiPredicate,
180
                  __gnu_parallel::sequential_tag);
181
 
182
  template
183
    _IIter
184
    find_first_of(_IIter, _IIter, _FIter, _FIter, _BiPredicate);
185
 
186
  template
187
    _IIter
188
    find_first_of(_IIter, _IIter, _FIter, _FIter);
189
 
190
  template
191
           typename _IterTag1, typename _IterTag2>
192
    _IIter
193
    __find_first_of_switch(
194
      _IIter, _IIter, _FIter, _FIter, _IterTag1, _IterTag2);
195
 
196
  template
197
           typename _IterTag>
198
    _RAIter
199
    __find_first_of_switch(_RAIter, _RAIter, _FIter, _FIter, _BiPredicate,
200
                         random_access_iterator_tag, _IterTag);
201
 
202
  template
203
           typename _IterTag1, typename _IterTag2>
204
    _IIter
205
    __find_first_of_switch(_IIter, _IIter, _FIter, _FIter, _BiPredicate,
206
                         _IterTag1, _IterTag2);
207
 
208
 
209
  template
210
    _Function
211
    for_each(_IIter, _IIter, _Function);
212
 
213
  template
214
    _Function
215
    for_each(_IIter, _IIter, _Function, __gnu_parallel::sequential_tag);
216
 
217
  template
218
    _Function
219
    for_each(_Iterator, _Iterator, _Function, __gnu_parallel::_Parallelism);
220
 
221
  template
222
    _Function
223
    __for_each_switch(_IIter, _IIter, _Function, _IterTag);
224
 
225
  template
226
    _Function
227
    __for_each_switch(_RAIter, _RAIter, _Function, random_access_iterator_tag,
228
                    __gnu_parallel::_Parallelism  __parallelism
229
                    = __gnu_parallel::parallel_balanced);
230
 
231
 
232
  template
233
    void
234
    generate(_FIter, _FIter, _Generator);
235
 
236
  template
237
    void
238
    generate(_FIter, _FIter, _Generator, __gnu_parallel::sequential_tag);
239
 
240
  template
241
    void
242
    generate(_FIter, _FIter, _Generator, __gnu_parallel::_Parallelism);
243
 
244
  template
245
    void
246
    __generate_switch(_FIter, _FIter, _Generator, _IterTag);
247
 
248
  template
249
    void
250
    __generate_switch(_RAIter, _RAIter, _Generator, random_access_iterator_tag,
251
                    __gnu_parallel::_Parallelism __parallelism
252
                    = __gnu_parallel::parallel_balanced);
253
 
254
  template
255
    _OIter
256
    generate_n(_OIter, _Size, _Generator);
257
 
258
  template
259
    _OIter
260
    generate_n(_OIter, _Size, _Generator, __gnu_parallel::sequential_tag);
261
 
262
  template
263
    _OIter
264
    generate_n(_OIter, _Size, _Generator, __gnu_parallel::_Parallelism);
265
 
266
  template
267
           typename _IterTag>
268
    _OIter
269
    __generate_n_switch(_OIter, _Size, _Generator, _IterTag);
270
 
271
  template
272
    _RAIter
273
    __generate_n_switch(_RAIter, _Size, _Generator, random_access_iterator_tag,
274
                      __gnu_parallel::_Parallelism __parallelism
275
                      = __gnu_parallel::parallel_balanced);
276
 
277
  template
278
    bool
279
    lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2,
280
                            __gnu_parallel::sequential_tag);
281
 
282
  template
283
    bool
284
    lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2, _Predicate,
285
                            __gnu_parallel::sequential_tag);
286
 
287
  template
288
    bool
289
    lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2);
290
 
291
  template
292
    bool
293
    lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2, _Predicate);
294
 
295
  template
296
           typename _Predicate, typename _IterTag1, typename _IterTag2>
297
    bool
298
    __lexicographical_compare_switch(_IIter1, _IIter1, _IIter2, _IIter2,
299
                                   _Predicate, _IterTag1, _IterTag2);
300
 
301
  template
302
    bool
303
    __lexicographical_compare_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2,
304
                                   _Predicate, random_access_iterator_tag,
305
                                   random_access_iterator_tag);
306
 
307
  // algo.h
308
  template
309
    pair<_IIter1, _IIter2>
310
    mismatch(_IIter1, _IIter1, _IIter2, __gnu_parallel::sequential_tag);
311
 
312
  template
313
    pair<_IIter1, _IIter2>
314
    mismatch(_IIter1, _IIter1, _IIter2, _Predicate,
315
             __gnu_parallel::sequential_tag);
316
 
317
  template
318
    pair<_IIter1, _IIter2>
319
    mismatch(_IIter1, _IIter1, _IIter2);
320
 
321
  template
322
    pair<_IIter1, _IIter2>
323
    mismatch(_IIter1, _IIter1, _IIter2, _Predicate);
324
 
325
  template
326
           typename _IterTag1, typename _IterTag2>
327
    pair<_IIter1, _IIter2>
328
    __mismatch_switch(_IIter1, _IIter1, _IIter2, _Predicate,
329
                    _IterTag1, _IterTag2);
330
 
331
  template
332
    pair<_RAIter1, _RAIter2>
333
    __mismatch_switch(_RAIter1, _RAIter1, _RAIter2, _Predicate,
334
                    random_access_iterator_tag, random_access_iterator_tag);
335
 
336
  template
337
    _FIter1
338
    search(_FIter1, _FIter1, _FIter2, _FIter2, __gnu_parallel::sequential_tag);
339
 
340
  template
341
    _FIter1
342
    search(_FIter1, _FIter1, _FIter2, _FIter2);
343
 
344
  template
345
    _FIter1
346
    search(_FIter1, _FIter1, _FIter2, _FIter2, _BiPredicate,
347
           __gnu_parallel::sequential_tag);
348
 
349
  template
350
    _FIter1
351
    search(_FIter1, _FIter1, _FIter2, _FIter2, _BiPredicate);
352
 
353
  template
354
    _RAIter1
355
    __search_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2,
356
                  random_access_iterator_tag, random_access_iterator_tag);
357
 
358
  template
359
           typename _IterTag2>
360
    _FIter1
361
    __search_switch(_FIter1, _FIter1, _FIter2, _FIter2, _IterTag1, _IterTag2);
362
 
363
  template
364
    _RAIter1
365
    __search_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2, _BiPredicate,
366
                  random_access_iterator_tag, random_access_iterator_tag);
367
 
368
  template
369
           typename _IterTag1, typename _IterTag2>
370
    _FIter1
371
    __search_switch(_FIter1, _FIter1, _FIter2, _FIter2, _BiPredicate,
372
                  _IterTag1, _IterTag2);
373
 
374
  template
375
    _FIter
376
    search_n(_FIter, _FIter, _Integer, const _Tp&,
377
             __gnu_parallel::sequential_tag);
378
 
379
  template
380
           typename _BiPredicate>
381
    _FIter
382
    search_n(_FIter, _FIter, _Integer, const _Tp&, _BiPredicate,
383
             __gnu_parallel::sequential_tag);
384
 
385
  template
386
    _FIter
387
    search_n(_FIter, _FIter, _Integer, const _Tp&);
388
 
389
  template
390
           typename _BiPredicate>
391
    _FIter
392
    search_n(_FIter, _FIter, _Integer, const _Tp&, _BiPredicate);
393
 
394
  template
395
           typename _BiPredicate>
396
    _RAIter
397
    __search_n_switch(_RAIter, _RAIter, _Integer, const _Tp&,
398
                    _BiPredicate, random_access_iterator_tag);
399
 
400
  template
401
           typename _BiPredicate, typename _IterTag>
402
    _FIter
403
    __search_n_switch(_FIter, _FIter, _Integer, const _Tp&,
404
                    _BiPredicate, _IterTag);
405
 
406
 
407
  template
408
    _OIter
409
    transform(_IIter, _IIter, _OIter, _UnaryOperation);
410
 
411
  template
412
    _OIter
413
    transform(_IIter, _IIter, _OIter, _UnaryOperation,
414
              __gnu_parallel::sequential_tag);
415
 
416
  template
417
    _OIter
418
    transform(_IIter, _IIter, _OIter, _UnaryOperation,
419
              __gnu_parallel::_Parallelism);
420
 
421
  template
422
           typename _IterTag1, typename _IterTag2>
423
    _OIter
424
    __transform1_switch(_IIter, _IIter, _OIter, _UnaryOperation,
425
                      _IterTag1, _IterTag2);
426
 
427
 
428
  template
429
    _RAOIter
430
    __transform1_switch(_RAIIter, _RAIIter, _RAOIter, _UnaryOperation,
431
                      random_access_iterator_tag, random_access_iterator_tag,
432
                      __gnu_parallel::_Parallelism __parallelism
433
                      = __gnu_parallel::parallel_balanced);
434
 
435
 
436
  template
437
           typename _BiOperation>
438
    _OIter
439
    transform(_IIter1, _IIter1, _IIter2, _OIter, _BiOperation);
440
 
441
  template
442
           typename _BiOperation>
443
    _OIter
444
    transform(_IIter1, _IIter1, _IIter2, _OIter, _BiOperation,
445
              __gnu_parallel::sequential_tag);
446
 
447
  template
448
           typename _BiOperation>
449
    _OIter
450
    transform(_IIter1, _IIter1, _IIter2, _OIter, _BiOperation,
451
              __gnu_parallel::_Parallelism);
452
 
453
  template
454
           typename _BiOperation>
455
    _RAIter3
456
    __transform2_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter3, _BiOperation,
457
                      random_access_iterator_tag, random_access_iterator_tag,
458
                      random_access_iterator_tag,
459
                      __gnu_parallel::_Parallelism __parallelism
460
                      = __gnu_parallel::parallel_balanced);
461
 
462
  template
463
           typename _BiOperation, typename _Tag1,
464
           typename _Tag2, typename _Tag3>
465
    _OIter
466
    __transform2_switch(_IIter1, _IIter1, _IIter2, _OIter, _BiOperation,
467
                      _Tag1, _Tag2, _Tag3);
468
 
469
 
470
  template
471
    void
472
    replace(_FIter, _FIter, const _Tp&, const _Tp&);
473
 
474
  template
475
    void
476
    replace(_FIter, _FIter, const _Tp&, const _Tp&,
477
            __gnu_parallel::sequential_tag);
478
 
479
  template
480
    void
481
    replace(_FIter, _FIter, const _Tp&, const _Tp&,
482
            __gnu_parallel::_Parallelism);
483
 
484
  template
485
    void
486
    __replace_switch(_FIter, _FIter, const _Tp&, const _Tp&, _IterTag);
487
 
488
  template
489
    void
490
    __replace_switch(_RAIter, _RAIter, const _Tp&, const _Tp&,
491
                   random_access_iterator_tag, __gnu_parallel::_Parallelism);
492
 
493
 
494
  template
495
    void
496
    replace_if(_FIter, _FIter, _Predicate, const _Tp&);
497
 
498
  template
499
    void
500
    replace_if(_FIter, _FIter, _Predicate, const _Tp&,
501
               __gnu_parallel::sequential_tag);
502
 
503
  template
504
    void
505
    replace_if(_FIter, _FIter, _Predicate, const _Tp&,
506
               __gnu_parallel::_Parallelism);
507
 
508
  template
509
           typename _IterTag>
510
    void
511
    __replace_if_switch(_FIter, _FIter, _Predicate, const _Tp&, _IterTag);
512
 
513
  template
514
    void
515
    __replace_if_switch(_RAIter, _RAIter, _Predicate, const _Tp&,
516
                      random_access_iterator_tag,
517
                      __gnu_parallel::_Parallelism);
518
 
519
 
520
  template
521
    _FIter
522
    max_element(_FIter, _FIter);
523
 
524
  template
525
    _FIter
526
    max_element(_FIter, _FIter, __gnu_parallel::sequential_tag);
527
 
528
  template
529
    _FIter
530
    max_element(_FIter, _FIter, __gnu_parallel::_Parallelism);
531
 
532
  template
533
    _FIter
534
    max_element(_FIter, _FIter, _Compare);
535
 
536
  template
537
    _FIter
538
    max_element(_FIter, _FIter, _Compare, __gnu_parallel::sequential_tag);
539
 
540
  template
541
    _FIter
542
    max_element(_FIter, _FIter, _Compare, __gnu_parallel::_Parallelism);
543
 
544
  template
545
    _FIter
546
    __max_element_switch(_FIter, _FIter, _Compare, _IterTag);
547
 
548
  template
549
    _RAIter
550
    __max_element_switch(
551
      _RAIter, _RAIter, _Compare, random_access_iterator_tag,
552
      __gnu_parallel::_Parallelism __parallelism
553
      = __gnu_parallel::parallel_balanced);
554
 
555
 
556
  template
557
    _OIter
558
    merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
559
          __gnu_parallel::sequential_tag);
560
 
561
  template
562
           typename _Compare>
563
    _OIter
564
    merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare,
565
          __gnu_parallel::sequential_tag);
566
 
567
  template
568
           typename _Compare>
569
    _OIter
570
    merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
571
 
572
  template
573
    _OIter
574
    merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
575
 
576
  template
577
           typename _Compare, typename _IterTag1, typename _IterTag2,
578
           typename _IterTag3>
579
    _OIter
580
    __merge_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare,
581
                 _IterTag1, _IterTag2, _IterTag3);
582
 
583
  template
584
           typename _Compare>
585
    _OIter
586
    __merge_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare,
587
                 random_access_iterator_tag, random_access_iterator_tag,
588
                 random_access_iterator_tag);
589
 
590
 
591
  template
592
    _FIter
593
    min_element(_FIter, _FIter);
594
 
595
  template
596
    _FIter
597
    min_element(_FIter, _FIter, __gnu_parallel::sequential_tag);
598
 
599
  template
600
    _FIter
601
    min_element(_FIter, _FIter,
602
                __gnu_parallel::_Parallelism __parallelism_tag);
603
 
604
  template
605
    _FIter
606
    min_element(_FIter, _FIter, _Compare);
607
 
608
  template
609
    _FIter
610
    min_element(_FIter, _FIter, _Compare, __gnu_parallel::sequential_tag);
611
 
612
  template
613
    _FIter
614
    min_element(_FIter, _FIter, _Compare, __gnu_parallel::_Parallelism);
615
 
616
  template
617
    _FIter
618
    __min_element_switch(_FIter, _FIter, _Compare, _IterTag);
619
 
620
  template
621
    _RAIter
622
    __min_element_switch(
623
      _RAIter, _RAIter, _Compare, random_access_iterator_tag,
624
      __gnu_parallel::_Parallelism __parallelism
625
      = __gnu_parallel::parallel_balanced);
626
 
627
  template
628
    void
629
    nth_element(_RAIter, _RAIter, _RAIter, __gnu_parallel::sequential_tag);
630
 
631
  template
632
    void
633
    nth_element(_RAIter, _RAIter, _RAIter, _Compare,
634
                __gnu_parallel::sequential_tag);
635
 
636
  template
637
    void
638
    nth_element(_RAIter, _RAIter, _RAIter, _Compare);
639
 
640
  template
641
    void
642
    nth_element(_RAIter, _RAIter, _RAIter);
643
 
644
  template
645
    void
646
    partial_sort(_RAIter, _RAIter, _RAIter, _Compare,
647
                 __gnu_parallel::sequential_tag);
648
 
649
  template
650
    void
651
    partial_sort(_RAIter, _RAIter, _RAIter, __gnu_parallel::sequential_tag);
652
 
653
  template
654
    void
655
    partial_sort(_RAIter, _RAIter, _RAIter, _Compare);
656
 
657
  template
658
    void
659
    partial_sort(_RAIter, _RAIter, _RAIter);
660
 
661
  template
662
    _FIter
663
    partition(_FIter, _FIter, _Predicate, __gnu_parallel::sequential_tag);
664
 
665
  template
666
    _FIter
667
    partition(_FIter, _FIter, _Predicate);
668
 
669
  template
670
    _FIter
671
    __partition_switch(_FIter, _FIter, _Predicate, _IterTag);
672
 
673
  template
674
    _RAIter
675
    __partition_switch(
676
      _RAIter, _RAIter, _Predicate, random_access_iterator_tag);
677
 
678
  template
679
    void
680
    random_shuffle(_RAIter, _RAIter, __gnu_parallel::sequential_tag);
681
 
682
  template
683
    void
684
    random_shuffle(_RAIter, _RAIter, _RandomNumberGenerator&,
685
                   __gnu_parallel::sequential_tag);
686
 
687
  template
688
    void
689
    random_shuffle(_RAIter, _RAIter);
690
 
691
  template
692
    void
693
    random_shuffle(_RAIter, _RAIter,
694
#if __cplusplus >= 201103L
695
		   _RandomNumberGenerator&&);
696
#else
697
		   _RandomNumberGenerator&);
698
#endif
699
 
700
  template
701
    _OIter
702
    set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
703
            __gnu_parallel::sequential_tag);
704
 
705
  template
706
           typename _Predicate>
707
    _OIter
708
    set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate,
709
              __gnu_parallel::sequential_tag);
710
 
711
  template
712
    _OIter
713
    set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
714
 
715
  template
716
           typename _Predicate>
717
    _OIter
718
    set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate);
719
 
720
  template
721
           typename _OIter, typename _IterTag1, typename _IterTag2,
722
           typename _IterTag3>
723
    _OIter
724
    __set_union_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
725
                     _Predicate, _IterTag1, _IterTag2, _IterTag3);
726
 
727
  template
728
           typename _Predicate>
729
    _Output_RAIter
730
    __set_union_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2, _Output_RAIter,
731
                     _Predicate, random_access_iterator_tag,
732
                     random_access_iterator_tag, random_access_iterator_tag);
733
 
734
  template
735
    _OIter
736
    set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
737
                     __gnu_parallel::sequential_tag);
738
 
739
  template
740
           typename _Predicate>
741
    _OIter
742
    set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate,
743
                     __gnu_parallel::sequential_tag);
744
 
745
  template
746
    _OIter
747
    set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
748
 
749
  template
750
           typename _Predicate>
751
    _OIter
752
    set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate);
753
 
754
  template
755
           typename _OIter, typename _IterTag1, typename _IterTag2,
756
           typename _IterTag3>
757
    _OIter
758
    __set_intersection_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
759
                            _Predicate, _IterTag1, _IterTag2, _IterTag3);
760
 
761
  template
762
           typename _Predicate>
763
    _Output_RAIter
764
    __set_intersection_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2,
765
                            _Output_RAIter, _Predicate,
766
                            random_access_iterator_tag,
767
                            random_access_iterator_tag,
768
                            random_access_iterator_tag);
769
 
770
  template
771
    _OIter
772
    set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
773
                             __gnu_parallel::sequential_tag);
774
 
775
  template
776
           typename _Predicate>
777
    _OIter
778
    set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
779
                             _Predicate, __gnu_parallel::sequential_tag);
780
 
781
  template
782
    _OIter
783
    set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
784
 
785
  template
786
           typename _Predicate>
787
    _OIter
788
    set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
789
                             _Predicate);
790
 
791
  template
792
           typename _OIter, typename _IterTag1, typename _IterTag2,
793
           typename _IterTag3>
794
    _OIter
795
    __set_symmetric_difference_switch(_IIter1, _IIter1, _IIter2, _IIter2,
796
                                    _OIter, _Predicate, _IterTag1, _IterTag2,
797
                                    _IterTag3);
798
 
799
  template
800
           typename _Predicate>
801
    _Output_RAIter
802
    __set_symmetric_difference_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2,
803
                                    _Output_RAIter, _Predicate,
804
                                    random_access_iterator_tag,
805
                                    random_access_iterator_tag,
806
                                    random_access_iterator_tag);
807
 
808
 
809
  template
810
    _OIter
811
    set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
812
                   __gnu_parallel::sequential_tag);
813
 
814
  template
815
           typename _Predicate>
816
    _OIter
817
    set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate,
818
                   __gnu_parallel::sequential_tag);
819
 
820
  template
821
    _OIter
822
    set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
823
 
824
  template
825
           typename _Predicate>
826
    _OIter
827
    set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate);
828
 
829
  template
830
           typename _OIter, typename _IterTag1, typename _IterTag2,
831
           typename _IterTag3>
832
    _OIter
833
    __set_difference_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
834
                          _Predicate, _IterTag1, _IterTag2, _IterTag3);
835
 
836
  template
837
           typename _Predicate>
838
    _Output_RAIter
839
    __set_difference_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2,
840
                          _Output_RAIter, _Predicate,
841
                          random_access_iterator_tag,
842
                          random_access_iterator_tag,
843
                          random_access_iterator_tag);
844
 
845
 
846
  template
847
    void
848
    sort(_RAIter, _RAIter, __gnu_parallel::sequential_tag);
849
 
850
  template
851
    void
852
    sort(_RAIter, _RAIter, _Compare, __gnu_parallel::sequential_tag);
853
 
854
  template
855
    void
856
    sort(_RAIter, _RAIter);
857
 
858
  template
859
    void
860
    sort(_RAIter, _RAIter, _Compare);
861
 
862
  template
863
    void
864
    stable_sort(_RAIter, _RAIter, __gnu_parallel::sequential_tag);
865
 
866
  template
867
    void
868
    stable_sort(_RAIter, _RAIter, _Compare, __gnu_parallel::sequential_tag);
869
 
870
  template
871
    void
872
    stable_sort(_RAIter, _RAIter);
873
 
874
  template
875
    void
876
    stable_sort(_RAIter, _RAIter, _Compare);
877
 
878
  template
879
    _OIter
880
    unique_copy(_IIter, _IIter, _OIter, __gnu_parallel::sequential_tag);
881
 
882
  template
883
    _OIter
884
    unique_copy(_IIter, _IIter, _OIter, _Predicate,
885
                __gnu_parallel::sequential_tag);
886
 
887
  template
888
    _OIter
889
    unique_copy(_IIter, _IIter, _OIter);
890
 
891
  template
892
    _OIter
893
    unique_copy(_IIter, _IIter, _OIter, _Predicate);
894
 
895
  template
896
           typename _IterTag1, typename _IterTag2>
897
    _OIter
898
    __unique_copy_switch(_IIter, _IIter, _OIter, _Predicate,
899
                       _IterTag1, _IterTag2);
900
 
901
  template
902
    _RandomAccess_OIter
903
    __unique_copy_switch(_RAIter, _RAIter, _RandomAccess_OIter, _Predicate,
904
                       random_access_iterator_tag, random_access_iterator_tag);
905
} // end namespace __parallel
906
} // end namespace std
907
 
908
#endif /* _GLIBCXX_PARALLEL_ALGORITHMFWD_H */