11#ifndef INCLUDED_BSLALG_DEQUEPRIMITIVES_CPP03
12#define INCLUDED_BSLALG_DEQUEPRIMITIVES_CPP03
63#ifdef COMPILING_BSLALG_DEQUEPRIMITIVES_H
69template <
class VALUE_TYPE,
int BLOCK_LENGTH,
class ALLOCATOR>
70class DequePrimitives_DequeElementGuard;
72template <
class VALUE_TYPE,
int BLOCK_LENGTH>
73class DequePrimitives_DequeMoveGuard;
75template <
class VALUE_TYPE,
int BLOCK_LENGTH,
class ALLOCATOR>
76class DequePrimitives_ExternalDequeElementGuard;
78template <
class VALUE_TYPE,
int BLOCK_LENGTH>
79class DequePrimitives_DequeEndpointProctor;
105template <
class VALUE_TYPE,
int BLOCK_LENGTH>
106struct DequePrimitives {
110 typedef DequeIterator<VALUE_TYPE, BLOCK_LENGTH>
Iterator;
114 typedef DequeImpUtil<VALUE_TYPE, BLOCK_LENGTH> ImpUtil;
115 typedef DequePrimitives_DequeMoveGuard<VALUE_TYPE, BLOCK_LENGTH> MoveGuard;
129 template <
class ALLOCATOR>
141 template <
class ALLOCATOR>
147 template <
class ALLOCATOR>
165 template <
class ALLOCATOR>
172 ALLOCATOR allocator);
186 template <
class ALLOCATOR>
196 template <
class ALLOCATOR>
218 template <
class ALLOCATOR>
223 const VALUE_TYPE& value,
224 ALLOCATOR allocator);
238 template <
class ALLOCATOR>
244 const VALUE_TYPE& value,
249 template <
class ALLOCATOR>
255 const VALUE_TYPE& value,
260 template <
class ALLOCATOR>
266 const VALUE_TYPE& value,
280 template <
class FWD_ITER,
class SENTINEL,
class ALLOCATOR>
287 ALLOCATOR allocator);
298 template <
class ALLOCATOR>
304 ALLOCATOR allocator);
317 template <
class ALLOCATOR>
327 template <
class ALLOCATOR>
337 template <
class ALLOCATOR>
356 template <
class ALLOCATOR>
361 const VALUE_TYPE& value,
362 ALLOCATOR allocator);
376 template <
class ALLOCATOR>
382 const VALUE_TYPE& value,
387 template <
class ALLOCATOR>
393 const VALUE_TYPE& value,
398 template <
class ALLOCATOR>
404 const VALUE_TYPE& value,
418 template <
class FWD_ITER,
class SENTINEL,
class ALLOCATOR>
425 ALLOCATOR allocator);
437 template <
class ALLOCATOR>
443 ALLOCATOR allocator);
457 template <
class ALLOCATOR>
467 template <
class ALLOCATOR>
477 template <
class ALLOCATOR>
486#if BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES
489#ifndef BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT
490#define BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT 10
492#ifndef BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A
493#define BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT
495#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 0
496 template <
class ALLOCATOR>
500 ALLOCATOR allocator);
503#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 1
504 template <
class ALLOCATOR,
class Args_01>
512#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 2
513 template <
class ALLOCATOR,
class Args_01,
523#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 3
524 template <
class ALLOCATOR,
class Args_01,
536#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 4
537 template <
class ALLOCATOR,
class Args_01,
551#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 5
552 template <
class ALLOCATOR,
class Args_01,
568#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 6
569 template <
class ALLOCATOR,
class Args_01,
587#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 7
588 template <
class ALLOCATOR,
class Args_01,
608#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 8
609 template <
class ALLOCATOR,
class Args_01,
631#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 9
632 template <
class ALLOCATOR,
class Args_01,
656#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 10
657 template <
class ALLOCATOR,
class Args_01,
684#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 0
685 template <
class ALLOCATOR>
695#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 1
696 template <
class ALLOCATOR,
class Args_01>
707#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 2
708 template <
class ALLOCATOR,
class Args_01,
721#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 3
722 template <
class ALLOCATOR,
class Args_01,
737#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 4
738 template <
class ALLOCATOR,
class Args_01,
755#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 5
756 template <
class ALLOCATOR,
class Args_01,
775#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 6
776 template <
class ALLOCATOR,
class Args_01,
797#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 7
798 template <
class ALLOCATOR,
class Args_01,
821#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 8
822 template <
class ALLOCATOR,
class Args_01,
847#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 9
848 template <
class ALLOCATOR,
class Args_01,
875#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 10
876 template <
class ALLOCATOR,
class Args_01,
905#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 0
906 template <
class ALLOCATOR>
916#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 1
917 template <
class ALLOCATOR,
class Args_01>
928#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 2
929 template <
class ALLOCATOR,
class Args_01,
942#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 3
943 template <
class ALLOCATOR,
class Args_01,
958#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 4
959 template <
class ALLOCATOR,
class Args_01,
976#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 5
977 template <
class ALLOCATOR,
class Args_01,
996#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 6
997 template <
class ALLOCATOR,
class Args_01,
1007 ALLOCATOR allocator,
1018#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 7
1019 template <
class ALLOCATOR,
class Args_01,
1030 ALLOCATOR allocator,
1042#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 8
1043 template <
class ALLOCATOR,
class Args_01,
1055 ALLOCATOR allocator,
1068#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 9
1069 template <
class ALLOCATOR,
class Args_01,
1082 ALLOCATOR allocator,
1096#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 10
1097 template <
class ALLOCATOR,
class Args_01,
1111 ALLOCATOR allocator,
1126#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 0
1127 template <
class ALLOCATOR>
1132 ALLOCATOR allocator,
1136#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 1
1137 template <
class ALLOCATOR,
class Args_01>
1142 ALLOCATOR allocator,
1147#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 2
1148 template <
class ALLOCATOR,
class Args_01,
1154 ALLOCATOR allocator,
1160#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 3
1161 template <
class ALLOCATOR,
class Args_01,
1168 ALLOCATOR allocator,
1175#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 4
1176 template <
class ALLOCATOR,
class Args_01,
1184 ALLOCATOR allocator,
1192#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 5
1193 template <
class ALLOCATOR,
class Args_01,
1202 ALLOCATOR allocator,
1211#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 6
1212 template <
class ALLOCATOR,
class Args_01,
1222 ALLOCATOR allocator,
1232#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 7
1233 template <
class ALLOCATOR,
class Args_01,
1244 ALLOCATOR allocator,
1255#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 8
1256 template <
class ALLOCATOR,
class Args_01,
1268 ALLOCATOR allocator,
1280#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 9
1281 template <
class ALLOCATOR,
class Args_01,
1294 ALLOCATOR allocator,
1307#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 10
1308 template <
class ALLOCATOR,
class Args_01,
1322 ALLOCATOR allocator,
1337#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 0
1338 template <
class ALLOCATOR>
1342 ALLOCATOR allocator);
1345#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 1
1346 template <
class ALLOCATOR,
class Args_01>
1350 ALLOCATOR allocator,
1354#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 2
1355 template <
class ALLOCATOR,
class Args_01,
1360 ALLOCATOR allocator,
1365#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 3
1366 template <
class ALLOCATOR,
class Args_01,
1372 ALLOCATOR allocator,
1378#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 4
1379 template <
class ALLOCATOR,
class Args_01,
1386 ALLOCATOR allocator,
1393#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 5
1394 template <
class ALLOCATOR,
class Args_01,
1402 ALLOCATOR allocator,
1410#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 6
1411 template <
class ALLOCATOR,
class Args_01,
1420 ALLOCATOR allocator,
1429#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 7
1430 template <
class ALLOCATOR,
class Args_01,
1440 ALLOCATOR allocator,
1450#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 8
1451 template <
class ALLOCATOR,
class Args_01,
1462 ALLOCATOR allocator,
1473#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 9
1474 template <
class ALLOCATOR,
class Args_01,
1486 ALLOCATOR allocator,
1498#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 10
1499 template <
class ALLOCATOR,
class Args_01,
1512 ALLOCATOR allocator,
1526#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 0
1527 template <
class ALLOCATOR>
1532 ALLOCATOR allocator,
1537#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 1
1538 template <
class ALLOCATOR,
class Args_01>
1543 ALLOCATOR allocator,
1549#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 2
1550 template <
class ALLOCATOR,
class Args_01,
1556 ALLOCATOR allocator,
1563#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 3
1564 template <
class ALLOCATOR,
class Args_01,
1571 ALLOCATOR allocator,
1579#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 4
1580 template <
class ALLOCATOR,
class Args_01,
1588 ALLOCATOR allocator,
1597#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 5
1598 template <
class ALLOCATOR,
class Args_01,
1607 ALLOCATOR allocator,
1617#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 6
1618 template <
class ALLOCATOR,
class Args_01,
1628 ALLOCATOR allocator,
1639#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 7
1640 template <
class ALLOCATOR,
class Args_01,
1651 ALLOCATOR allocator,
1663#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 8
1664 template <
class ALLOCATOR,
class Args_01,
1676 ALLOCATOR allocator,
1689#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 9
1690 template <
class ALLOCATOR,
class Args_01,
1703 ALLOCATOR allocator,
1717#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 10
1718 template <
class ALLOCATOR,
class Args_01,
1732 ALLOCATOR allocator,
1747#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 0
1748 template <
class ALLOCATOR>
1753 ALLOCATOR allocator,
1758#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 1
1759 template <
class ALLOCATOR,
class Args_01>
1764 ALLOCATOR allocator,
1770#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 2
1771 template <
class ALLOCATOR,
class Args_01,
1777 ALLOCATOR allocator,
1784#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 3
1785 template <
class ALLOCATOR,
class Args_01,
1792 ALLOCATOR allocator,
1800#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 4
1801 template <
class ALLOCATOR,
class Args_01,
1809 ALLOCATOR allocator,
1818#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 5
1819 template <
class ALLOCATOR,
class Args_01,
1828 ALLOCATOR allocator,
1838#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 6
1839 template <
class ALLOCATOR,
class Args_01,
1849 ALLOCATOR allocator,
1860#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 7
1861 template <
class ALLOCATOR,
class Args_01,
1872 ALLOCATOR allocator,
1884#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 8
1885 template <
class ALLOCATOR,
class Args_01,
1897 ALLOCATOR allocator,
1910#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 9
1911 template <
class ALLOCATOR,
class Args_01,
1924 ALLOCATOR allocator,
1938#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 10
1939 template <
class ALLOCATOR,
class Args_01,
1953 ALLOCATOR allocator,
1968#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 0
1969 template <
class ALLOCATOR>
1974 ALLOCATOR allocator,
1978#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 1
1979 template <
class ALLOCATOR,
class Args_01>
1984 ALLOCATOR allocator,
1989#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 2
1990 template <
class ALLOCATOR,
class Args_01,
1996 ALLOCATOR allocator,
2002#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 3
2003 template <
class ALLOCATOR,
class Args_01,
2010 ALLOCATOR allocator,
2017#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 4
2018 template <
class ALLOCATOR,
class Args_01,
2026 ALLOCATOR allocator,
2034#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 5
2035 template <
class ALLOCATOR,
class Args_01,
2044 ALLOCATOR allocator,
2053#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 6
2054 template <
class ALLOCATOR,
class Args_01,
2064 ALLOCATOR allocator,
2074#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 7
2075 template <
class ALLOCATOR,
class Args_01,
2086 ALLOCATOR allocator,
2097#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 8
2098 template <
class ALLOCATOR,
class Args_01,
2110 ALLOCATOR allocator,
2122#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 9
2123 template <
class ALLOCATOR,
class Args_01,
2136 ALLOCATOR allocator,
2149#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_A >= 10
2150 template <
class ALLOCATOR,
class Args_01,
2164 ALLOCATOR allocator,
2181 template <
class ALLOCATOR,
class... Args>
2185 ALLOCATOR allocator,
2188 template <
class ALLOCATOR,
class... Args>
2193 ALLOCATOR allocator,
2197 template <
class ALLOCATOR,
class... Args>
2202 ALLOCATOR allocator,
2206 template <
class ALLOCATOR,
class... Args>
2211 ALLOCATOR allocator,
2215 template <
class ALLOCATOR,
class... Args>
2219 ALLOCATOR allocator,
2222 template <
class ALLOCATOR,
class... Args>
2227 ALLOCATOR allocator,
2231 template <
class ALLOCATOR,
class... Args>
2236 ALLOCATOR allocator,
2240 template <
class ALLOCATOR,
class... Args>
2245 ALLOCATOR allocator,
2280 template <
class ALLOCATOR>
2284 const VALUE_TYPE& value,
2285 ALLOCATOR allocator);
2296 template <
class ALLOCATOR>
2300 const VALUE_TYPE& value,
2301 ALLOCATOR allocator);
2312 template <
class ALLOCATOR>
2316 ALLOCATOR allocator);
2323template <
class VALUE_TYPE>
2324struct DequePrimitives<VALUE_TYPE, 1> {
2328 typedef DequeImpUtil<VALUE_TYPE, 1> ImpUtil;
2329 typedef DequeIterator<VALUE_TYPE, 1>
Iterator;
2332 template <
class ALLOCATOR>
2335 template <
class ALLOCATOR>
2342 ALLOCATOR allocator);
2344 template <
class ALLOCATOR>
2349 const VALUE_TYPE& value,
2350 ALLOCATOR allocator);
2352 template <
class FWD_ITER,
class SENTINEL,
class ALLOCATOR>
2359 ALLOCATOR allocator);
2361 template <
class ALLOCATOR>
2366 const VALUE_TYPE& value,
2367 ALLOCATOR allocator);
2369 template <
class FWD_ITER,
class SENTINEL,
class ALLOCATOR>
2376 ALLOCATOR allocator);
2378 template <
class ALLOCATOR>
2382 const VALUE_TYPE& value,
2383 ALLOCATOR allocator);
2384 template <
class ALLOCATOR>
2389 const VALUE_TYPE& value,
2390 ALLOCATOR allocator,
2393 template <
class ALLOCATOR>
2398 const VALUE_TYPE& value,
2399 ALLOCATOR allocator,
2402 template <
class ALLOCATOR>
2406 const VALUE_TYPE& value,
2407 ALLOCATOR allocator);
2408 template <
class ALLOCATOR>
2413 const VALUE_TYPE& value,
2414 ALLOCATOR allocator,
2416 template <
class ALLOCATOR>
2421 const VALUE_TYPE& value,
2422 ALLOCATOR allocator,
2425 template <
class ALLOCATOR>
2429 ALLOCATOR allocator);
2431 template <
class ALLOCATOR>
2436 ALLOCATOR allocator,
2439 template <
class ALLOCATOR>
2444 ALLOCATOR allocator,
2459template <
class VALUE_TYPE,
int BLOCK_LENGTH,
class ALLOCATOR>
2460class DequePrimitives_DequeElementGuard {
2464 typedef DequeIterator<VALUE_TYPE, BLOCK_LENGTH>
Iterator;
2470 ALLOCATOR d_allocator;
2474 DequePrimitives_DequeElementGuard(
2475 const DequePrimitives_DequeElementGuard&);
2476 DequePrimitives_DequeElementGuard& operator=(
2477 const DequePrimitives_DequeElementGuard&);
2488 DequePrimitives_DequeElementGuard(
const Iterator& begin,
2490 ALLOCATOR allocator);
2527template <
class VALUE_TYPE,
int BLOCK_LENGTH,
class ALLOCATOR>
2528class DequePrimitives_ExternalDequeElementGuard {
2532 typedef DequeIterator<VALUE_TYPE, BLOCK_LENGTH>
Iterator;
2541 ALLOCATOR d_allocator;
2545 DequePrimitives_ExternalDequeElementGuard(
2546 const DequePrimitives_ExternalDequeElementGuard&);
2547 DequePrimitives_ExternalDequeElementGuard& operator=(
2548 const DequePrimitives_ExternalDequeElementGuard&);
2559 DequePrimitives_ExternalDequeElementGuard(
Iterator *begin,
2561 ALLOCATOR allocator);
2586template <
class VALUE_TYPE,
int BLOCK_LENGTH>
2587class DequePrimitives_DequeMoveGuard {
2591 typedef DequeIterator<VALUE_TYPE, BLOCK_LENGTH>
Iterator;
2603 DequePrimitives_DequeMoveGuard(
const DequePrimitives_DequeMoveGuard&);
2604 DequePrimitives_DequeMoveGuard& operator=(
2605 const DequePrimitives_DequeMoveGuard&);
2614 DequePrimitives_DequeMoveGuard(
Iterator dest,
2640template <
class VALUE_TYPE,
int BLOCK_LENGTH>
2641class DequePrimitives_DequeEndpointProctor {
2645 typedef DequeIterator<VALUE_TYPE, BLOCK_LENGTH>
Iterator;
2654 DequePrimitives_DequeEndpointProctor(
2655 const DequePrimitives_DequeEndpointProctor&);
2656 DequePrimitives_DequeEndpointProctor& operator=(
2657 const DequePrimitives_DequeEndpointProctor&);
2666 DequePrimitives_DequeEndpointProctor(
Iterator *endpoint,
2691template <
class VALUE_TYPE,
int BLOCK_LENGTH>
2692template <
class ALLOCATOR>
2696 ALLOCATOR allocator)
2701 VALUE = IS_BITWISECOPYABLE
2706 return destruct(begin,
2712template <
class VALUE_TYPE,
int BLOCK_LENGTH>
2713template <
class ALLOCATOR>
2723template <
class VALUE_TYPE,
int BLOCK_LENGTH>
2724template <
class ALLOCATOR>
2728 ALLOCATOR allocator,
2737template <
class VALUE_TYPE,
int BLOCK_LENGTH>
2738template <
class ALLOCATOR>
2748 ALLOCATOR allocator)
2753 VALUE = IS_BITWISECOPYABLE
2758 return erase(toBegin,
2768template <
class VALUE_TYPE,
int BLOCK_LENGTH>
2769template <
class ALLOCATOR>
2778 ALLOCATOR allocator,
2781 if (first == last) {
2782 *toBegin = fromBegin;
2787 size_type frontSize = first - fromBegin;
2788 size_type backSize = fromEnd - last;
2791 if (frontSize < backSize) {
2793 for (; 0 < frontSize; --frontSize) {
2796 *last = MoveUtil::move(*first);
2803 for (; 0 < backSize; --backSize, ++first, ++last) {
2804 *first = MoveUtil::move(*last);
2806 *toBegin = fromBegin;
2809 destruct(first, last, allocator);
2813template <
class VALUE_TYPE,
int BLOCK_LENGTH>
2814template <
class ALLOCATOR>
2827 size_type frontSize = first - fromBegin;
2828 size_type backSize = fromEnd - last;
2831 if (frontSize < backSize) {
2833 moveBack(&last, &first, frontSize);
2839 moveFront(&first, &last, backSize);
2840 *toBegin = fromBegin;
2847template <
class VALUE_TYPE,
int BLOCK_LENGTH>
2848template <
class ALLOCATOR>
2851DequePrimitives<VALUE_TYPE, BLOCK_LENGTH>
2852 ::insertAndMoveToBack(Iterator *toEnd,
2855 size_type numElements,
2856 const VALUE_TYPE& value,
2857 ALLOCATOR allocator)
2863 VALUE = IS_BITWISECOPYABLE
2865 : IS_BITWISEMOVEABLE
2870 insertAndMoveToBack(toEnd,
2879template <
class VALUE_TYPE,
int BLOCK_LENGTH>
2880template <
class ALLOCATOR>
2885 size_type numElements,
2886 const VALUE_TYPE& value,
2887 ALLOCATOR allocator,
2891 size_type backSize = fromEnd - position;
2892 Iterator
end = fromEnd;
2893 Iterator dest =
end + numElements;
2911 moveBack(&dest, &end, backSize);
2912 uninitializedFillNFront(&dest, dest, numElements, space.
object(),
2915 *toEnd = fromEnd + numElements;
2918template <
class VALUE_TYPE,
int BLOCK_LENGTH>
2919template <
class ALLOCATOR>
2924 size_type numElements,
2925 const VALUE_TYPE& value,
2926 ALLOCATOR allocator,
2930 typedef DequePrimitives_ExternalDequeElementGuard<VALUE_TYPE,
2932 ALLOCATOR> ExtGuard;
2935 size_type backSize = fromEnd - position;
2936 Iterator
end = fromEnd;
2937 Iterator dest =
end + numElements;
2956 MoveGuard guard(end, dest, backSize,
false);
2958 moveBack(&dest, &end, backSize);
2963 Iterator dest2(dest);
2964 ExtGuard eguard(&dest, &dest2, allocator);
2966 uninitializedFillNFront(&dest, dest, numElements, space.
object(),
2970 *toEnd = fromEnd + numElements;
2973template <
class VALUE_TYPE,
int BLOCK_LENGTH>
2974template <
class ALLOCATOR>
2979 size_type numElements,
2980 const VALUE_TYPE& value,
2981 ALLOCATOR allocator,
2984 typedef DequePrimitives_DequeElementGuard<VALUE_TYPE,
2986 ALLOCATOR> ElementGuard;
2988 size_type backSize = fromEnd - position;
2989 Iterator
end = fromEnd;
2990 Iterator dest =
end + numElements;
3008 ElementGuard guard(dest, dest, allocator);
3009 if (backSize >= numElements) {
3010 for (numDest = numElements; 0 < numDest; --numDest) {
3016 guard.moveBegin(-1);
3018 for (backSize -= numElements; 0 < backSize; --backSize) {
3023 for (numDest = numElements; 0 < numDest; --numDest, ++position) {
3024 *position = space.
object();
3027 for (numDest = backSize; 0 < numDest; --numDest) {
3033 guard.moveBegin(-1);
3035 for (numDest = numElements; backSize < numDest; --numDest) {
3041 guard.moveBegin(-1);
3043 for (; 0 < numDest; --numDest, ++position) {
3044 *position = space.
object();
3049 *toEnd = fromEnd + numElements;
3052template <
class VALUE_TYPE,
int BLOCK_LENGTH>
3053template <
class FWD_ITER,
class SENTINEL,
class ALLOCATOR>
3055DequePrimitives<VALUE_TYPE, BLOCK_LENGTH>
3056 ::insertAndMoveToBack(Iterator *toEnd,
3061 size_type numElements,
3062 ALLOCATOR allocator)
3064 typedef DequePrimitives_DequeElementGuard<VALUE_TYPE,
3066 ALLOCATOR> ElementGuard;
3068 size_type backSize = fromEnd - position;
3069 Iterator
end = fromEnd;
3070 Iterator dest =
end + numElements;
3073 ElementGuard guard(dest, dest, allocator);
3074 if (backSize >= numElements) {
3075 for (numDest = numElements; 0 < numDest; --numDest) {
3081 guard.moveBegin(-1);
3083 for (numDest = backSize; numElements < numDest; --numDest) {
3088 for (; 0 < numDest; ++first, ++position, --numDest) {
3092 for (numDest = backSize; 0 < numDest; --numDest) {
3098 guard.moveBegin(-1);
3100 for (numDest = backSize; 0 < numDest; --numDest, ++position, ++first) {
3104 ElementGuard guard2(position, position, allocator);
3105 for (numDest = numElements; backSize < numDest; ++first, ++position,
3108 position.valuePtr(),
3115 *toEnd = fromEnd + numElements;
3118template <
class VALUE_TYPE,
int BLOCK_LENGTH>
3119template <
class ALLOCATOR>
3127 ALLOCATOR allocator)
3133 VALUE = IS_BITWISECOPYABLE
3135 : IS_BITWISEMOVEABLE
3140 VALUE_TYPE& lvalue = value;
3142 moveInsertAndMoveToBack(toEnd,
3145 MoveUtil::move(lvalue),
3150template <
class VALUE_TYPE,
int BLOCK_LENGTH>
3151template <
class ALLOCATOR>
3157 ALLOCATOR allocator,
3161 const size_type backSize = fromEnd - position;
3162 Iterator
end = fromEnd;
3163 Iterator dest =
end + 1;
3168 moveBack(&dest, &end, backSize);
3171 VALUE_TYPE& lvalue = value;
3174 MoveUtil::move(lvalue));
3176 *toEnd = fromEnd + 1;
3179template <
class VALUE_TYPE,
int BLOCK_LENGTH>
3180template <
class ALLOCATOR>
3186 ALLOCATOR allocator,
3190 const size_type backSize = fromEnd - position;
3191 Iterator
end = fromEnd;
3192 Iterator dest =
end + 1;
3197 MoveGuard guard(end, dest, backSize,
false);
3199 moveBack(&dest, &end, backSize);
3202 VALUE_TYPE& lvalue = value;
3205 MoveUtil::move(lvalue));
3209 *toEnd = fromEnd + 1;
3212template <
class VALUE_TYPE,
int BLOCK_LENGTH>
3213template <
class ALLOCATOR>
3219 ALLOCATOR allocator,
3222 typedef DequePrimitives_DequeElementGuard<VALUE_TYPE,
3224 ALLOCATOR> ElementGuard;
3226 size_type backSize = fromEnd - position;
3227 Iterator
end = fromEnd;
3228 Iterator dest =
end + 1;
3232 ElementGuard guard(dest, dest, allocator);
3241 MoveUtil::move_if_noexcept(*end));
3242 guard.moveBegin(-1);
3246 for (backSize -= 1; 0 < backSize; --backSize) {
3249 *dest = MoveUtil::move_if_noexcept(*end);
3254 VALUE_TYPE& lvalue = value;
3255 *position = MoveUtil::move(lvalue);
3259 *toEnd = fromEnd + 1;
3262template <
class VALUE_TYPE,
int BLOCK_LENGTH>
3263template <
class ALLOCATOR>
3266DequePrimitives<VALUE_TYPE, BLOCK_LENGTH>
3267 ::insertAndMoveToFront(Iterator *toBegin,
3270 size_type numElements,
3271 const VALUE_TYPE& value,
3272 ALLOCATOR allocator)
3278 VALUE = IS_BITWISECOPYABLE
3280 : IS_BITWISEMOVEABLE
3285 insertAndMoveToFront(toBegin,
3294template <
class VALUE_TYPE,
int BLOCK_LENGTH>
3295template <
class ALLOCATOR>
3300 size_type numElements,
3301 const VALUE_TYPE& value,
3302 ALLOCATOR allocator,
3306 size_type frontSize = position - fromBegin;
3307 Iterator
begin = fromBegin;
3308 Iterator dest =
begin - numElements;
3326 moveFront(&dest, &begin, frontSize);
3327 uninitializedFillNBack(&dest, dest, numElements, space.
object(),
3330 *toBegin = fromBegin - numElements;
3333template <
class VALUE_TYPE,
int BLOCK_LENGTH>
3334template <
class ALLOCATOR>
3339 size_type numElements,
3340 const VALUE_TYPE& value,
3341 ALLOCATOR allocator,
3345 typedef DequePrimitives_ExternalDequeElementGuard<VALUE_TYPE,
3347 ALLOCATOR> ExtGuard;
3348 size_type frontSize = position - fromBegin;
3349 Iterator
begin = fromBegin;
3350 Iterator dest =
begin - numElements;
3368 MoveGuard guard(begin, dest, frontSize,
true);
3370 moveFront(&dest, &begin, frontSize);
3375 Iterator dest2(dest);
3376 ExtGuard eguard(&dest2, &dest, allocator);
3378 uninitializedFillNBack(&dest, dest, numElements, space.
object(),
3383 *toBegin = fromBegin - numElements;
3386template <
class VALUE_TYPE,
int BLOCK_LENGTH>
3387template <
class ALLOCATOR>
3392 size_type numElements,
3393 const VALUE_TYPE& value,
3394 ALLOCATOR allocator,
3397 typedef DequePrimitives_DequeElementGuard<VALUE_TYPE,
3399 ALLOCATOR> ElementGuard;
3401 size_type frontSize = position - fromBegin;
3402 Iterator
begin = fromBegin;
3403 Iterator dest =
begin - numElements;
3420 ElementGuard guard(dest, dest, allocator);
3421 if (frontSize >= numElements) {
3422 for (numDest = numElements; 0 < numDest; --numDest, ++dest, ++
begin) {
3428 for (frontSize -= numElements; 0 < frontSize;
3429 --frontSize, ++dest, ++
begin) {
3432 for (numDest = numElements; 0 < numDest; --numDest, ++dest) {
3436 for (numDest = frontSize; 0 < numDest; --numDest, ++dest, ++
begin) {
3442 for (numDest = numElements; frontSize < numDest; --numDest, ++dest) {
3448 for (; 0 < numDest; --numDest, ++dest) {
3453 *toBegin = fromBegin - numElements;
3456template <
class VALUE_TYPE,
int BLOCK_LENGTH>
3457template <
class FWD_ITER,
class SENTINEL,
class ALLOCATOR>
3459DequePrimitives<VALUE_TYPE, BLOCK_LENGTH>
3460 ::insertAndMoveToFront(Iterator *toBegin,
3465 size_type numElements,
3466 ALLOCATOR allocator)
3468 typedef DequePrimitives_DequeElementGuard<VALUE_TYPE,
3470 ALLOCATOR> ElementGuard;
3472 size_type frontSize = position - fromBegin;
3473 Iterator
begin = fromBegin;
3474 Iterator dest =
begin - numElements;
3477 ElementGuard guard(dest, dest, allocator);
3478 if (frontSize >= numElements) {
3479 for (numDest = numElements; 0 < numDest; --numDest, ++dest, ++
begin) {
3485 for (frontSize -= numElements; 0 < frontSize;
3486 --frontSize, ++dest, ++
begin) {
3489 for (numDest = numElements; 0 < numDest; --numDest, ++dest, ++first) {
3493 for (numDest = frontSize; 0 < numDest; --numDest, ++dest, ++
begin) {
3499 for (numDest = numElements; frontSize < numDest;
3500 --numDest, ++dest, ++first) {
3506 for (; 0 < numDest; --numDest, ++dest, ++first) {
3511 *toBegin = fromBegin - numElements;
3514template <
class VALUE_TYPE,
int BLOCK_LENGTH>
3515template <
class ALLOCATOR>
3523 ALLOCATOR allocator)
3529 VALUE = IS_BITWISECOPYABLE
3531 : IS_BITWISEMOVEABLE
3536 VALUE_TYPE& lvalue = value;
3538 moveInsertAndMoveToFront(toBegin,
3541 MoveUtil::move(lvalue),
3546template <
class VALUE_TYPE,
int BLOCK_LENGTH>
3547template <
class ALLOCATOR>
3553 ALLOCATOR allocator,
3557 const size_type frontSize = position - fromBegin;
3558 Iterator
begin = fromBegin;
3559 Iterator dest =
begin - 1;
3564 moveFront(&dest, &begin, frontSize);
3566 VALUE_TYPE& lvalue = value;
3569 MoveUtil::move(lvalue));
3571 *toBegin = fromBegin - 1;
3574template <
class VALUE_TYPE,
int BLOCK_LENGTH>
3575template <
class ALLOCATOR>
3581 ALLOCATOR allocator,
3585 const size_type frontSize = position - fromBegin;
3586 Iterator
begin = fromBegin;
3587 Iterator dest =
begin - 1;
3592 MoveGuard guard(begin, dest, frontSize,
true);
3594 moveFront(&dest, &begin, frontSize);
3596 VALUE_TYPE& lvalue = value;
3599 MoveUtil::move(lvalue));
3603 *toBegin = fromBegin - 1;
3606template <
class VALUE_TYPE,
int BLOCK_LENGTH>
3607template <
class ALLOCATOR>
3613 ALLOCATOR allocator,
3616 typedef DequePrimitives_DequeElementGuard<VALUE_TYPE,
3618 ALLOCATOR> ElementGuard;
3620 size_type frontSize = position - fromBegin;
3621 Iterator
begin = fromBegin;
3622 Iterator dest =
begin - 1;
3626 ElementGuard guard(dest, dest, allocator);
3633 MoveUtil::move_if_noexcept(*begin));
3640 for (frontSize -= 1; 0 < frontSize; --frontSize, ++dest, ++
begin) {
3641 *dest = MoveUtil::move_if_noexcept(*begin);
3646 VALUE_TYPE& lvalue = value;
3647 *dest = MoveUtil::move(lvalue);
3651 *toBegin = fromBegin - 1;
3654#if BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES
3657#ifndef BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT
3658#define BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT 10
3660#ifndef BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B
3661#define BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT
3663#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 0
3664template <
class VALUE_TYPE,
int BLOCK_LENGTH>
3665template <
class ALLOCATOR>
3672 ALLOCATOR allocator)
3678 VALUE = IS_BITWISECOPYABLE
3680 : IS_BITWISEMOVEABLE
3685 emplaceAndMoveToBackDispatch(
3694#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 1
3695template <
class VALUE_TYPE,
int BLOCK_LENGTH>
3696template <
class ALLOCATOR,
class Args_01>
3703 ALLOCATOR allocator,
3710 VALUE = IS_BITWISECOPYABLE
3712 : IS_BITWISEMOVEABLE
3717 emplaceAndMoveToBackDispatch(
3727#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 2
3728template <
class VALUE_TYPE,
int BLOCK_LENGTH>
3729template <
class ALLOCATOR,
class Args_01,
3737 ALLOCATOR allocator,
3745 VALUE = IS_BITWISECOPYABLE
3747 : IS_BITWISEMOVEABLE
3752 emplaceAndMoveToBackDispatch(
3763#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 3
3764template <
class VALUE_TYPE,
int BLOCK_LENGTH>
3765template <
class ALLOCATOR,
class Args_01,
3774 ALLOCATOR allocator,
3783 VALUE = IS_BITWISECOPYABLE
3785 : IS_BITWISEMOVEABLE
3790 emplaceAndMoveToBackDispatch(
3802#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 4
3803template <
class VALUE_TYPE,
int BLOCK_LENGTH>
3804template <
class ALLOCATOR,
class Args_01,
3814 ALLOCATOR allocator,
3824 VALUE = IS_BITWISECOPYABLE
3826 : IS_BITWISEMOVEABLE
3831 emplaceAndMoveToBackDispatch(
3844#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 5
3845template <
class VALUE_TYPE,
int BLOCK_LENGTH>
3846template <
class ALLOCATOR,
class Args_01,
3857 ALLOCATOR allocator,
3868 VALUE = IS_BITWISECOPYABLE
3870 : IS_BITWISEMOVEABLE
3875 emplaceAndMoveToBackDispatch(
3889#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 6
3890template <
class VALUE_TYPE,
int BLOCK_LENGTH>
3891template <
class ALLOCATOR,
class Args_01,
3903 ALLOCATOR allocator,
3915 VALUE = IS_BITWISECOPYABLE
3917 : IS_BITWISEMOVEABLE
3922 emplaceAndMoveToBackDispatch(
3937#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 7
3938template <
class VALUE_TYPE,
int BLOCK_LENGTH>
3939template <
class ALLOCATOR,
class Args_01,
3952 ALLOCATOR allocator,
3965 VALUE = IS_BITWISECOPYABLE
3967 : IS_BITWISEMOVEABLE
3972 emplaceAndMoveToBackDispatch(
3988#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 8
3989template <
class VALUE_TYPE,
int BLOCK_LENGTH>
3990template <
class ALLOCATOR,
class Args_01,
4004 ALLOCATOR allocator,
4018 VALUE = IS_BITWISECOPYABLE
4020 : IS_BITWISEMOVEABLE
4025 emplaceAndMoveToBackDispatch(
4042#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 9
4043template <
class VALUE_TYPE,
int BLOCK_LENGTH>
4044template <
class ALLOCATOR,
class Args_01,
4059 ALLOCATOR allocator,
4074 VALUE = IS_BITWISECOPYABLE
4076 : IS_BITWISEMOVEABLE
4081 emplaceAndMoveToBackDispatch(
4099#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 10
4100template <
class VALUE_TYPE,
int BLOCK_LENGTH>
4101template <
class ALLOCATOR,
class Args_01,
4117 ALLOCATOR allocator,
4133 VALUE = IS_BITWISECOPYABLE
4135 : IS_BITWISEMOVEABLE
4140 emplaceAndMoveToBackDispatch(
4160#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 0
4161template <
class VALUE_TYPE,
int BLOCK_LENGTH>
4162template <
class ALLOCATOR>
4167 ALLOCATOR allocator,
4171 const size_type backSize = fromEnd - position;
4172 Iterator
end = fromEnd;
4173 Iterator dest =
end + 1;
4176 moveBack(&dest, &end, backSize);
4183 *toEnd = fromEnd + 1;
4187#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 1
4188template <
class VALUE_TYPE,
int BLOCK_LENGTH>
4189template <
class ALLOCATOR,
class Args_01>
4194 ALLOCATOR allocator,
4199 const size_type backSize = fromEnd - position;
4200 Iterator
end = fromEnd;
4201 Iterator dest =
end + 1;
4204 moveBack(&dest, &end, backSize);
4212 *toEnd = fromEnd + 1;
4216#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 2
4217template <
class VALUE_TYPE,
int BLOCK_LENGTH>
4218template <
class ALLOCATOR,
class Args_01,
4224 ALLOCATOR allocator,
4230 const size_type backSize = fromEnd - position;
4231 Iterator
end = fromEnd;
4232 Iterator dest =
end + 1;
4235 moveBack(&dest, &end, backSize);
4244 *toEnd = fromEnd + 1;
4248#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 3
4249template <
class VALUE_TYPE,
int BLOCK_LENGTH>
4250template <
class ALLOCATOR,
class Args_01,
4257 ALLOCATOR allocator,
4264 const size_type backSize = fromEnd - position;
4265 Iterator
end = fromEnd;
4266 Iterator dest =
end + 1;
4269 moveBack(&dest, &end, backSize);
4279 *toEnd = fromEnd + 1;
4283#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 4
4284template <
class VALUE_TYPE,
int BLOCK_LENGTH>
4285template <
class ALLOCATOR,
class Args_01,
4293 ALLOCATOR allocator,
4301 const size_type backSize = fromEnd - position;
4302 Iterator
end = fromEnd;
4303 Iterator dest =
end + 1;
4306 moveBack(&dest, &end, backSize);
4317 *toEnd = fromEnd + 1;
4321#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 5
4322template <
class VALUE_TYPE,
int BLOCK_LENGTH>
4323template <
class ALLOCATOR,
class Args_01,
4332 ALLOCATOR allocator,
4341 const size_type backSize = fromEnd - position;
4342 Iterator
end = fromEnd;
4343 Iterator dest =
end + 1;
4346 moveBack(&dest, &end, backSize);
4358 *toEnd = fromEnd + 1;
4362#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 6
4363template <
class VALUE_TYPE,
int BLOCK_LENGTH>
4364template <
class ALLOCATOR,
class Args_01,
4374 ALLOCATOR allocator,
4384 const size_type backSize = fromEnd - position;
4385 Iterator
end = fromEnd;
4386 Iterator dest =
end + 1;
4389 moveBack(&dest, &end, backSize);
4402 *toEnd = fromEnd + 1;
4406#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 7
4407template <
class VALUE_TYPE,
int BLOCK_LENGTH>
4408template <
class ALLOCATOR,
class Args_01,
4419 ALLOCATOR allocator,
4430 const size_type backSize = fromEnd - position;
4431 Iterator
end = fromEnd;
4432 Iterator dest =
end + 1;
4435 moveBack(&dest, &end, backSize);
4449 *toEnd = fromEnd + 1;
4453#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 8
4454template <
class VALUE_TYPE,
int BLOCK_LENGTH>
4455template <
class ALLOCATOR,
class Args_01,
4467 ALLOCATOR allocator,
4479 const size_type backSize = fromEnd - position;
4480 Iterator
end = fromEnd;
4481 Iterator dest =
end + 1;
4484 moveBack(&dest, &end, backSize);
4499 *toEnd = fromEnd + 1;
4503#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 9
4504template <
class VALUE_TYPE,
int BLOCK_LENGTH>
4505template <
class ALLOCATOR,
class Args_01,
4518 ALLOCATOR allocator,
4531 const size_type backSize = fromEnd - position;
4532 Iterator
end = fromEnd;
4533 Iterator dest =
end + 1;
4536 moveBack(&dest, &end, backSize);
4552 *toEnd = fromEnd + 1;
4556#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 10
4557template <
class VALUE_TYPE,
int BLOCK_LENGTH>
4558template <
class ALLOCATOR,
class Args_01,
4572 ALLOCATOR allocator,
4586 const size_type backSize = fromEnd - position;
4587 Iterator
end = fromEnd;
4588 Iterator dest =
end + 1;
4591 moveBack(&dest, &end, backSize);
4608 *toEnd = fromEnd + 1;
4613#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 0
4614template <
class VALUE_TYPE,
int BLOCK_LENGTH>
4615template <
class ALLOCATOR>
4620 ALLOCATOR allocator,
4624 const size_type backSize = fromEnd - position;
4625 Iterator
end = fromEnd;
4626 Iterator dest =
end + 1;
4629 MoveGuard guard(end, dest, backSize,
false);
4631 moveBack(&dest, &end, backSize);
4640 *toEnd = fromEnd + 1;
4644#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 1
4645template <
class VALUE_TYPE,
int BLOCK_LENGTH>
4646template <
class ALLOCATOR,
class Args_01>
4651 ALLOCATOR allocator,
4656 const size_type backSize = fromEnd - position;
4657 Iterator
end = fromEnd;
4658 Iterator dest =
end + 1;
4661 MoveGuard guard(end, dest, backSize,
false);
4663 moveBack(&dest, &end, backSize);
4673 *toEnd = fromEnd + 1;
4677#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 2
4678template <
class VALUE_TYPE,
int BLOCK_LENGTH>
4679template <
class ALLOCATOR,
class Args_01,
4685 ALLOCATOR allocator,
4691 const size_type backSize = fromEnd - position;
4692 Iterator
end = fromEnd;
4693 Iterator dest =
end + 1;
4696 MoveGuard guard(end, dest, backSize,
false);
4698 moveBack(&dest, &end, backSize);
4709 *toEnd = fromEnd + 1;
4713#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 3
4714template <
class VALUE_TYPE,
int BLOCK_LENGTH>
4715template <
class ALLOCATOR,
class Args_01,
4722 ALLOCATOR allocator,
4729 const size_type backSize = fromEnd - position;
4730 Iterator
end = fromEnd;
4731 Iterator dest =
end + 1;
4734 MoveGuard guard(end, dest, backSize,
false);
4736 moveBack(&dest, &end, backSize);
4748 *toEnd = fromEnd + 1;
4752#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 4
4753template <
class VALUE_TYPE,
int BLOCK_LENGTH>
4754template <
class ALLOCATOR,
class Args_01,
4762 ALLOCATOR allocator,
4770 const size_type backSize = fromEnd - position;
4771 Iterator
end = fromEnd;
4772 Iterator dest =
end + 1;
4775 MoveGuard guard(end, dest, backSize,
false);
4777 moveBack(&dest, &end, backSize);
4790 *toEnd = fromEnd + 1;
4794#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 5
4795template <
class VALUE_TYPE,
int BLOCK_LENGTH>
4796template <
class ALLOCATOR,
class Args_01,
4805 ALLOCATOR allocator,
4814 const size_type backSize = fromEnd - position;
4815 Iterator
end = fromEnd;
4816 Iterator dest =
end + 1;
4819 MoveGuard guard(end, dest, backSize,
false);
4821 moveBack(&dest, &end, backSize);
4835 *toEnd = fromEnd + 1;
4839#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 6
4840template <
class VALUE_TYPE,
int BLOCK_LENGTH>
4841template <
class ALLOCATOR,
class Args_01,
4851 ALLOCATOR allocator,
4861 const size_type backSize = fromEnd - position;
4862 Iterator
end = fromEnd;
4863 Iterator dest =
end + 1;
4866 MoveGuard guard(end, dest, backSize,
false);
4868 moveBack(&dest, &end, backSize);
4883 *toEnd = fromEnd + 1;
4887#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 7
4888template <
class VALUE_TYPE,
int BLOCK_LENGTH>
4889template <
class ALLOCATOR,
class Args_01,
4900 ALLOCATOR allocator,
4911 const size_type backSize = fromEnd - position;
4912 Iterator
end = fromEnd;
4913 Iterator dest =
end + 1;
4916 MoveGuard guard(end, dest, backSize,
false);
4918 moveBack(&dest, &end, backSize);
4934 *toEnd = fromEnd + 1;
4938#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 8
4939template <
class VALUE_TYPE,
int BLOCK_LENGTH>
4940template <
class ALLOCATOR,
class Args_01,
4952 ALLOCATOR allocator,
4964 const size_type backSize = fromEnd - position;
4965 Iterator
end = fromEnd;
4966 Iterator dest =
end + 1;
4969 MoveGuard guard(end, dest, backSize,
false);
4971 moveBack(&dest, &end, backSize);
4988 *toEnd = fromEnd + 1;
4992#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 9
4993template <
class VALUE_TYPE,
int BLOCK_LENGTH>
4994template <
class ALLOCATOR,
class Args_01,
5007 ALLOCATOR allocator,
5020 const size_type backSize = fromEnd - position;
5021 Iterator
end = fromEnd;
5022 Iterator dest =
end + 1;
5025 MoveGuard guard(end, dest, backSize,
false);
5027 moveBack(&dest, &end, backSize);
5045 *toEnd = fromEnd + 1;
5049#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 10
5050template <
class VALUE_TYPE,
int BLOCK_LENGTH>
5051template <
class ALLOCATOR,
class Args_01,
5065 ALLOCATOR allocator,
5079 const size_type backSize = fromEnd - position;
5080 Iterator
end = fromEnd;
5081 Iterator dest =
end + 1;
5084 MoveGuard guard(end, dest, backSize,
false);
5086 moveBack(&dest, &end, backSize);
5105 *toEnd = fromEnd + 1;
5110#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 0
5111template <
class VALUE_TYPE,
int BLOCK_LENGTH>
5112template <
class ALLOCATOR>
5117 ALLOCATOR allocator,
5120 typedef DequePrimitives_DequeElementGuard<VALUE_TYPE,
5122 ALLOCATOR> ElementGuard;
5124 typedef DequePrimitives_DequeEndpointProctor<VALUE_TYPE,
5125 BLOCK_LENGTH> EndpointProctor;
5127 size_type backSize = fromEnd - position;
5128 Iterator
end = fromEnd;
5129 Iterator dest =
end + 1;
5133 ElementGuard guard(dest, dest, allocator);
5141 MoveUtil::move_if_noexcept(*end));
5142 guard.moveBegin(-1);
5146 for (backSize -= 1; 0 < backSize; --backSize) {
5149 *dest = MoveUtil::move_if_noexcept(*end);
5152 guard.moveBegin(-n);
5159 EndpointProctor endpointProctor(toEnd, position);
5163 position.valuePtr());
5165 endpointProctor.release();
5168 *toEnd = fromEnd + 1;
5172#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 1
5173template <
class VALUE_TYPE,
int BLOCK_LENGTH>
5174template <
class ALLOCATOR,
class Args_01>
5179 ALLOCATOR allocator,
5183 typedef DequePrimitives_DequeElementGuard<VALUE_TYPE,
5185 ALLOCATOR> ElementGuard;
5187 typedef DequePrimitives_DequeEndpointProctor<VALUE_TYPE,
5188 BLOCK_LENGTH> EndpointProctor;
5190 size_type backSize = fromEnd - position;
5191 Iterator
end = fromEnd;
5192 Iterator dest =
end + 1;
5196 ElementGuard guard(dest, dest, allocator);
5204 MoveUtil::move_if_noexcept(*end));
5205 guard.moveBegin(-1);
5209 for (backSize -= 1; 0 < backSize; --backSize) {
5212 *dest = MoveUtil::move_if_noexcept(*end);
5215 guard.moveBegin(-n);
5222 EndpointProctor endpointProctor(toEnd, position);
5226 position.valuePtr(),
5229 endpointProctor.release();
5232 *toEnd = fromEnd + 1;
5236#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 2
5237template <
class VALUE_TYPE,
int BLOCK_LENGTH>
5238template <
class ALLOCATOR,
class Args_01,
5244 ALLOCATOR allocator,
5249 typedef DequePrimitives_DequeElementGuard<VALUE_TYPE,
5251 ALLOCATOR> ElementGuard;
5253 typedef DequePrimitives_DequeEndpointProctor<VALUE_TYPE,
5254 BLOCK_LENGTH> EndpointProctor;
5256 size_type backSize = fromEnd - position;
5257 Iterator
end = fromEnd;
5258 Iterator dest =
end + 1;
5262 ElementGuard guard(dest, dest, allocator);
5270 MoveUtil::move_if_noexcept(*end));
5271 guard.moveBegin(-1);
5275 for (backSize -= 1; 0 < backSize; --backSize) {
5278 *dest = MoveUtil::move_if_noexcept(*end);
5281 guard.moveBegin(-n);
5288 EndpointProctor endpointProctor(toEnd, position);
5292 position.valuePtr(),
5296 endpointProctor.release();
5299 *toEnd = fromEnd + 1;
5303#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 3
5304template <
class VALUE_TYPE,
int BLOCK_LENGTH>
5305template <
class ALLOCATOR,
class Args_01,
5312 ALLOCATOR allocator,
5318 typedef DequePrimitives_DequeElementGuard<VALUE_TYPE,
5320 ALLOCATOR> ElementGuard;
5322 typedef DequePrimitives_DequeEndpointProctor<VALUE_TYPE,
5323 BLOCK_LENGTH> EndpointProctor;
5325 size_type backSize = fromEnd - position;
5326 Iterator
end = fromEnd;
5327 Iterator dest =
end + 1;
5331 ElementGuard guard(dest, dest, allocator);
5339 MoveUtil::move_if_noexcept(*end));
5340 guard.moveBegin(-1);
5344 for (backSize -= 1; 0 < backSize; --backSize) {
5347 *dest = MoveUtil::move_if_noexcept(*end);
5350 guard.moveBegin(-n);
5357 EndpointProctor endpointProctor(toEnd, position);
5361 position.valuePtr(),
5366 endpointProctor.release();
5369 *toEnd = fromEnd + 1;
5373#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 4
5374template <
class VALUE_TYPE,
int BLOCK_LENGTH>
5375template <
class ALLOCATOR,
class Args_01,
5383 ALLOCATOR allocator,
5390 typedef DequePrimitives_DequeElementGuard<VALUE_TYPE,
5392 ALLOCATOR> ElementGuard;
5394 typedef DequePrimitives_DequeEndpointProctor<VALUE_TYPE,
5395 BLOCK_LENGTH> EndpointProctor;
5397 size_type backSize = fromEnd - position;
5398 Iterator
end = fromEnd;
5399 Iterator dest =
end + 1;
5403 ElementGuard guard(dest, dest, allocator);
5411 MoveUtil::move_if_noexcept(*end));
5412 guard.moveBegin(-1);
5416 for (backSize -= 1; 0 < backSize; --backSize) {
5419 *dest = MoveUtil::move_if_noexcept(*end);
5422 guard.moveBegin(-n);
5429 EndpointProctor endpointProctor(toEnd, position);
5433 position.valuePtr(),
5439 endpointProctor.release();
5442 *toEnd = fromEnd + 1;
5446#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 5
5447template <
class VALUE_TYPE,
int BLOCK_LENGTH>
5448template <
class ALLOCATOR,
class Args_01,
5457 ALLOCATOR allocator,
5465 typedef DequePrimitives_DequeElementGuard<VALUE_TYPE,
5467 ALLOCATOR> ElementGuard;
5469 typedef DequePrimitives_DequeEndpointProctor<VALUE_TYPE,
5470 BLOCK_LENGTH> EndpointProctor;
5472 size_type backSize = fromEnd - position;
5473 Iterator
end = fromEnd;
5474 Iterator dest =
end + 1;
5478 ElementGuard guard(dest, dest, allocator);
5486 MoveUtil::move_if_noexcept(*end));
5487 guard.moveBegin(-1);
5491 for (backSize -= 1; 0 < backSize; --backSize) {
5494 *dest = MoveUtil::move_if_noexcept(*end);
5497 guard.moveBegin(-n);
5504 EndpointProctor endpointProctor(toEnd, position);
5508 position.valuePtr(),
5515 endpointProctor.release();
5518 *toEnd = fromEnd + 1;
5522#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 6
5523template <
class VALUE_TYPE,
int BLOCK_LENGTH>
5524template <
class ALLOCATOR,
class Args_01,
5534 ALLOCATOR allocator,
5543 typedef DequePrimitives_DequeElementGuard<VALUE_TYPE,
5545 ALLOCATOR> ElementGuard;
5547 typedef DequePrimitives_DequeEndpointProctor<VALUE_TYPE,
5548 BLOCK_LENGTH> EndpointProctor;
5550 size_type backSize = fromEnd - position;
5551 Iterator
end = fromEnd;
5552 Iterator dest =
end + 1;
5556 ElementGuard guard(dest, dest, allocator);
5564 MoveUtil::move_if_noexcept(*end));
5565 guard.moveBegin(-1);
5569 for (backSize -= 1; 0 < backSize; --backSize) {
5572 *dest = MoveUtil::move_if_noexcept(*end);
5575 guard.moveBegin(-n);
5582 EndpointProctor endpointProctor(toEnd, position);
5586 position.valuePtr(),
5594 endpointProctor.release();
5597 *toEnd = fromEnd + 1;
5601#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 7
5602template <
class VALUE_TYPE,
int BLOCK_LENGTH>
5603template <
class ALLOCATOR,
class Args_01,
5614 ALLOCATOR allocator,
5624 typedef DequePrimitives_DequeElementGuard<VALUE_TYPE,
5626 ALLOCATOR> ElementGuard;
5628 typedef DequePrimitives_DequeEndpointProctor<VALUE_TYPE,
5629 BLOCK_LENGTH> EndpointProctor;
5631 size_type backSize = fromEnd - position;
5632 Iterator
end = fromEnd;
5633 Iterator dest =
end + 1;
5637 ElementGuard guard(dest, dest, allocator);
5645 MoveUtil::move_if_noexcept(*end));
5646 guard.moveBegin(-1);
5650 for (backSize -= 1; 0 < backSize; --backSize) {
5653 *dest = MoveUtil::move_if_noexcept(*end);
5656 guard.moveBegin(-n);
5663 EndpointProctor endpointProctor(toEnd, position);
5667 position.valuePtr(),
5676 endpointProctor.release();
5679 *toEnd = fromEnd + 1;
5683#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 8
5684template <
class VALUE_TYPE,
int BLOCK_LENGTH>
5685template <
class ALLOCATOR,
class Args_01,
5697 ALLOCATOR allocator,
5708 typedef DequePrimitives_DequeElementGuard<VALUE_TYPE,
5710 ALLOCATOR> ElementGuard;
5712 typedef DequePrimitives_DequeEndpointProctor<VALUE_TYPE,
5713 BLOCK_LENGTH> EndpointProctor;
5715 size_type backSize = fromEnd - position;
5716 Iterator
end = fromEnd;
5717 Iterator dest =
end + 1;
5721 ElementGuard guard(dest, dest, allocator);
5729 MoveUtil::move_if_noexcept(*end));
5730 guard.moveBegin(-1);
5734 for (backSize -= 1; 0 < backSize; --backSize) {
5737 *dest = MoveUtil::move_if_noexcept(*end);
5740 guard.moveBegin(-n);
5747 EndpointProctor endpointProctor(toEnd, position);
5751 position.valuePtr(),
5761 endpointProctor.release();
5764 *toEnd = fromEnd + 1;
5768#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 9
5769template <
class VALUE_TYPE,
int BLOCK_LENGTH>
5770template <
class ALLOCATOR,
class Args_01,
5783 ALLOCATOR allocator,
5795 typedef DequePrimitives_DequeElementGuard<VALUE_TYPE,
5797 ALLOCATOR> ElementGuard;
5799 typedef DequePrimitives_DequeEndpointProctor<VALUE_TYPE,
5800 BLOCK_LENGTH> EndpointProctor;
5802 size_type backSize = fromEnd - position;
5803 Iterator
end = fromEnd;
5804 Iterator dest =
end + 1;
5808 ElementGuard guard(dest, dest, allocator);
5816 MoveUtil::move_if_noexcept(*end));
5817 guard.moveBegin(-1);
5821 for (backSize -= 1; 0 < backSize; --backSize) {
5824 *dest = MoveUtil::move_if_noexcept(*end);
5827 guard.moveBegin(-n);
5834 EndpointProctor endpointProctor(toEnd, position);
5838 position.valuePtr(),
5849 endpointProctor.release();
5852 *toEnd = fromEnd + 1;
5856#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 10
5857template <
class VALUE_TYPE,
int BLOCK_LENGTH>
5858template <
class ALLOCATOR,
class Args_01,
5872 ALLOCATOR allocator,
5885 typedef DequePrimitives_DequeElementGuard<VALUE_TYPE,
5887 ALLOCATOR> ElementGuard;
5889 typedef DequePrimitives_DequeEndpointProctor<VALUE_TYPE,
5890 BLOCK_LENGTH> EndpointProctor;
5892 size_type backSize = fromEnd - position;
5893 Iterator
end = fromEnd;
5894 Iterator dest =
end + 1;
5898 ElementGuard guard(dest, dest, allocator);
5906 MoveUtil::move_if_noexcept(*end));
5907 guard.moveBegin(-1);
5911 for (backSize -= 1; 0 < backSize; --backSize) {
5914 *dest = MoveUtil::move_if_noexcept(*end);
5917 guard.moveBegin(-n);
5924 EndpointProctor endpointProctor(toEnd, position);
5928 position.valuePtr(),
5940 endpointProctor.release();
5943 *toEnd = fromEnd + 1;
5948#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 0
5949template <
class VALUE_TYPE,
int BLOCK_LENGTH>
5950template <
class ALLOCATOR>
5957 ALLOCATOR allocator)
5963 VALUE = IS_BITWISECOPYABLE
5965 : IS_BITWISEMOVEABLE
5970 emplaceAndMoveToFrontDispatch(
5979#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 1
5980template <
class VALUE_TYPE,
int BLOCK_LENGTH>
5981template <
class ALLOCATOR,
class Args_01>
5988 ALLOCATOR allocator,
5995 VALUE = IS_BITWISECOPYABLE
5997 : IS_BITWISEMOVEABLE
6002 emplaceAndMoveToFrontDispatch(
6012#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 2
6013template <
class VALUE_TYPE,
int BLOCK_LENGTH>
6014template <
class ALLOCATOR,
class Args_01,
6022 ALLOCATOR allocator,
6030 VALUE = IS_BITWISECOPYABLE
6032 : IS_BITWISEMOVEABLE
6037 emplaceAndMoveToFrontDispatch(
6048#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 3
6049template <
class VALUE_TYPE,
int BLOCK_LENGTH>
6050template <
class ALLOCATOR,
class Args_01,
6059 ALLOCATOR allocator,
6068 VALUE = IS_BITWISECOPYABLE
6070 : IS_BITWISEMOVEABLE
6075 emplaceAndMoveToFrontDispatch(
6087#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 4
6088template <
class VALUE_TYPE,
int BLOCK_LENGTH>
6089template <
class ALLOCATOR,
class Args_01,
6099 ALLOCATOR allocator,
6109 VALUE = IS_BITWISECOPYABLE
6111 : IS_BITWISEMOVEABLE
6116 emplaceAndMoveToFrontDispatch(
6129#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 5
6130template <
class VALUE_TYPE,
int BLOCK_LENGTH>
6131template <
class ALLOCATOR,
class Args_01,
6142 ALLOCATOR allocator,
6153 VALUE = IS_BITWISECOPYABLE
6155 : IS_BITWISEMOVEABLE
6160 emplaceAndMoveToFrontDispatch(
6174#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 6
6175template <
class VALUE_TYPE,
int BLOCK_LENGTH>
6176template <
class ALLOCATOR,
class Args_01,
6188 ALLOCATOR allocator,
6200 VALUE = IS_BITWISECOPYABLE
6202 : IS_BITWISEMOVEABLE
6207 emplaceAndMoveToFrontDispatch(
6222#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 7
6223template <
class VALUE_TYPE,
int BLOCK_LENGTH>
6224template <
class ALLOCATOR,
class Args_01,
6237 ALLOCATOR allocator,
6250 VALUE = IS_BITWISECOPYABLE
6252 : IS_BITWISEMOVEABLE
6257 emplaceAndMoveToFrontDispatch(
6273#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 8
6274template <
class VALUE_TYPE,
int BLOCK_LENGTH>
6275template <
class ALLOCATOR,
class Args_01,
6289 ALLOCATOR allocator,
6303 VALUE = IS_BITWISECOPYABLE
6305 : IS_BITWISEMOVEABLE
6310 emplaceAndMoveToFrontDispatch(
6327#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 9
6328template <
class VALUE_TYPE,
int BLOCK_LENGTH>
6329template <
class ALLOCATOR,
class Args_01,
6344 ALLOCATOR allocator,
6359 VALUE = IS_BITWISECOPYABLE
6361 : IS_BITWISEMOVEABLE
6366 emplaceAndMoveToFrontDispatch(
6384#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 10
6385template <
class VALUE_TYPE,
int BLOCK_LENGTH>
6386template <
class ALLOCATOR,
class Args_01,
6402 ALLOCATOR allocator,
6418 VALUE = IS_BITWISECOPYABLE
6420 : IS_BITWISEMOVEABLE
6425 emplaceAndMoveToFrontDispatch(
6445#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 0
6446template <
class VALUE_TYPE,
int BLOCK_LENGTH>
6447template <
class ALLOCATOR>
6452 ALLOCATOR allocator,
6456 const size_type frontSize = position - fromBegin;
6457 Iterator
begin = fromBegin;
6458 Iterator dest =
begin - 1;
6461 moveFront(&dest, &begin, frontSize);
6467 *toBegin = fromBegin - 1;
6471#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 1
6472template <
class VALUE_TYPE,
int BLOCK_LENGTH>
6473template <
class ALLOCATOR,
class Args_01>
6478 ALLOCATOR allocator,
6483 const size_type frontSize = position - fromBegin;
6484 Iterator
begin = fromBegin;
6485 Iterator dest =
begin - 1;
6488 moveFront(&dest, &begin, frontSize);
6495 *toBegin = fromBegin - 1;
6499#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 2
6500template <
class VALUE_TYPE,
int BLOCK_LENGTH>
6501template <
class ALLOCATOR,
class Args_01,
6507 ALLOCATOR allocator,
6513 const size_type frontSize = position - fromBegin;
6514 Iterator
begin = fromBegin;
6515 Iterator dest =
begin - 1;
6518 moveFront(&dest, &begin, frontSize);
6526 *toBegin = fromBegin - 1;
6530#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 3
6531template <
class VALUE_TYPE,
int BLOCK_LENGTH>
6532template <
class ALLOCATOR,
class Args_01,
6539 ALLOCATOR allocator,
6546 const size_type frontSize = position - fromBegin;
6547 Iterator
begin = fromBegin;
6548 Iterator dest =
begin - 1;
6551 moveFront(&dest, &begin, frontSize);
6560 *toBegin = fromBegin - 1;
6564#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 4
6565template <
class VALUE_TYPE,
int BLOCK_LENGTH>
6566template <
class ALLOCATOR,
class Args_01,
6574 ALLOCATOR allocator,
6582 const size_type frontSize = position - fromBegin;
6583 Iterator
begin = fromBegin;
6584 Iterator dest =
begin - 1;
6587 moveFront(&dest, &begin, frontSize);
6597 *toBegin = fromBegin - 1;
6601#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 5
6602template <
class VALUE_TYPE,
int BLOCK_LENGTH>
6603template <
class ALLOCATOR,
class Args_01,
6612 ALLOCATOR allocator,
6621 const size_type frontSize = position - fromBegin;
6622 Iterator
begin = fromBegin;
6623 Iterator dest =
begin - 1;
6626 moveFront(&dest, &begin, frontSize);
6637 *toBegin = fromBegin - 1;
6641#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 6
6642template <
class VALUE_TYPE,
int BLOCK_LENGTH>
6643template <
class ALLOCATOR,
class Args_01,
6653 ALLOCATOR allocator,
6663 const size_type frontSize = position - fromBegin;
6664 Iterator
begin = fromBegin;
6665 Iterator dest =
begin - 1;
6668 moveFront(&dest, &begin, frontSize);
6680 *toBegin = fromBegin - 1;
6684#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 7
6685template <
class VALUE_TYPE,
int BLOCK_LENGTH>
6686template <
class ALLOCATOR,
class Args_01,
6697 ALLOCATOR allocator,
6708 const size_type frontSize = position - fromBegin;
6709 Iterator
begin = fromBegin;
6710 Iterator dest =
begin - 1;
6713 moveFront(&dest, &begin, frontSize);
6726 *toBegin = fromBegin - 1;
6730#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 8
6731template <
class VALUE_TYPE,
int BLOCK_LENGTH>
6732template <
class ALLOCATOR,
class Args_01,
6744 ALLOCATOR allocator,
6756 const size_type frontSize = position - fromBegin;
6757 Iterator
begin = fromBegin;
6758 Iterator dest =
begin - 1;
6761 moveFront(&dest, &begin, frontSize);
6775 *toBegin = fromBegin - 1;
6779#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 9
6780template <
class VALUE_TYPE,
int BLOCK_LENGTH>
6781template <
class ALLOCATOR,
class Args_01,
6794 ALLOCATOR allocator,
6807 const size_type frontSize = position - fromBegin;
6808 Iterator
begin = fromBegin;
6809 Iterator dest =
begin - 1;
6812 moveFront(&dest, &begin, frontSize);
6827 *toBegin = fromBegin - 1;
6831#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 10
6832template <
class VALUE_TYPE,
int BLOCK_LENGTH>
6833template <
class ALLOCATOR,
class Args_01,
6847 ALLOCATOR allocator,
6861 const size_type frontSize = position - fromBegin;
6862 Iterator
begin = fromBegin;
6863 Iterator dest =
begin - 1;
6866 moveFront(&dest, &begin, frontSize);
6882 *toBegin = fromBegin - 1;
6887#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 0
6888template <
class VALUE_TYPE,
int BLOCK_LENGTH>
6889template <
class ALLOCATOR>
6894 ALLOCATOR allocator,
6898 const size_type frontSize = position - fromBegin;
6899 Iterator
begin = fromBegin;
6900 Iterator dest =
begin - 1;
6903 MoveGuard guard(begin, dest, frontSize,
true);
6905 moveFront(&dest, &begin, frontSize);
6913 *toBegin = fromBegin - 1;
6917#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 1
6918template <
class VALUE_TYPE,
int BLOCK_LENGTH>
6919template <
class ALLOCATOR,
class Args_01>
6924 ALLOCATOR allocator,
6929 const size_type frontSize = position - fromBegin;
6930 Iterator
begin = fromBegin;
6931 Iterator dest =
begin - 1;
6934 MoveGuard guard(begin, dest, frontSize,
true);
6936 moveFront(&dest, &begin, frontSize);
6945 *toBegin = fromBegin - 1;
6949#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 2
6950template <
class VALUE_TYPE,
int BLOCK_LENGTH>
6951template <
class ALLOCATOR,
class Args_01,
6957 ALLOCATOR allocator,
6963 const size_type frontSize = position - fromBegin;
6964 Iterator
begin = fromBegin;
6965 Iterator dest =
begin - 1;
6968 MoveGuard guard(begin, dest, frontSize,
true);
6970 moveFront(&dest, &begin, frontSize);
6980 *toBegin = fromBegin - 1;
6984#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 3
6985template <
class VALUE_TYPE,
int BLOCK_LENGTH>
6986template <
class ALLOCATOR,
class Args_01,
6993 ALLOCATOR allocator,
7000 const size_type frontSize = position - fromBegin;
7001 Iterator
begin = fromBegin;
7002 Iterator dest =
begin - 1;
7005 MoveGuard guard(begin, dest, frontSize,
true);
7007 moveFront(&dest, &begin, frontSize);
7018 *toBegin = fromBegin - 1;
7022#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 4
7023template <
class VALUE_TYPE,
int BLOCK_LENGTH>
7024template <
class ALLOCATOR,
class Args_01,
7032 ALLOCATOR allocator,
7040 const size_type frontSize = position - fromBegin;
7041 Iterator
begin = fromBegin;
7042 Iterator dest =
begin - 1;
7045 MoveGuard guard(begin, dest, frontSize,
true);
7047 moveFront(&dest, &begin, frontSize);
7059 *toBegin = fromBegin - 1;
7063#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 5
7064template <
class VALUE_TYPE,
int BLOCK_LENGTH>
7065template <
class ALLOCATOR,
class Args_01,
7074 ALLOCATOR allocator,
7083 const size_type frontSize = position - fromBegin;
7084 Iterator
begin = fromBegin;
7085 Iterator dest =
begin - 1;
7088 MoveGuard guard(begin, dest, frontSize,
true);
7090 moveFront(&dest, &begin, frontSize);
7103 *toBegin = fromBegin - 1;
7107#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 6
7108template <
class VALUE_TYPE,
int BLOCK_LENGTH>
7109template <
class ALLOCATOR,
class Args_01,
7119 ALLOCATOR allocator,
7129 const size_type frontSize = position - fromBegin;
7130 Iterator
begin = fromBegin;
7131 Iterator dest =
begin - 1;
7134 MoveGuard guard(begin, dest, frontSize,
true);
7136 moveFront(&dest, &begin, frontSize);
7150 *toBegin = fromBegin - 1;
7154#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 7
7155template <
class VALUE_TYPE,
int BLOCK_LENGTH>
7156template <
class ALLOCATOR,
class Args_01,
7167 ALLOCATOR allocator,
7178 const size_type frontSize = position - fromBegin;
7179 Iterator
begin = fromBegin;
7180 Iterator dest =
begin - 1;
7183 MoveGuard guard(begin, dest, frontSize,
true);
7185 moveFront(&dest, &begin, frontSize);
7200 *toBegin = fromBegin - 1;
7204#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 8
7205template <
class VALUE_TYPE,
int BLOCK_LENGTH>
7206template <
class ALLOCATOR,
class Args_01,
7218 ALLOCATOR allocator,
7230 const size_type frontSize = position - fromBegin;
7231 Iterator
begin = fromBegin;
7232 Iterator dest =
begin - 1;
7235 MoveGuard guard(begin, dest, frontSize,
true);
7237 moveFront(&dest, &begin, frontSize);
7253 *toBegin = fromBegin - 1;
7257#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 9
7258template <
class VALUE_TYPE,
int BLOCK_LENGTH>
7259template <
class ALLOCATOR,
class Args_01,
7272 ALLOCATOR allocator,
7285 const size_type frontSize = position - fromBegin;
7286 Iterator
begin = fromBegin;
7287 Iterator dest =
begin - 1;
7290 MoveGuard guard(begin, dest, frontSize,
true);
7292 moveFront(&dest, &begin, frontSize);
7309 *toBegin = fromBegin - 1;
7313#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 10
7314template <
class VALUE_TYPE,
int BLOCK_LENGTH>
7315template <
class ALLOCATOR,
class Args_01,
7329 ALLOCATOR allocator,
7343 const size_type frontSize = position - fromBegin;
7344 Iterator
begin = fromBegin;
7345 Iterator dest =
begin - 1;
7348 MoveGuard guard(begin, dest, frontSize,
true);
7350 moveFront(&dest, &begin, frontSize);
7368 *toBegin = fromBegin - 1;
7373#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 0
7374template <
class VALUE_TYPE,
int BLOCK_LENGTH>
7375template <
class ALLOCATOR>
7380 ALLOCATOR allocator,
7383 typedef DequePrimitives_DequeElementGuard<VALUE_TYPE,
7385 ALLOCATOR> ElementGuard;
7387 typedef DequePrimitives_DequeEndpointProctor<VALUE_TYPE,
7388 BLOCK_LENGTH> EndpointProctor;
7390 size_type frontSize = position - fromBegin;
7391 Iterator
begin = fromBegin;
7392 Iterator dest =
begin - 1;
7396 ElementGuard guard(dest, dest, allocator);
7402 MoveUtil::move_if_noexcept(*begin));
7409 for (frontSize -= 1; 0 < frontSize; --frontSize, ++dest, ++
begin) {
7410 *dest = MoveUtil::move_if_noexcept(*begin);
7420 EndpointProctor endpointProctor(toBegin, position);
7426 endpointProctor.release();
7429 *toBegin = fromBegin - 1;
7433#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 1
7434template <
class VALUE_TYPE,
int BLOCK_LENGTH>
7435template <
class ALLOCATOR,
class Args_01>
7440 ALLOCATOR allocator,
7444 typedef DequePrimitives_DequeElementGuard<VALUE_TYPE,
7446 ALLOCATOR> ElementGuard;
7448 typedef DequePrimitives_DequeEndpointProctor<VALUE_TYPE,
7449 BLOCK_LENGTH> EndpointProctor;
7451 size_type frontSize = position - fromBegin;
7452 Iterator
begin = fromBegin;
7453 Iterator dest =
begin - 1;
7457 ElementGuard guard(dest, dest, allocator);
7463 MoveUtil::move_if_noexcept(*begin));
7470 for (frontSize -= 1; 0 < frontSize; --frontSize, ++dest, ++
begin) {
7471 *dest = MoveUtil::move_if_noexcept(*begin);
7481 EndpointProctor endpointProctor(toBegin, position);
7488 endpointProctor.release();
7491 *toBegin = fromBegin - 1;
7495#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 2
7496template <
class VALUE_TYPE,
int BLOCK_LENGTH>
7497template <
class ALLOCATOR,
class Args_01,
7503 ALLOCATOR allocator,
7508 typedef DequePrimitives_DequeElementGuard<VALUE_TYPE,
7510 ALLOCATOR> ElementGuard;
7512 typedef DequePrimitives_DequeEndpointProctor<VALUE_TYPE,
7513 BLOCK_LENGTH> EndpointProctor;
7515 size_type frontSize = position - fromBegin;
7516 Iterator
begin = fromBegin;
7517 Iterator dest =
begin - 1;
7521 ElementGuard guard(dest, dest, allocator);
7527 MoveUtil::move_if_noexcept(*begin));
7534 for (frontSize -= 1; 0 < frontSize; --frontSize, ++dest, ++
begin) {
7535 *dest = MoveUtil::move_if_noexcept(*begin);
7545 EndpointProctor endpointProctor(toBegin, position);
7553 endpointProctor.release();
7556 *toBegin = fromBegin - 1;
7560#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 3
7561template <
class VALUE_TYPE,
int BLOCK_LENGTH>
7562template <
class ALLOCATOR,
class Args_01,
7569 ALLOCATOR allocator,
7575 typedef DequePrimitives_DequeElementGuard<VALUE_TYPE,
7577 ALLOCATOR> ElementGuard;
7579 typedef DequePrimitives_DequeEndpointProctor<VALUE_TYPE,
7580 BLOCK_LENGTH> EndpointProctor;
7582 size_type frontSize = position - fromBegin;
7583 Iterator
begin = fromBegin;
7584 Iterator dest =
begin - 1;
7588 ElementGuard guard(dest, dest, allocator);
7594 MoveUtil::move_if_noexcept(*begin));
7601 for (frontSize -= 1; 0 < frontSize; --frontSize, ++dest, ++
begin) {
7602 *dest = MoveUtil::move_if_noexcept(*begin);
7612 EndpointProctor endpointProctor(toBegin, position);
7621 endpointProctor.release();
7624 *toBegin = fromBegin - 1;
7628#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 4
7629template <
class VALUE_TYPE,
int BLOCK_LENGTH>
7630template <
class ALLOCATOR,
class Args_01,
7638 ALLOCATOR allocator,
7645 typedef DequePrimitives_DequeElementGuard<VALUE_TYPE,
7647 ALLOCATOR> ElementGuard;
7649 typedef DequePrimitives_DequeEndpointProctor<VALUE_TYPE,
7650 BLOCK_LENGTH> EndpointProctor;
7652 size_type frontSize = position - fromBegin;
7653 Iterator
begin = fromBegin;
7654 Iterator dest =
begin - 1;
7658 ElementGuard guard(dest, dest, allocator);
7664 MoveUtil::move_if_noexcept(*begin));
7671 for (frontSize -= 1; 0 < frontSize; --frontSize, ++dest, ++
begin) {
7672 *dest = MoveUtil::move_if_noexcept(*begin);
7682 EndpointProctor endpointProctor(toBegin, position);
7692 endpointProctor.release();
7695 *toBegin = fromBegin - 1;
7699#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 5
7700template <
class VALUE_TYPE,
int BLOCK_LENGTH>
7701template <
class ALLOCATOR,
class Args_01,
7710 ALLOCATOR allocator,
7718 typedef DequePrimitives_DequeElementGuard<VALUE_TYPE,
7720 ALLOCATOR> ElementGuard;
7722 typedef DequePrimitives_DequeEndpointProctor<VALUE_TYPE,
7723 BLOCK_LENGTH> EndpointProctor;
7725 size_type frontSize = position - fromBegin;
7726 Iterator
begin = fromBegin;
7727 Iterator dest =
begin - 1;
7731 ElementGuard guard(dest, dest, allocator);
7737 MoveUtil::move_if_noexcept(*begin));
7744 for (frontSize -= 1; 0 < frontSize; --frontSize, ++dest, ++
begin) {
7745 *dest = MoveUtil::move_if_noexcept(*begin);
7755 EndpointProctor endpointProctor(toBegin, position);
7766 endpointProctor.release();
7769 *toBegin = fromBegin - 1;
7773#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 6
7774template <
class VALUE_TYPE,
int BLOCK_LENGTH>
7775template <
class ALLOCATOR,
class Args_01,
7785 ALLOCATOR allocator,
7794 typedef DequePrimitives_DequeElementGuard<VALUE_TYPE,
7796 ALLOCATOR> ElementGuard;
7798 typedef DequePrimitives_DequeEndpointProctor<VALUE_TYPE,
7799 BLOCK_LENGTH> EndpointProctor;
7801 size_type frontSize = position - fromBegin;
7802 Iterator
begin = fromBegin;
7803 Iterator dest =
begin - 1;
7807 ElementGuard guard(dest, dest, allocator);
7813 MoveUtil::move_if_noexcept(*begin));
7820 for (frontSize -= 1; 0 < frontSize; --frontSize, ++dest, ++
begin) {
7821 *dest = MoveUtil::move_if_noexcept(*begin);
7831 EndpointProctor endpointProctor(toBegin, position);
7843 endpointProctor.release();
7846 *toBegin = fromBegin - 1;
7850#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 7
7851template <
class VALUE_TYPE,
int BLOCK_LENGTH>
7852template <
class ALLOCATOR,
class Args_01,
7863 ALLOCATOR allocator,
7873 typedef DequePrimitives_DequeElementGuard<VALUE_TYPE,
7875 ALLOCATOR> ElementGuard;
7877 typedef DequePrimitives_DequeEndpointProctor<VALUE_TYPE,
7878 BLOCK_LENGTH> EndpointProctor;
7880 size_type frontSize = position - fromBegin;
7881 Iterator
begin = fromBegin;
7882 Iterator dest =
begin - 1;
7886 ElementGuard guard(dest, dest, allocator);
7892 MoveUtil::move_if_noexcept(*begin));
7899 for (frontSize -= 1; 0 < frontSize; --frontSize, ++dest, ++
begin) {
7900 *dest = MoveUtil::move_if_noexcept(*begin);
7910 EndpointProctor endpointProctor(toBegin, position);
7923 endpointProctor.release();
7926 *toBegin = fromBegin - 1;
7930#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 8
7931template <
class VALUE_TYPE,
int BLOCK_LENGTH>
7932template <
class ALLOCATOR,
class Args_01,
7944 ALLOCATOR allocator,
7955 typedef DequePrimitives_DequeElementGuard<VALUE_TYPE,
7957 ALLOCATOR> ElementGuard;
7959 typedef DequePrimitives_DequeEndpointProctor<VALUE_TYPE,
7960 BLOCK_LENGTH> EndpointProctor;
7962 size_type frontSize = position - fromBegin;
7963 Iterator
begin = fromBegin;
7964 Iterator dest =
begin - 1;
7968 ElementGuard guard(dest, dest, allocator);
7974 MoveUtil::move_if_noexcept(*begin));
7981 for (frontSize -= 1; 0 < frontSize; --frontSize, ++dest, ++
begin) {
7982 *dest = MoveUtil::move_if_noexcept(*begin);
7992 EndpointProctor endpointProctor(toBegin, position);
8006 endpointProctor.release();
8009 *toBegin = fromBegin - 1;
8013#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 9
8014template <
class VALUE_TYPE,
int BLOCK_LENGTH>
8015template <
class ALLOCATOR,
class Args_01,
8028 ALLOCATOR allocator,
8040 typedef DequePrimitives_DequeElementGuard<VALUE_TYPE,
8042 ALLOCATOR> ElementGuard;
8044 typedef DequePrimitives_DequeEndpointProctor<VALUE_TYPE,
8045 BLOCK_LENGTH> EndpointProctor;
8047 size_type frontSize = position - fromBegin;
8048 Iterator
begin = fromBegin;
8049 Iterator dest =
begin - 1;
8053 ElementGuard guard(dest, dest, allocator);
8059 MoveUtil::move_if_noexcept(*begin));
8066 for (frontSize -= 1; 0 < frontSize; --frontSize, ++dest, ++
begin) {
8067 *dest = MoveUtil::move_if_noexcept(*begin);
8077 EndpointProctor endpointProctor(toBegin, position);
8092 endpointProctor.release();
8095 *toBegin = fromBegin - 1;
8099#if BSLALG_DEQUEPRIMITIVES_VARIADIC_LIMIT_B >= 10
8100template <
class VALUE_TYPE,
int BLOCK_LENGTH>
8101template <
class ALLOCATOR,
class Args_01,
8115 ALLOCATOR allocator,
8128 typedef DequePrimitives_DequeElementGuard<VALUE_TYPE,
8130 ALLOCATOR> ElementGuard;
8132 typedef DequePrimitives_DequeEndpointProctor<VALUE_TYPE,
8133 BLOCK_LENGTH> EndpointProctor;
8135 size_type frontSize = position - fromBegin;
8136 Iterator
begin = fromBegin;
8137 Iterator dest =
begin - 1;
8141 ElementGuard guard(dest, dest, allocator);
8147 MoveUtil::move_if_noexcept(*begin));
8154 for (frontSize -= 1; 0 < frontSize; --frontSize, ++dest, ++
begin) {
8155 *dest = MoveUtil::move_if_noexcept(*begin);
8165 EndpointProctor endpointProctor(toBegin, position);
8181 endpointProctor.release();
8184 *toBegin = fromBegin - 1;
8191template <
class VALUE_TYPE,
int BLOCK_LENGTH>
8192template <
class ALLOCATOR,
class... Args>
8199 ALLOCATOR allocator,
8206 VALUE = IS_BITWISECOPYABLE
8208 : IS_BITWISEMOVEABLE
8213 emplaceAndMoveToBackDispatch(
8222template <
class VALUE_TYPE,
int BLOCK_LENGTH>
8223template <
class ALLOCATOR,
class... Args>
8228 ALLOCATOR allocator,
8233 const size_type backSize = fromEnd - position;
8234 Iterator
end = fromEnd;
8235 Iterator dest =
end + 1;
8238 moveBack(&dest, &end, backSize);
8246 *toEnd = fromEnd + 1;
8249template <
class VALUE_TYPE,
int BLOCK_LENGTH>
8250template <
class ALLOCATOR,
class... Args>
8255 ALLOCATOR allocator,
8260 const size_type backSize = fromEnd - position;
8261 Iterator
end = fromEnd;
8262 Iterator dest =
end + 1;
8265 MoveGuard guard(end, dest, backSize,
false);
8267 moveBack(&dest, &end, backSize);
8277 *toEnd = fromEnd + 1;
8280template <
class VALUE_TYPE,
int BLOCK_LENGTH>
8281template <
class ALLOCATOR,
class... Args>
8286 ALLOCATOR allocator,
8290 typedef DequePrimitives_DequeElementGuard<VALUE_TYPE,
8292 ALLOCATOR> ElementGuard;
8294 typedef DequePrimitives_DequeEndpointProctor<VALUE_TYPE,
8295 BLOCK_LENGTH> EndpointProctor;
8297 size_type backSize = fromEnd - position;
8298 Iterator
end = fromEnd;
8299 Iterator dest =
end + 1;
8303 ElementGuard guard(dest, dest, allocator);
8311 MoveUtil::move_if_noexcept(*end));
8312 guard.moveBegin(-1);
8316 for (backSize -= 1; 0 < backSize; --backSize) {
8319 *dest = MoveUtil::move_if_noexcept(*end);
8322 guard.moveBegin(-n);
8329 EndpointProctor endpointProctor(toEnd, position);
8333 position.valuePtr(),
8336 endpointProctor.release();
8339 *toEnd = fromEnd + 1;
8342template <
class VALUE_TYPE,
int BLOCK_LENGTH>
8343template <
class ALLOCATOR,
class... Args>
8350 ALLOCATOR allocator,
8357 VALUE = IS_BITWISECOPYABLE
8359 : IS_BITWISEMOVEABLE
8364 emplaceAndMoveToFrontDispatch(
8373template <
class VALUE_TYPE,
int BLOCK_LENGTH>
8374template <
class ALLOCATOR,
class... Args>
8379 ALLOCATOR allocator,
8384 const size_type frontSize = position - fromBegin;
8385 Iterator
begin = fromBegin;
8386 Iterator dest =
begin - 1;
8389 moveFront(&dest, &begin, frontSize);
8396 *toBegin = fromBegin - 1;
8399template <
class VALUE_TYPE,
int BLOCK_LENGTH>
8400template <
class ALLOCATOR,
class... Args>
8405 ALLOCATOR allocator,
8410 const size_type frontSize = position - fromBegin;
8411 Iterator
begin = fromBegin;
8412 Iterator dest =
begin - 1;
8415 MoveGuard guard(begin, dest, frontSize,
true);
8417 moveFront(&dest, &begin, frontSize);
8426 *toBegin = fromBegin - 1;
8429template <
class VALUE_TYPE,
int BLOCK_LENGTH>
8430template <
class ALLOCATOR,
class... Args>
8435 ALLOCATOR allocator,
8439 typedef DequePrimitives_DequeElementGuard<VALUE_TYPE,
8441 ALLOCATOR> ElementGuard;
8443 typedef DequePrimitives_DequeEndpointProctor<VALUE_TYPE,
8444 BLOCK_LENGTH> EndpointProctor;
8446 size_type frontSize = position - fromBegin;
8447 Iterator
begin = fromBegin;
8448 Iterator dest =
begin - 1;
8452 ElementGuard guard(dest, dest, allocator);
8458 MoveUtil::move_if_noexcept(*begin));
8465 for (frontSize -= 1; 0 < frontSize; --frontSize, ++dest, ++
begin) {
8466 *dest = MoveUtil::move_if_noexcept(*begin);
8476 EndpointProctor endpointProctor(toBegin, position);
8483 endpointProctor.release();
8486 *toBegin = fromBegin - 1;
8491template <
class VALUE_TYPE,
int BLOCK_LENGTH>
8492void DequePrimitives<VALUE_TYPE, BLOCK_LENGTH>
8493 ::moveBack(Iterator *destination,
8495 size_type numElements)
8497 if (destination->offsetInBlock() > numElements
8498 && source->offsetInBlock() > numElements) {
8501 *destination -= numElements;
8502 *source -= numElements;
8503 std::memmove((
void *)destination->valuePtr(),
8505 numElements *
sizeof(VALUE_TYPE));
8560 size_type firstSegment, secondSegment;
8561 if (source->offsetInBlock() > destination->offsetInBlock()) {
8562 firstSegment = destination->offsetInBlock();
8563 secondSegment = source->offsetInBlock() - firstSegment;
8566 firstSegment = source->offsetInBlock();
8567 secondSegment = destination->offsetInBlock() - firstSegment;
8570 size_type thirdSegment = BLOCK_LENGTH - secondSegment;
8572 *destination -= firstSegment;
8573 *source -= firstSegment;
8574 numElements -= firstSegment;
8576 std::memmove((
void *)destination->valuePtr(),
8578 firstSegment *
sizeof(VALUE_TYPE));
8580 for (; numElements >= BLOCK_LENGTH; numElements -= BLOCK_LENGTH) {
8582 *destination -= secondSegment;
8583 *source -= secondSegment;
8585 std::memmove((
void *)destination->valuePtr(),
8587 secondSegment *
sizeof(VALUE_TYPE));
8589 *destination -= thirdSegment;
8590 *source -= thirdSegment;
8592 std::memmove((
void *)destination->valuePtr(),
8594 thirdSegment *
sizeof(VALUE_TYPE));
8597 size_type remaining = numElements > secondSegment
8601 *destination -= remaining;
8602 *source -= remaining;
8603 numElements -= remaining;
8605 std::memmove((
void *)destination->valuePtr(),
8607 remaining *
sizeof(VALUE_TYPE));
8609 *destination -= numElements;
8610 *source -= numElements;
8612 std::memmove((
void *)destination->valuePtr(),
8614 numElements *
sizeof(VALUE_TYPE));
8617template <
class VALUE_TYPE,
int BLOCK_LENGTH>
8618void DequePrimitives<VALUE_TYPE, BLOCK_LENGTH>
8619 ::moveFront(Iterator *destination,
8621 size_type numElements)
8623 if (destination->remainingInBlock() > numElements
8624 && source->remainingInBlock() > numElements) {
8627 std::memmove((
void *)destination->valuePtr(),
8629 numElements *
sizeof(VALUE_TYPE));
8630 *destination += numElements;
8631 *source += numElements;
8686 size_type firstSegment, secondSegment;
8687 if (source->remainingInBlock() > destination->remainingInBlock()) {
8688 firstSegment = destination->remainingInBlock();
8689 secondSegment = source->remainingInBlock() - firstSegment;
8692 firstSegment = source->remainingInBlock();
8693 secondSegment = destination->remainingInBlock() - firstSegment;
8696 size_type thirdSegment = BLOCK_LENGTH - secondSegment;
8698 std::memmove((
void *)destination->valuePtr(),
8700 firstSegment *
sizeof(VALUE_TYPE));
8702 *destination += firstSegment;
8703 *source += firstSegment;
8704 numElements -= firstSegment;
8706 for (; numElements >= BLOCK_LENGTH; numElements -= BLOCK_LENGTH) {
8708 std::memmove((
void *)destination->valuePtr(),
8710 secondSegment *
sizeof(VALUE_TYPE));
8712 *destination += secondSegment;
8713 *source += secondSegment;
8715 std::memmove((
void *)destination->valuePtr(),
8717 thirdSegment *
sizeof(VALUE_TYPE));
8719 *destination += thirdSegment;
8720 *source += thirdSegment;
8723 size_type remaining = numElements > secondSegment
8727 std::memmove((
void *)destination->valuePtr(),
8729 remaining *
sizeof(VALUE_TYPE));
8731 *destination += remaining;
8732 *source += remaining;
8733 numElements -= remaining;
8735 std::memmove((
void *)destination->valuePtr(),
8737 numElements *
sizeof(VALUE_TYPE));
8739 *destination += numElements;
8740 *source += numElements;
8743template <
class VALUE_TYPE,
int BLOCK_LENGTH>
8744template <
class ALLOCATOR>
8746DequePrimitives<VALUE_TYPE, BLOCK_LENGTH>
8747 ::uninitializedFillNBack(Iterator *toEnd,
8749 size_type numElements,
8750 const VALUE_TYPE& value,
8751 ALLOCATOR allocator)
8753 if (fromEnd.remainingInBlock() > numElements) {
8758 fromEnd += numElements;
8763 size_type firstRemaining = fromEnd.remainingInBlock();
8770 numElements -= firstRemaining;
8771 fromEnd += firstRemaining;
8774 for ( ; numElements >= BLOCK_LENGTH; numElements -= BLOCK_LENGTH) {
8779 fromEnd.nextBlock();
8788 fromEnd += numElements;
8792template <
class VALUE_TYPE,
int BLOCK_LENGTH>
8793template <
class ALLOCATOR>
8795DequePrimitives<VALUE_TYPE, BLOCK_LENGTH>
8796 ::valueInititalizeN(Iterator *toEnd,
8798 size_type numElements,
8799 ALLOCATOR allocator)
8801 if (fromEnd.remainingInBlock() > numElements) {
8805 fromEnd += numElements;
8810 size_type firstRemaining = fromEnd.remainingInBlock();
8816 numElements -= firstRemaining;
8817 fromEnd += firstRemaining;
8820 for ( ; numElements >= BLOCK_LENGTH; numElements -= BLOCK_LENGTH) {
8824 fromEnd.nextBlock();
8832 fromEnd += numElements;
8836template <
class VALUE_TYPE,
int BLOCK_LENGTH>
8837template <
class ALLOCATOR>
8839DequePrimitives<VALUE_TYPE, BLOCK_LENGTH>
8840 ::uninitializedFillNFront(Iterator *toBegin,
8842 size_type numElements,
8843 const VALUE_TYPE& value,
8844 ALLOCATOR allocator)
8846 if (fromBegin.offsetInBlock() > numElements) {
8847 fromBegin -= numElements;
8853 *toBegin = fromBegin;
8857 size_type firstRemaining = fromBegin.offsetInBlock();
8859 fromBegin -= firstRemaining;
8860 numElements -= firstRemaining;
8867 *toBegin = fromBegin;
8869 for ( ; numElements >= BLOCK_LENGTH; numElements -= BLOCK_LENGTH) {
8870 fromBegin.previousBlock();
8875 *toBegin = fromBegin;
8878 fromBegin -= numElements;
8884 *toBegin = fromBegin;
8892template <
class VALUE_TYPE>
8893template <
class ALLOCATOR>
8901 ALLOCATOR allocator)
8903 size_type frontSize = first - fromBegin;
8904 size_type backSize = fromEnd - last;
8907 if (frontSize < backSize) {
8909 for (; 0 < frontSize; --frontSize) {
8919 for (; 0 < backSize; --backSize, ++first, ++last) {
8922 *toBegin = fromBegin;
8925 destruct(first, last, allocator);
8929template <
class VALUE_TYPE>
8930template <
class ALLOCATOR>
8933 ALLOCATOR allocator)
8941template <
class VALUE_TYPE>
8942template <
class ALLOCATOR>
8944DequePrimitives<VALUE_TYPE, 1>
8945 ::insertAndMoveToFront(Iterator *toBegin,
8948 size_type numElements,
8949 const VALUE_TYPE& value,
8950 ALLOCATOR allocator)
8952 typedef DequePrimitives_DequeElementGuard<VALUE_TYPE,
8954 ALLOCATOR> ElementGuard;
8956 size_type frontSize = position - fromBegin;
8957 Iterator
begin = fromBegin;
8958 Iterator dest =
begin - numElements;
8974 ElementGuard guard(dest, dest, allocator);
8975 if (frontSize >= numElements) {
8976 for (numDest = numElements; 0 < numDest; --numDest, ++dest, ++
begin) {
8982 for (frontSize -= numElements; 0 < frontSize;
8983 --frontSize, ++dest, ++
begin) {
8986 for (numDest = numElements; 0 < numDest; --numDest, ++dest) {
8990 for (numDest = frontSize; 0 < numDest; --numDest, ++dest, ++
begin) {
8996 for (numDest = numElements; frontSize < numDest; --numDest, ++dest) {
9002 for (; 0 < numDest; --numDest, ++dest) {
9007 *toBegin = fromBegin - numElements;
9010template <
class VALUE_TYPE>
9011template <
class FWD_ITER,
class SENTINEL,
class ALLOCATOR>
9013DequePrimitives<VALUE_TYPE, 1>
9014 ::insertAndMoveToFront(Iterator *toBegin,
9019 size_type numElements,
9020 ALLOCATOR allocator)
9022 typedef DequePrimitives_DequeElementGuard<VALUE_TYPE,
9024 ALLOCATOR> ElementGuard;
9026 size_type frontSize = position - fromBegin;
9027 Iterator
begin = fromBegin;
9028 Iterator dest =
begin - numElements;
9031 ElementGuard guard(dest, dest, allocator);
9032 if (frontSize >= numElements) {
9033 for (numDest = numElements; 0 < numDest; --numDest, ++dest, ++
begin) {
9039 for (frontSize -= numElements; 0 < frontSize;
9040 --frontSize, ++dest, ++
begin) {
9043 for (numDest = numElements; 0 < numDest; --numDest, ++dest, ++first) {
9047 for (numDest = frontSize; 0 < numDest; --numDest, ++dest, ++
begin) {
9053 for (numDest = numElements; frontSize < numDest;
9054 --numDest, ++dest, ++first) {
9060 for (; 0 < numDest; --numDest, ++dest, ++first) {
9065 *toBegin = fromBegin - numElements;
9068template <
class VALUE_TYPE>
9069template <
class ALLOCATOR>
9075 size_type numElements,
9076 const VALUE_TYPE& value,
9077 ALLOCATOR allocator)
9079 typedef DequePrimitives_DequeElementGuard<VALUE_TYPE,
9081 ALLOCATOR> ElementGuard;
9083 size_type backSize = fromEnd - position;
9084 Iterator
end = fromEnd;
9085 Iterator dest =
end + numElements;
9101 ElementGuard guard(dest, dest, allocator);
9102 if (backSize >= numElements) {
9103 for (numDest = numElements; 0 < numDest; --numDest) {
9109 guard.moveBegin(-1);
9111 for (backSize -= numElements; 0 < backSize; --backSize) {
9116 for (numDest = numElements; 0 < numDest; --numDest, ++position) {
9117 *position = space.
object();
9120 for (numDest = backSize; 0 < numDest; --numDest) {
9126 guard.moveBegin(-1);
9128 for (numDest = numElements; backSize < numDest; --numDest) {
9133 guard.moveBegin(-1);
9135 for (; 0 < numDest; --numDest, ++position) {
9136 *position = space.
object();
9140 *toEnd = fromEnd + numElements;
9143template <
class VALUE_TYPE>
9144template <
class FWD_ITER,
class SENTINEL,
class ALLOCATOR>
9151 size_type numElements,
9152 ALLOCATOR allocator)
9154 typedef DequePrimitives_DequeElementGuard<VALUE_TYPE,
9156 ALLOCATOR> ElementGuard;
9158 size_type backSize = fromEnd - position;
9159 Iterator
end = fromEnd;
9160 Iterator dest =
end + numElements;
9163 ElementGuard guard(dest, dest, allocator);
9164 if (backSize >= numElements) {
9165 for (numDest = numElements; 0 < numDest; --numDest) {
9171 guard.moveBegin(-1);
9173 for (numDest = backSize; numElements < numDest; --numDest) {
9178 for (; 0 < numDest; ++first, ++position, --numDest) {
9182 for (numDest = backSize; 0 < numDest; --numDest) {
9188 guard.moveBegin(-1);
9190 for (numDest = backSize; 0 < numDest; --numDest, ++position, ++first) {
9193 ElementGuard guard2(position, position, allocator);
9194 for (numDest = numElements; backSize < numDest; ++first, ++position,
9197 position.valuePtr(),
9204 *toEnd = fromEnd + numElements;
9207template <
class VALUE_TYPE>
9208template <
class ALLOCATOR>
9214 size_type numElements,
9215 const VALUE_TYPE& value,
9216 ALLOCATOR allocator)
9223 IS_FUNDAMENTAL_OR_POINTER = IS_FUNDAMENTAL ||
9224 (IS_POINTER && !IS_FUNCTION_POINTER),
9228 VALUE = IS_FUNDAMENTAL_OR_POINTER || IS_BITWISECOPYABLE
9233 uninitializedFillNFront(toBegin,
9241template <
class VALUE_TYPE>
9242template <
class ALLOCATOR>
9246 size_type numElements,
9247 const VALUE_TYPE& value,
9248 ALLOCATOR allocator,
9251 typedef DequePrimitives_DequeElementGuard<VALUE_TYPE,
9253 ALLOCATOR> ElementGuard;
9255 ElementGuard guard(fromBegin, fromBegin, allocator);
9256 for (; 0 < numElements; --numElements) {
9259 fromBegin.valuePtr(),
9261 guard.moveBegin(-1);
9264 *toBegin = fromBegin;
9267template <
class VALUE_TYPE>
9268template <
class ALLOCATOR>
9272 size_type numElements,
9273 const VALUE_TYPE& value,
9274 ALLOCATOR allocator,
9277 *toBegin = fromBegin;
9278 for ( ; 0 < numElements; --numElements) {
9284 *toBegin = fromBegin;
9288template <
class VALUE_TYPE>
9289template <
class ALLOCATOR>
9295 size_type numElements,
9296 const VALUE_TYPE& value,
9297 ALLOCATOR allocator)
9304 IS_FUNDAMENTAL_OR_POINTER = IS_FUNDAMENTAL ||
9305 (IS_POINTER && !IS_FUNCTION_POINTER),
9309 VALUE = IS_FUNDAMENTAL_OR_POINTER || IS_BITWISECOPYABLE
9314 uninitializedFillNBack(toEnd,
9322template <
class VALUE_TYPE>
9323template <
class ALLOCATOR>
9327 size_type numElements,
9328 const VALUE_TYPE& value,
9329 ALLOCATOR allocator,
9332 typedef DequePrimitives_DequeElementGuard<VALUE_TYPE,
9334 ALLOCATOR> ElementGuard;
9336 ElementGuard guard(fromEnd, fromEnd, allocator);
9337 for (; 0 < numElements; --numElements) {
9348template <
class VALUE_TYPE>
9349template <
class ALLOCATOR>
9353 size_type numElements,
9354 const VALUE_TYPE& value,
9355 ALLOCATOR allocator,
9359 for ( ; 0 < numElements; --numElements) {
9369template <
class VALUE_TYPE>
9370template <
class ALLOCATOR>
9375 size_type numElements,
9376 ALLOCATOR allocator)
9383 IS_FUNDAMENTAL_OR_POINTER = IS_FUNDAMENTAL ||
9384 (IS_POINTER && !IS_FUNCTION_POINTER),
9388 VALUE = IS_FUNDAMENTAL_OR_POINTER || IS_BITWISECOPYABLE
9393 valueInititalizeN(toEnd,
9400template <
class VALUE_TYPE>
9401template <
class ALLOCATOR>
9405 size_type numElements,
9406 ALLOCATOR allocator,
9409 typedef DequePrimitives_DequeElementGuard<VALUE_TYPE,
9411 ALLOCATOR> ElementGuard;
9413 ElementGuard guard(fromEnd, fromEnd, allocator);
9414 for (; 0 < numElements; --numElements) {
9416 fromEnd.valuePtr());
9424template <
class VALUE_TYPE>
9425template <
class ALLOCATOR>
9429 size_type numElements,
9430 ALLOCATOR allocator,
9434 for ( ; 0 < numElements; --numElements) {
9448template <
class VALUE_TYPE,
int BLOCK_LENGTH,
class ALLOCATOR>
9450DequePrimitives_DequeElementGuard<VALUE_TYPE, BLOCK_LENGTH, ALLOCATOR>
9451 ::DequePrimitives_DequeElementGuard(
const Iterator& begin,
9452 const Iterator& end,
9453 ALLOCATOR allocator)
9456, d_allocator(allocator)
9460template <
class VALUE_TYPE,
int BLOCK_LENGTH,
class ALLOCATOR>
9462DequePrimitives_DequeElementGuard<VALUE_TYPE, BLOCK_LENGTH, ALLOCATOR>
9463 ::~DequePrimitives_DequeElementGuard()
9465 DequePrimitives<VALUE_TYPE, BLOCK_LENGTH>::destruct(d_begin,
9471template <
class VALUE_TYPE,
int BLOCK_LENGTH,
class ALLOCATOR>
9473typename DequePrimitives_DequeElementGuard
9474<VALUE_TYPE, BLOCK_LENGTH, ALLOCATOR>::Iterator&
9475DequePrimitives_DequeElementGuard<VALUE_TYPE, BLOCK_LENGTH, ALLOCATOR>
9476 ::moveBegin(std::ptrdiff_t offset)
9482template <
class VALUE_TYPE,
int BLOCK_LENGTH,
class ALLOCATOR>
9484typename DequePrimitives_DequeElementGuard
9485<VALUE_TYPE, BLOCK_LENGTH, ALLOCATOR>::Iterator&
9486DequePrimitives_DequeElementGuard<VALUE_TYPE, BLOCK_LENGTH, ALLOCATOR>
9487 ::moveEnd(std::ptrdiff_t offset)
9493template <
class VALUE_TYPE,
int BLOCK_LENGTH,
class ALLOCATOR>
9495void DequePrimitives_DequeElementGuard<VALUE_TYPE, BLOCK_LENGTH, ALLOCATOR>::
9506template <
class VALUE_TYPE,
int BLOCK_LENGTH,
class ALLOCATOR>
9508DequePrimitives_ExternalDequeElementGuard<VALUE_TYPE, BLOCK_LENGTH, ALLOCATOR>
9509 ::DequePrimitives_ExternalDequeElementGuard(Iterator *begin,
9511 ALLOCATOR allocator)
9514, d_allocator(allocator)
9518template <
class VALUE_TYPE,
int BLOCK_LENGTH,
class ALLOCATOR>
9520DequePrimitives_ExternalDequeElementGuard<VALUE_TYPE, BLOCK_LENGTH, ALLOCATOR>
9521 ::~DequePrimitives_ExternalDequeElementGuard()
9523 if (d_begin_p != d_end_p) {
9524 DequePrimitives<VALUE_TYPE, BLOCK_LENGTH>::destruct(*d_begin_p,
9531template <
class VALUE_TYPE,
int BLOCK_LENGTH,
class ALLOCATOR>
9534DequePrimitives_ExternalDequeElementGuard<VALUE_TYPE, BLOCK_LENGTH, ALLOCATOR>
9537 d_begin_p = d_end_p = 0;
9545template <
class VALUE_TYPE,
int BLOCK_LENGTH>
9547DequePrimitives_DequeMoveGuard<VALUE_TYPE, BLOCK_LENGTH>
9548 ::DequePrimitives_DequeMoveGuard(Iterator dest,
9552: d_destination_p(dest)
9559template <
class VALUE_TYPE,
int BLOCK_LENGTH>
9561DequePrimitives_DequeMoveGuard<VALUE_TYPE, BLOCK_LENGTH>
9562 ::~DequePrimitives_DequeMoveGuard()
9567 d_destination_p += d_size;
9568 d_source_p += d_size;
9569 DequePrimitives::moveBack(&d_destination_p, &d_source_p, d_size);
9573 d_destination_p -= d_size;
9574 d_source_p -= d_size;
9575 DequePrimitives::moveFront(&d_destination_p, &d_source_p, d_size);
9581template <
class VALUE_TYPE,
int BLOCK_LENGTH>
9583void DequePrimitives_DequeMoveGuard<VALUE_TYPE, BLOCK_LENGTH>::release()
9593template <
class VALUE_TYPE,
int BLOCK_LENGTH>
9595DequePrimitives_DequeEndpointProctor<VALUE_TYPE, BLOCK_LENGTH>
9596 ::DequePrimitives_DequeEndpointProctor(Iterator *endpoint,
9598: d_endpoint_p(endpoint)
9599, d_position(position)
9603template <
class VALUE_TYPE,
int BLOCK_LENGTH>
9605DequePrimitives_DequeEndpointProctor<VALUE_TYPE, BLOCK_LENGTH>
9606 ::~DequePrimitives_DequeEndpointProctor()
9608 if (0 != d_endpoint_p) {
9609 *d_endpoint_p = d_position;
9614template <
class VALUE_TYPE,
int BLOCK_LENGTH>
9616void DequePrimitives_DequeEndpointProctor<VALUE_TYPE, BLOCK_LENGTH>::release()
9626# error Not valid except when included from bslalg_dequeprimitives.h
Iterator & moveEnd(std::ptrdiff_t offset=1)
Definition bslalg_dequeprimitives.h:3457
Iterator & moveBegin(std::ptrdiff_t offset=-1)
Definition bslalg_dequeprimitives.h:3446
void release()
Definition bslalg_dequeprimitives.h:3466
~DequePrimitives_DequeElementGuard()
Definition bslalg_dequeprimitives.h:3433
DequeIterator< VALUE_TYPE, BLOCK_LENGTH > Iterator
Definition bslalg_dequeprimitives.h:951
void release()
Definition bslalg_dequeprimitives.h:3586
~DequePrimitives_DequeEndpointProctor()
Definition bslalg_dequeprimitives.h:3576
DequeIterator< VALUE_TYPE, BLOCK_LENGTH > Iterator
Definition bslalg_dequeprimitives.h:1132
void release()
Set the size of the range guarded by this object to be zero.
Definition bslalg_dequeprimitives.h:3553
~DequePrimitives_DequeMoveGuard()
Definition bslalg_dequeprimitives.h:3532
bslalg::DequePrimitives< VALUE_TYPE, BLOCK_LENGTH > DequePrimitives
Definition bslalg_dequeprimitives.h:1079
DequeIterator< VALUE_TYPE, BLOCK_LENGTH > Iterator
Definition bslalg_dequeprimitives.h:1078
~DequePrimitives_ExternalDequeElementGuard()
Definition bslalg_dequeprimitives.h:3491
void release()
Definition bslalg_dequeprimitives.h:3505
DequeIterator< VALUE_TYPE, BLOCK_LENGTH > Iterator
Definition bslalg_dequeprimitives.h:1019
Definition bslma_destructorproctor.h:259
Definition bslmf_movableref.h:752
#define BSLS_ASSERT_SAFE(X)
Definition bsls_assert.h:1917
#define BSLS_COMPILERFEATURES_FORWARD_REF(T)
Definition bsls_compilerfeatures.h:2343
#define BSLS_COMPILERFEATURES_FORWARD(T, V)
Definition bsls_compilerfeatures.h:2349
#define BSLS_UTIL_ADDRESSOF(OBJ)
Definition bsls_util.h:296
bsl::size_t size(const TYPE &array)
Return the number of elements in the specified array.
deque< VALUE_TYPE, ALLOCATOR >::size_type erase(deque< VALUE_TYPE, ALLOCATOR > &deq, const BDE_OTHER_TYPE &value)
Definition bslstl_deque.h:4424
T::iterator begin(T &container)
Definition bslstl_iterator.h:1593
T::iterator end(T &container)
Definition bslstl_iterator.h:1621
Definition bdlc_flathashmap.h:2218
@ BSLALG_DEQUEPRIMITIVES_BITWISE_COPYABLE_TRAITS
Definition bslalg_dequeprimitives.h:224
@ BSLALG_DEQUEPRIMITIVES_NON_NIL_TRAITS
Definition bslalg_dequeprimitives.h:225
@ BSLALG_DEQUEPRIMITIVES_BITWISE_MOVEABLE_TRAITS
Definition bslalg_dequeprimitives.h:223
@ BSLALG_DEQUEPRIMITIVES_NIL_TRAITS
Definition bslalg_dequeprimitives.h:222
static void construct(ALLOCATOR_TYPE &basicAllocator, ELEMENT_TYPE *elementAddr, Args &&... arguments)
Definition bslma_allocatortraits.h:1527
static void destroy(ALLOCATOR_TYPE &basicAllocator, ELEMENT_TYPE *elementAddr)
Definition bslma_allocatortraits.h:1549
Definition bslmf_integralconstant.h:261
static void defaultConstruct(typename bsl::allocator_traits< ALLOCATOR >::pointer begin, size_type numElements, ALLOCATOR allocator)
Definition bslalg_arrayprimitives.h:2129
static void uninitializedFillN(typename bsl::allocator_traits< ALLOCATOR >::pointer begin, size_type numElements, const typename bsl::allocator_traits< ALLOCATOR >::value_type &value, ALLOCATOR allocator)
Definition bslalg_arrayprimitives.h:1970
Definition bslalg_dequeprimitives.h:241
static void moveBack(Iterator *destination, Iterator *source, size_type numElements)
Definition bslalg_dequeprimitives.h:2463
static void insertAndMoveToBack(Iterator *toEnd, Iterator fromEnd, Iterator position, size_type numElements, const VALUE_TYPE &value, ALLOCATOR allocator)
Definition bslalg_dequeprimitives.h:1339
static void insertAndMoveToFront(Iterator *toBegin, Iterator fromBegin, Iterator position, size_type numElements, const VALUE_TYPE &value, ALLOCATOR allocator)
Definition bslalg_dequeprimitives.h:1754
static void uninitializedFillNFront(Iterator *toBegin, Iterator fromBegin, size_type numElements, const VALUE_TYPE &value, ALLOCATOR allocator)
Definition bslalg_dequeprimitives.h:2810
static void uninitializedFillNBack(Iterator *toEnd, Iterator fromEnd, size_type numElements, const VALUE_TYPE &value, ALLOCATOR allocator)
Definition bslalg_dequeprimitives.h:2717
static void moveInsertAndMoveToFront(Iterator *toBegin, Iterator fromBegin, Iterator position, bslmf::MovableRef< VALUE_TYPE > value, ALLOCATOR allocator)
Definition bslalg_dequeprimitives.h:2005
static void emplaceAndMoveToBack(Iterator *toEnd, Iterator fromEnd, Iterator position, ALLOCATOR allocator, Args &&... arguments)
Definition bslalg_dequeprimitives.h:2146
std::size_t size_type
Definition bslalg_dequeprimitives.h:244
static void emplaceAndMoveToFront(Iterator *toBegin, Iterator fromBegin, Iterator position, ALLOCATOR allocator, Args &&... arguments)
Definition bslalg_dequeprimitives.h:2307
DequeIterator< VALUE_TYPE, BLOCK_LENGTH > Iterator
Definition bslalg_dequeprimitives.h:245
static void valueInititalizeN(Iterator *toEnd, Iterator fromEnd, size_type numElements, ALLOCATOR allocator)
Definition bslalg_dequeprimitives.h:2766
static void moveInsertAndMoveToBack(Iterator *toEnd, Iterator fromEnd, Iterator position, bslmf::MovableRef< VALUE_TYPE > value, ALLOCATOR allocator)
Definition bslalg_dequeprimitives.h:1609
static Iterator erase(Iterator *toBegin, Iterator *toEnd, Iterator fromBegin, Iterator first, Iterator last, Iterator fromEnd, ALLOCATOR allocator)
Definition bslalg_dequeprimitives.h:1229
static void destruct(Iterator begin, Iterator end, ALLOCATOR allocator)
Definition bslalg_dequeprimitives.h:1181
static void moveFront(Iterator *destination, Iterator *source, size_type numElements)
Definition bslalg_dequeprimitives.h:2589
static void emplaceAndMoveToFrontDispatch(Iterator *toBegin, Iterator fromBegin, Iterator position, ALLOCATOR allocator, bsl::integral_constant< int, BSLALG_DEQUEPRIMITIVES_BITWISE_COPYABLE_TRAITS >, Args &&... arguments)
Definition bslalg_dequeprimitives.h:2336
static void emplaceAndMoveToBackDispatch(Iterator *toEnd, Iterator fromEnd, Iterator position, ALLOCATOR allocator, bsl::integral_constant< int, BSLALG_DEQUEPRIMITIVES_BITWISE_COPYABLE_TRAITS >, Args &&... arguments)
Definition bslalg_dequeprimitives.h:2175
static void construct(TARGET_TYPE *address, const ALLOCATOR &allocator)
Definition bslma_constructionutil.h:1244
static Allocator * allocator(Allocator *basicAllocator=0)
Definition bslma_default.h:913
Definition bslmf_isbitwisecopyable.h:298
Definition bslmf_isbitwisemoveable.h:718
Definition bslmf_functionpointertraits.h:163
Definition bslmf_isfundamental.h:303
Definition bslmf_ispointer.h:198
Definition bslmf_movableref.h:795
Definition bsls_objectbuffer.h:277
TYPE & object()
Definition bsls_objectbuffer.h:352