webruby 0.2.2 → 0.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/webruby/config.rb +4 -9
- data/lib/webruby/rake/files.rake +2 -2
- data/modules/emscripten/AUTHORS +9 -1
- data/modules/emscripten/CONTRIBUTING.markdown +5 -0
- data/modules/emscripten/ChangeLog +435 -0
- data/modules/emscripten/cmake/Modules/FindOpenAL.cmake +26 -0
- data/modules/emscripten/cmake/Platform/Emscripten.cmake +9 -2
- data/modules/emscripten/em++ +0 -2
- data/modules/emscripten/emcc +92 -32
- data/modules/emscripten/emlink.py +16 -13
- data/modules/emscripten/emmake +1 -1
- data/modules/emscripten/emrun +918 -0
- data/modules/emscripten/emrun.bat +2 -0
- data/modules/emscripten/emscripten.py +545 -20
- data/modules/emscripten/src/analyzer.js +6 -1
- data/modules/emscripten/src/compiler.js +25 -16
- data/modules/emscripten/src/emrun_postjs.js +20 -0
- data/modules/emscripten/{tests → src}/hello_world.js +0 -0
- data/modules/emscripten/src/intertyper.js +45 -16
- data/modules/emscripten/src/jsifier.js +78 -48
- data/modules/emscripten/src/library.js +381 -96
- data/modules/emscripten/src/library_browser.js +50 -53
- data/modules/emscripten/src/library_egl.js +66 -24
- data/modules/emscripten/src/library_fs.js +122 -90
- data/modules/emscripten/src/library_gl.js +739 -353
- data/modules/emscripten/src/library_glfw.js +9 -3
- data/modules/emscripten/src/library_glut.js +10 -5
- data/modules/emscripten/src/library_idbfs.js +14 -14
- data/modules/emscripten/src/library_memfs.js +65 -41
- data/modules/emscripten/src/library_nodefs.js +61 -9
- data/modules/emscripten/src/library_openal.js +4 -4
- data/modules/emscripten/src/library_path.js +9 -13
- data/modules/emscripten/src/library_sdl.js +301 -64
- data/modules/emscripten/src/library_sockfs.js +7 -5
- data/modules/emscripten/src/modules.js +62 -22
- data/modules/emscripten/src/parseTools.js +135 -102
- data/modules/emscripten/src/postamble.js +3 -4
- data/modules/emscripten/src/preamble.js +49 -29
- data/modules/emscripten/src/proxyClient.js +1 -1
- data/modules/emscripten/src/proxyWorker.js +10 -10
- data/modules/emscripten/src/relooper/Relooper.cpp +15 -4
- data/modules/emscripten/src/runtime.js +32 -8
- data/modules/emscripten/src/settings.js +25 -8
- data/modules/emscripten/src/shell.html +6 -3
- data/modules/emscripten/src/shell.js +13 -11
- data/modules/emscripten/src/simd.js +602 -432
- data/modules/emscripten/src/struct_info.json +22 -2
- data/modules/emscripten/src/utility.js +32 -17
- data/modules/emscripten/system/include/SDL/SDL_events.h +1 -0
- data/modules/emscripten/system/include/compat/ctype.h +17 -0
- data/modules/emscripten/system/include/compat/wchar.h +23 -0
- data/modules/emscripten/system/include/compat/wctype.h +23 -0
- data/modules/emscripten/system/include/emscripten/emmintrin.h +87 -0
- data/modules/emscripten/system/include/emscripten/emscripten.h +30 -4
- data/modules/emscripten/system/include/emscripten/vector.h +29 -1
- data/modules/emscripten/system/include/emscripten/xmmintrin.h +131 -0
- data/modules/emscripten/system/include/libcxx/CREDITS.TXT +9 -1
- data/modules/emscripten/system/include/libcxx/__bit_reference +8 -8
- data/modules/emscripten/system/include/libcxx/__config +95 -17
- data/modules/emscripten/system/include/libcxx/__debug +25 -4
- data/modules/emscripten/system/include/libcxx/__functional_03 +7 -7
- data/modules/emscripten/system/include/libcxx/__functional_base +169 -9
- data/modules/emscripten/system/include/libcxx/__functional_base_03 +1 -1
- data/modules/emscripten/system/include/libcxx/__hash_table +25 -25
- data/modules/emscripten/system/include/libcxx/__locale +21 -19
- data/modules/emscripten/system/include/libcxx/__mutex_base +2 -33
- data/modules/emscripten/system/include/libcxx/__split_buffer +9 -9
- data/modules/emscripten/system/include/libcxx/__std_stream +14 -0
- data/modules/emscripten/system/include/libcxx/__tree +35 -26
- data/modules/emscripten/system/include/libcxx/__tuple +15 -15
- data/modules/emscripten/system/include/libcxx/__tuple_03 +2 -2
- data/modules/emscripten/system/include/libcxx/__undef_min_max +8 -0
- data/modules/emscripten/system/include/libcxx/algorithm +121 -110
- data/modules/emscripten/system/include/libcxx/array +15 -15
- data/modules/emscripten/system/include/libcxx/bitset +4 -4
- data/modules/emscripten/system/include/libcxx/chrono +51 -17
- data/modules/emscripten/system/include/libcxx/cmath +25 -23
- data/modules/emscripten/system/include/libcxx/codecvt +21 -18
- data/modules/emscripten/system/include/libcxx/complex +48 -7
- data/modules/emscripten/system/include/libcxx/cstddef +1 -1
- data/modules/emscripten/system/include/libcxx/cstdio +8 -1
- data/modules/emscripten/system/include/libcxx/cstdlib +1 -1
- data/modules/emscripten/system/include/libcxx/cwchar +1 -1
- data/modules/emscripten/system/include/libcxx/deque +26 -12
- data/modules/emscripten/system/include/libcxx/dynarray +311 -0
- data/modules/emscripten/system/include/libcxx/exception +4 -4
- data/modules/emscripten/system/include/libcxx/ext/__hash +3 -3
- data/modules/emscripten/system/include/libcxx/ext/hash_map +19 -15
- data/modules/emscripten/system/include/libcxx/ext/hash_set +7 -3
- data/modules/emscripten/system/include/libcxx/forward_list +33 -7
- data/modules/emscripten/system/include/libcxx/fstream +4 -4
- data/modules/emscripten/system/include/libcxx/functional +200 -170
- data/modules/emscripten/system/include/libcxx/future +83 -39
- data/modules/emscripten/system/include/libcxx/initializer_list +24 -11
- data/modules/emscripten/system/include/libcxx/iomanip +147 -0
- data/modules/emscripten/system/include/libcxx/ios +24 -16
- data/modules/emscripten/system/include/libcxx/iosfwd +19 -19
- data/modules/emscripten/system/include/libcxx/istream +13 -8
- data/modules/emscripten/system/include/libcxx/iterator +108 -417
- data/modules/emscripten/system/include/libcxx/limits +8 -4
- data/modules/emscripten/system/include/libcxx/list +28 -8
- data/modules/emscripten/system/include/libcxx/locale +153 -390
- data/modules/emscripten/system/include/libcxx/map +280 -100
- data/modules/emscripten/system/include/libcxx/memory +49 -97
- data/modules/emscripten/system/include/libcxx/mutex +2 -2
- data/modules/emscripten/system/include/libcxx/new +43 -14
- data/modules/emscripten/system/include/libcxx/numeric +2 -2
- data/modules/emscripten/system/include/libcxx/optional +697 -0
- data/modules/emscripten/system/include/libcxx/ostream +17 -8
- data/modules/emscripten/system/include/libcxx/queue +5 -5
- data/modules/emscripten/system/include/libcxx/random +53 -51
- data/modules/emscripten/system/include/libcxx/ratio +11 -11
- data/modules/emscripten/system/include/libcxx/readme.txt +1 -1
- data/modules/emscripten/system/include/libcxx/regex +23 -20
- data/modules/emscripten/system/include/libcxx/scoped_allocator +1 -1
- data/modules/emscripten/system/include/libcxx/set +166 -2
- data/modules/emscripten/system/include/libcxx/shared_mutex +419 -0
- data/modules/emscripten/system/include/libcxx/sstream +4 -4
- data/modules/emscripten/system/include/libcxx/stack +3 -3
- data/modules/emscripten/system/include/libcxx/streambuf +5 -5
- data/modules/emscripten/system/include/libcxx/string +372 -324
- data/modules/emscripten/system/include/libcxx/support/ibm/limits.h +99 -0
- data/modules/emscripten/system/include/libcxx/support/ibm/support.h +54 -0
- data/modules/emscripten/system/include/libcxx/support/ibm/xlocale.h +326 -0
- data/modules/emscripten/system/include/libcxx/support/win32/limits_win32.h +6 -6
- data/modules/emscripten/system/include/libcxx/support/win32/locale_win32.h +15 -15
- data/modules/emscripten/system/include/libcxx/support/win32/math_win32.h +2 -0
- data/modules/emscripten/system/include/libcxx/support/win32/support.h +6 -1
- data/modules/emscripten/system/include/libcxx/system_error +14 -8
- data/modules/emscripten/system/include/libcxx/thread +7 -8
- data/modules/emscripten/system/include/libcxx/tuple +29 -88
- data/modules/emscripten/system/include/libcxx/type_traits +253 -209
- data/modules/emscripten/system/include/libcxx/typeindex +3 -3
- data/modules/emscripten/system/include/libcxx/unordered_map +162 -101
- data/modules/emscripten/system/include/libcxx/unordered_set +79 -2
- data/modules/emscripten/system/include/libcxx/utility +20 -20
- data/modules/emscripten/system/include/libcxx/valarray +23 -23
- data/modules/emscripten/system/include/libcxx/vector +114 -91
- data/modules/emscripten/system/lib/libc/musl/src/regex/regcomp.c +3352 -0
- data/modules/emscripten/system/lib/libc/musl/src/regex/regerror.c +35 -0
- data/modules/emscripten/system/lib/libc/musl/src/regex/regexec.c +1011 -0
- data/modules/emscripten/system/lib/libc/musl/src/regex/tre-mem.c +158 -0
- data/modules/emscripten/system/lib/libc/musl/src/regex/tre.h +231 -0
- data/modules/emscripten/system/lib/libcextra.symbols +7 -0
- data/modules/emscripten/system/lib/libcxx/CREDITS.TXT +9 -1
- data/modules/emscripten/system/lib/libcxx/algorithm.cpp +1 -0
- data/modules/emscripten/system/lib/libcxx/debug.cpp +66 -42
- data/modules/emscripten/system/lib/libcxx/exception.cpp +88 -16
- data/modules/emscripten/system/lib/libcxx/future.cpp +6 -0
- data/modules/emscripten/system/lib/libcxx/ios.cpp +7 -2
- data/modules/emscripten/system/lib/libcxx/iostream.cpp +8 -8
- data/modules/emscripten/system/lib/libcxx/locale.cpp +38 -11
- data/modules/emscripten/system/lib/libcxx/mutex.cpp +3 -0
- data/modules/emscripten/system/lib/libcxx/new.cpp +44 -10
- data/modules/emscripten/system/lib/libcxx/optional.cpp +25 -0
- data/modules/emscripten/system/lib/libcxx/random.cpp +26 -0
- data/modules/emscripten/system/lib/libcxx/readme.txt +1 -1
- data/modules/emscripten/system/lib/libcxx/shared_mutex.cpp +101 -0
- data/modules/emscripten/system/lib/libcxx/stdexcept.cpp +11 -7
- data/modules/emscripten/system/lib/libcxx/string.cpp +3 -1
- data/modules/emscripten/system/lib/libcxx/strstream.cpp +7 -7
- data/modules/emscripten/system/lib/libcxx/support/win32/locale_win32.cpp +12 -13
- data/modules/emscripten/system/lib/libcxx/support/win32/support.cpp +33 -36
- data/modules/emscripten/system/lib/libcxx/symbols +187 -168
- data/modules/emscripten/system/lib/libcxx/system_error.cpp +1 -0
- data/modules/emscripten/system/lib/libcxx/thread.cpp +7 -3
- data/modules/emscripten/system/lib/libcxx/typeinfo.cpp +9 -6
- data/modules/emscripten/system/lib/libcxx/valarray.cpp +2 -0
- data/modules/emscripten/third_party/lzma.js/doit.bat +4 -0
- data/modules/emscripten/third_party/lzma.js/doit.sh +9 -2
- data/modules/emscripten/tools/cache.py +5 -7
- data/modules/emscripten/tools/cache.pyc +0 -0
- data/modules/emscripten/tools/eliminator/asm-eliminator-test-output.js +7 -0
- data/modules/emscripten/tools/eliminator/asm-eliminator-test.js +9 -1
- data/modules/emscripten/tools/eliminator/eliminator-test-output.js +3 -0
- data/modules/emscripten/tools/eliminator/eliminator-test.js +9 -1
- data/modules/emscripten/tools/file_packager.py +93 -50
- data/modules/emscripten/tools/js-optimizer.js +98 -48
- data/modules/emscripten/tools/js_optimizer.py +4 -4
- data/modules/emscripten/tools/js_optimizer.pyc +0 -0
- data/modules/emscripten/tools/jsrun.py +1 -1
- data/modules/emscripten/tools/jsrun.pyc +0 -0
- data/modules/emscripten/tools/response_file.py +6 -0
- data/modules/emscripten/tools/response_file.pyc +0 -0
- data/modules/emscripten/tools/settings_template_readonly.py +2 -0
- data/modules/emscripten/tools/shared.py +88 -34
- data/modules/emscripten/tools/shared.pyc +0 -0
- data/modules/emscripten/tools/split.py +21 -13
- data/modules/mruby/build_config.rb +7 -1
- data/modules/mruby/doc/compile/README.md +5 -9
- data/modules/mruby/include/mrbconf.h +5 -2
- data/modules/mruby/include/mruby/array.h +1 -0
- data/modules/mruby/include/mruby/compile.h +2 -4
- data/modules/mruby/include/mruby/dump.h +7 -16
- data/modules/mruby/include/mruby/hash.h +1 -1
- data/modules/mruby/include/mruby/irep.h +14 -2
- data/modules/mruby/include/mruby/khash.h +8 -7
- data/modules/mruby/include/mruby/string.h +1 -0
- data/modules/mruby/include/mruby/value.h +5 -2
- data/modules/mruby/include/mruby.h +12 -13
- data/modules/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c +16 -6
- data/modules/mruby/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c +18 -30
- data/modules/mruby/mrbgems/mruby-fiber/src/fiber.c +21 -0
- data/modules/mruby/mrbgems/mruby-math/src/math.c +1 -1
- data/modules/mruby/mrbgems/mruby-random/src/random.c +144 -47
- data/modules/mruby/mrbgems/mruby-random/test/random.rb +44 -0
- data/modules/mruby/mrbgems/mruby-struct/src/struct.c +5 -5
- data/modules/mruby/mrblib/numeric.rb +99 -33
- data/modules/mruby/src/array.c +11 -4
- data/modules/mruby/src/backtrace.c +2 -2
- data/modules/mruby/src/class.c +49 -30
- data/modules/mruby/src/codegen.c +131 -79
- data/modules/mruby/src/debug.c +1 -1
- data/modules/mruby/src/dump.c +213 -163
- data/modules/mruby/src/error.c +17 -17
- data/modules/mruby/src/error.h +1 -1
- data/modules/mruby/src/etc.c +10 -0
- data/modules/mruby/src/gc.c +35 -17
- data/modules/mruby/src/hash.c +5 -5
- data/modules/mruby/src/kernel.c +36 -14
- data/modules/mruby/src/load.c +238 -296
- data/modules/mruby/src/numeric.c +18 -98
- data/modules/mruby/src/object.c +3 -5
- data/modules/mruby/src/parse.y +63 -56
- data/modules/mruby/src/proc.c +8 -5
- data/modules/mruby/src/re.h +0 -1
- data/modules/mruby/src/state.c +65 -27
- data/modules/mruby/src/string.c +3 -31
- data/modules/mruby/src/symbol.c +3 -3
- data/modules/mruby/src/variable.c +12 -5
- data/modules/mruby/src/vm.c +90 -72
- data/modules/mruby/tasks/mruby_build.rake +10 -1
- data/modules/mruby/tasks/toolchains/gcc.rake +12 -2
- data/modules/mruby/tasks/toolchains/{vs2012.rake → visualcpp.rake} +1 -1
- data/modules/mruby/test/driver.c +3 -3
- data/modules/mruby/test/t/array.rb +5 -5
- data/modules/mruby/test/t/class.rb +14 -1
- data/modules/mruby/test/t/kernel.rb +4 -0
- data/modules/mruby/test/t/module.rb +4 -4
- data/modules/mruby/test/t/nameerror.rb +1 -1
- data/modules/mruby/tools/mrbc/mrbc.c +23 -17
- data/modules/mruby/travis_config.rb +10 -1
- metadata +28 -5
- data/modules/mruby/tasks/toolchains/vs2010.rake +0 -3
@@ -309,6 +309,19 @@ template <class C> auto end(const C& c) -> decltype(c.end());
|
|
309
309
|
template <class T, size_t N> T* begin(T (&array)[N]);
|
310
310
|
template <class T, size_t N> T* end(T (&array)[N]);
|
311
311
|
|
312
|
+
template <class C> auto cbegin(const C& c) -> decltype(std::begin(c)); // C++14
|
313
|
+
template <class C> auto cend(const C& c) -> decltype(std::end(c)); // C++14
|
314
|
+
template <class C> auto rbegin(C& c) -> decltype(c.rbegin()); // C++14
|
315
|
+
template <class C> auto rbegin(const C& c) -> decltype(c.rbegin()); // C++14
|
316
|
+
template <class C> auto rend(C& c) -> decltype(c.rend()); // C++14
|
317
|
+
template <class C> auto rend(const C& c) -> decltype(c.rend()); // C++14
|
318
|
+
template <class E> reverse_iterator<const E*> rbegin(initializer_list<E> il); // C++14
|
319
|
+
template <class E> reverse_iterator<const E*> rend(initializer_list<E> il); // C++14
|
320
|
+
template <class T, size_t N> reverse_iterator<T*> rbegin(T (&array)[N]); // C++14
|
321
|
+
template <class T, size_t N> reverse_iterator<T*> rend(T (&array)[N]); // C++14
|
322
|
+
template <class C> auto crbegin(const C& c) -> decltype(std::rbegin(c)); // C++14
|
323
|
+
template <class C> auto crend(const C& c) -> decltype(std::rend(c)); // C++14
|
324
|
+
|
312
325
|
} // std
|
313
326
|
|
314
327
|
*/
|
@@ -317,11 +330,12 @@ template <class T, size_t N> T* end(T (&array)[N]);
|
|
317
330
|
#include <type_traits>
|
318
331
|
#include <cstddef>
|
319
332
|
#include <iosfwd>
|
333
|
+
#include <initializer_list>
|
320
334
|
#ifdef __APPLE__
|
321
335
|
#include <Availability.h>
|
322
336
|
#endif
|
323
337
|
|
324
|
-
#ifdef
|
338
|
+
#ifdef _LIBCPP_DEBUG
|
325
339
|
# include <__debug>
|
326
340
|
#else
|
327
341
|
# define _LIBCPP_ASSERT(x, m) ((void)0)
|
@@ -333,11 +347,11 @@ template <class T, size_t N> T* end(T (&array)[N]);
|
|
333
347
|
|
334
348
|
_LIBCPP_BEGIN_NAMESPACE_STD
|
335
349
|
|
336
|
-
struct
|
337
|
-
struct
|
338
|
-
struct
|
339
|
-
struct
|
340
|
-
struct
|
350
|
+
struct _LIBCPP_TYPE_VIS_ONLY input_iterator_tag {};
|
351
|
+
struct _LIBCPP_TYPE_VIS_ONLY output_iterator_tag {};
|
352
|
+
struct _LIBCPP_TYPE_VIS_ONLY forward_iterator_tag : public input_iterator_tag {};
|
353
|
+
struct _LIBCPP_TYPE_VIS_ONLY bidirectional_iterator_tag : public forward_iterator_tag {};
|
354
|
+
struct _LIBCPP_TYPE_VIS_ONLY random_access_iterator_tag : public bidirectional_iterator_tag {};
|
341
355
|
|
342
356
|
template <class _Tp>
|
343
357
|
struct __has_iterator_category
|
@@ -380,11 +394,11 @@ struct __iterator_traits<_Iter, true>
|
|
380
394
|
// the client expects instead of failing at compile time.
|
381
395
|
|
382
396
|
template <class _Iter>
|
383
|
-
struct
|
397
|
+
struct _LIBCPP_TYPE_VIS_ONLY iterator_traits
|
384
398
|
: __iterator_traits<_Iter, __has_iterator_category<_Iter>::value> {};
|
385
399
|
|
386
400
|
template<class _Tp>
|
387
|
-
struct
|
401
|
+
struct _LIBCPP_TYPE_VIS_ONLY iterator_traits<_Tp*>
|
388
402
|
{
|
389
403
|
typedef ptrdiff_t difference_type;
|
390
404
|
typedef typename remove_const<_Tp>::type value_type;
|
@@ -415,7 +429,7 @@ struct __is_random_access_iterator : public __has_iterator_category_convertible_
|
|
415
429
|
|
416
430
|
template<class _Category, class _Tp, class _Distance = ptrdiff_t,
|
417
431
|
class _Pointer = _Tp*, class _Reference = _Tp&>
|
418
|
-
struct
|
432
|
+
struct _LIBCPP_TYPE_VIS_ONLY iterator
|
419
433
|
{
|
420
434
|
typedef _Tp value_type;
|
421
435
|
typedef _Distance difference_type;
|
@@ -512,7 +526,7 @@ prev(_BidiretionalIter __x,
|
|
512
526
|
}
|
513
527
|
|
514
528
|
template <class _Iter>
|
515
|
-
class
|
529
|
+
class _LIBCPP_TYPE_VIS_ONLY reverse_iterator
|
516
530
|
: public iterator<typename iterator_traits<_Iter>::iterator_category,
|
517
531
|
typename iterator_traits<_Iter>::value_type,
|
518
532
|
typename iterator_traits<_Iter>::difference_type,
|
@@ -619,7 +633,7 @@ operator+(typename reverse_iterator<_Iter>::difference_type __n, const reverse_i
|
|
619
633
|
}
|
620
634
|
|
621
635
|
template <class _Container>
|
622
|
-
class
|
636
|
+
class _LIBCPP_TYPE_VIS_ONLY back_insert_iterator
|
623
637
|
: public iterator<output_iterator_tag,
|
624
638
|
void,
|
625
639
|
void,
|
@@ -652,7 +666,7 @@ back_inserter(_Container& __x)
|
|
652
666
|
}
|
653
667
|
|
654
668
|
template <class _Container>
|
655
|
-
class
|
669
|
+
class _LIBCPP_TYPE_VIS_ONLY front_insert_iterator
|
656
670
|
: public iterator<output_iterator_tag,
|
657
671
|
void,
|
658
672
|
void,
|
@@ -685,7 +699,7 @@ front_inserter(_Container& __x)
|
|
685
699
|
}
|
686
700
|
|
687
701
|
template <class _Container>
|
688
|
-
class
|
702
|
+
class _LIBCPP_TYPE_VIS_ONLY insert_iterator
|
689
703
|
: public iterator<output_iterator_tag,
|
690
704
|
void,
|
691
705
|
void,
|
@@ -721,7 +735,7 @@ inserter(_Container& __x, typename _Container::iterator __i)
|
|
721
735
|
|
722
736
|
template <class _Tp, class _CharT = char,
|
723
737
|
class _Traits = char_traits<_CharT>, class _Distance = ptrdiff_t>
|
724
|
-
class
|
738
|
+
class _LIBCPP_TYPE_VIS_ONLY istream_iterator
|
725
739
|
: public iterator<input_iterator_tag, _Tp, _Distance, const _Tp*, const _Tp&>
|
726
740
|
{
|
727
741
|
public:
|
@@ -760,7 +774,7 @@ public:
|
|
760
774
|
};
|
761
775
|
|
762
776
|
template <class _Tp, class _CharT = char, class _Traits = char_traits<_CharT> >
|
763
|
-
class
|
777
|
+
class _LIBCPP_TYPE_VIS_ONLY ostream_iterator
|
764
778
|
: public iterator<output_iterator_tag, void, void, void, void>
|
765
779
|
{
|
766
780
|
public:
|
@@ -789,7 +803,7 @@ public:
|
|
789
803
|
};
|
790
804
|
|
791
805
|
template<class _CharT, class _Traits>
|
792
|
-
class
|
806
|
+
class _LIBCPP_TYPE_VIS_ONLY istreambuf_iterator
|
793
807
|
: public iterator<input_iterator_tag, _CharT,
|
794
808
|
typename _Traits::off_type, _CharT*,
|
795
809
|
_CharT>
|
@@ -860,7 +874,7 @@ bool operator!=(const istreambuf_iterator<_CharT,_Traits>& __a,
|
|
860
874
|
{return !__a.equal(__b);}
|
861
875
|
|
862
876
|
template <class _CharT, class _Traits>
|
863
|
-
class
|
877
|
+
class _LIBCPP_TYPE_VIS_ONLY ostreambuf_iterator
|
864
878
|
: public iterator<output_iterator_tag, void, void, void, void>
|
865
879
|
{
|
866
880
|
public:
|
@@ -901,7 +915,7 @@ public:
|
|
901
915
|
};
|
902
916
|
|
903
917
|
template <class _Iter>
|
904
|
-
class
|
918
|
+
class _LIBCPP_TYPE_VIS_ONLY move_iterator
|
905
919
|
{
|
906
920
|
private:
|
907
921
|
_Iter __i;
|
@@ -1016,7 +1030,7 @@ operator+(typename move_iterator<_Iter>::difference_type __n, const move_iterato
|
|
1016
1030
|
template <class _Iter>
|
1017
1031
|
inline _LIBCPP_INLINE_VISIBILITY
|
1018
1032
|
move_iterator<_Iter>
|
1019
|
-
make_move_iterator(
|
1033
|
+
make_move_iterator(_Iter __i)
|
1020
1034
|
{
|
1021
1035
|
return move_iterator<_Iter>(__i);
|
1022
1036
|
}
|
@@ -1197,12 +1211,13 @@ public:
|
|
1197
1211
|
_LIBCPP_INLINE_VISIBILITY iterator_type base() const _NOEXCEPT {return __i;}
|
1198
1212
|
|
1199
1213
|
private:
|
1200
|
-
_LIBCPP_INLINE_VISIBILITY __wrap_iter(iterator_type __x) _NOEXCEPT : __i(__x) {}
|
1201
1214
|
#if _LIBCPP_DEBUG_LEVEL >= 2
|
1202
1215
|
_LIBCPP_INLINE_VISIBILITY __wrap_iter(const void* __p, iterator_type __x) : __i(__x)
|
1203
1216
|
{
|
1204
1217
|
__get_db()->__insert_ic(this, __p);
|
1205
1218
|
}
|
1219
|
+
#else
|
1220
|
+
_LIBCPP_INLINE_VISIBILITY __wrap_iter(iterator_type __x) _NOEXCEPT : __i(__x) {}
|
1206
1221
|
#endif
|
1207
1222
|
|
1208
1223
|
template <class _Up> friend class __wrap_iter;
|
@@ -1370,456 +1385,101 @@ operator+(typename __wrap_iter<_Iter>::difference_type __n,
|
|
1370
1385
|
return __x;
|
1371
1386
|
}
|
1372
1387
|
|
1373
|
-
#
|
1374
|
-
|
1375
|
-
// __debug_iter
|
1376
|
-
|
1377
|
-
template <class _Container, class _Iter> class __debug_iter;
|
1378
|
-
|
1379
|
-
template <class _Container, class _Iter1, class _Iter2>
|
1380
|
-
_LIBCPP_INLINE_VISIBILITY
|
1381
|
-
bool
|
1382
|
-
operator==(const __debug_iter<_Container, _Iter1>&, const __debug_iter<_Container, _Iter2>&);
|
1383
|
-
|
1384
|
-
template <class _Container, class _Iter1, class _Iter2>
|
1385
|
-
_LIBCPP_INLINE_VISIBILITY
|
1386
|
-
bool
|
1387
|
-
operator<(const __debug_iter<_Container, _Iter1>&, const __debug_iter<_Container, _Iter2>&);
|
1388
|
-
|
1389
|
-
template <class _Container, class _Iter1, class _Iter2>
|
1390
|
-
_LIBCPP_INLINE_VISIBILITY
|
1391
|
-
bool
|
1392
|
-
operator!=(const __debug_iter<_Container, _Iter1>&, const __debug_iter<_Container, _Iter2>&);
|
1393
|
-
|
1394
|
-
template <class _Container, class _Iter1, class _Iter2>
|
1395
|
-
_LIBCPP_INLINE_VISIBILITY
|
1396
|
-
bool
|
1397
|
-
operator>(const __debug_iter<_Container, _Iter1>&, const __debug_iter<_Container, _Iter2>&);
|
1398
|
-
|
1399
|
-
template <class _Container, class _Iter1, class _Iter2>
|
1400
|
-
_LIBCPP_INLINE_VISIBILITY
|
1401
|
-
bool
|
1402
|
-
operator>=(const __debug_iter<_Container, _Iter1>&, const __debug_iter<_Container, _Iter2>&);
|
1403
|
-
|
1404
|
-
template <class _Container, class _Iter1, class _Iter2>
|
1405
|
-
_LIBCPP_INLINE_VISIBILITY
|
1406
|
-
bool
|
1407
|
-
operator<=(const __debug_iter<_Container, _Iter1>&, const __debug_iter<_Container, _Iter2>&);
|
1408
|
-
|
1409
|
-
template <class _Container, class _Iter1, class _Iter2>
|
1410
|
-
_LIBCPP_INLINE_VISIBILITY
|
1411
|
-
typename __debug_iter<_Container, _Iter1>::difference_type
|
1412
|
-
operator-(const __debug_iter<_Container, _Iter1>&, const __debug_iter<_Container, _Iter2>&);
|
1413
|
-
|
1414
|
-
template <class _Container, class _Iter>
|
1415
|
-
_LIBCPP_INLINE_VISIBILITY
|
1416
|
-
__debug_iter<_Container, _Iter>
|
1417
|
-
operator+(typename __debug_iter<_Container, _Iter>::difference_type, const __debug_iter<_Container, _Iter>&);
|
1418
|
-
|
1419
|
-
template <class _Container, class _Iter>
|
1420
|
-
class __debug_iter
|
1421
|
-
{
|
1422
|
-
public:
|
1423
|
-
typedef _Iter iterator_type;
|
1424
|
-
typedef _Container __container_type;
|
1425
|
-
typedef typename iterator_traits<iterator_type>::iterator_category iterator_category;
|
1426
|
-
typedef typename iterator_traits<iterator_type>::value_type value_type;
|
1427
|
-
typedef typename iterator_traits<iterator_type>::difference_type difference_type;
|
1428
|
-
typedef typename iterator_traits<iterator_type>::pointer pointer;
|
1429
|
-
typedef typename iterator_traits<iterator_type>::reference reference;
|
1430
|
-
private:
|
1431
|
-
iterator_type __i;
|
1432
|
-
__debug_iter* __next;
|
1433
|
-
__container_type* __cont;
|
1434
|
-
|
1435
|
-
public:
|
1436
|
-
_LIBCPP_INLINE_VISIBILITY __debug_iter() : __next(0), __cont(0) {}
|
1437
|
-
_LIBCPP_INLINE_VISIBILITY __debug_iter(const __debug_iter& __x)
|
1438
|
-
: __i(__x.base()), __next(0), __cont(0) {__set_owner(__x.__cont);}
|
1439
|
-
__debug_iter& operator=(const __debug_iter& __x);
|
1440
|
-
template <class _Up> _LIBCPP_INLINE_VISIBILITY __debug_iter(const __debug_iter<_Container, _Up>& __u,
|
1441
|
-
typename enable_if<is_convertible<_Up, iterator_type>::value>::type* = 0)
|
1442
|
-
: __i(__u.base()), __next(0), __cont(0) {__set_owner(__u.__cont);}
|
1443
|
-
_LIBCPP_INLINE_VISIBILITY ~__debug_iter() {__remove_owner();}
|
1444
|
-
_LIBCPP_INLINE_VISIBILITY reference operator*() const {assert(__is_deref()); return *__i;}
|
1445
|
-
_LIBCPP_INLINE_VISIBILITY pointer operator->() const {return &(operator*());}
|
1446
|
-
_LIBCPP_INLINE_VISIBILITY __debug_iter& operator++() {assert(__can_increment()); ++__i; return *this;}
|
1447
|
-
_LIBCPP_INLINE_VISIBILITY __debug_iter operator++(int)
|
1448
|
-
{__debug_iter __tmp(*this); operator++(); return __tmp;}
|
1449
|
-
_LIBCPP_INLINE_VISIBILITY __debug_iter& operator--() {assert(__can_decrement()); --__i; return *this;}
|
1450
|
-
_LIBCPP_INLINE_VISIBILITY __debug_iter operator--(int)
|
1451
|
-
{__debug_iter __tmp(*this); operator--(); return __tmp;}
|
1452
|
-
_LIBCPP_INLINE_VISIBILITY __debug_iter operator+ (difference_type __n) const
|
1453
|
-
{__debug_iter __t(*this); __t += __n; return __t;}
|
1454
|
-
__debug_iter& operator+=(difference_type __n);
|
1455
|
-
_LIBCPP_INLINE_VISIBILITY __debug_iter operator- (difference_type __n) const
|
1456
|
-
{__debug_iter __t(*this); __t -= __n; return __t;}
|
1457
|
-
_LIBCPP_INLINE_VISIBILITY __debug_iter& operator-=(difference_type __n)
|
1458
|
-
{*this += -__n; return *this;}
|
1459
|
-
_LIBCPP_INLINE_VISIBILITY reference operator[](difference_type __n) const
|
1460
|
-
{return *(*this + __n);}
|
1461
|
-
|
1462
|
-
private:
|
1463
|
-
_LIBCPP_INLINE_VISIBILITY __debug_iter(const __container_type* __c, iterator_type __x)
|
1464
|
-
: __i(__x), __next(0), __cont(0) {__set_owner(__c);}
|
1465
|
-
_LIBCPP_INLINE_VISIBILITY iterator_type base() const {return __i;}
|
1466
|
-
|
1467
|
-
void __set_owner(const __container_type* __c);
|
1468
|
-
void __remove_owner();
|
1469
|
-
static void __remove_all(__container_type* __c);
|
1470
|
-
static void swap(__container_type* __x, __container_type* __y);
|
1471
|
-
|
1472
|
-
_LIBCPP_INLINE_VISIBILITY bool __is_deref() const
|
1473
|
-
{return __is_deref(__is_random_access_iterator<iterator_type>());}
|
1474
|
-
bool __is_deref(false_type) const;
|
1475
|
-
bool __is_deref(true_type) const;
|
1476
|
-
_LIBCPP_INLINE_VISIBILITY bool __can_decrement() const
|
1477
|
-
{return __can_decrement(integral_constant<int, is_pointer<iterator_type>::value ? 2:
|
1478
|
-
__is_random_access_iterator<iterator_type>::value ? 1 : 0>());}
|
1479
|
-
bool __can_decrement(integral_constant<int, 0>) const;
|
1480
|
-
bool __can_decrement(integral_constant<int, 1>) const;
|
1481
|
-
bool __can_decrement(integral_constant<int, 2>) const;
|
1482
|
-
_LIBCPP_INLINE_VISIBILITY bool __can_increment() const
|
1483
|
-
{return __can_increment(integral_constant<int, is_pointer<iterator_type>::value ? 2:
|
1484
|
-
__is_random_access_iterator<iterator_type>::value ? 1 : 0>());}
|
1485
|
-
bool __can_increment(integral_constant<int, 0>) const;
|
1486
|
-
bool __can_increment(integral_constant<int, 1>) const;
|
1487
|
-
bool __can_increment(integral_constant<int, 2>) const;
|
1488
|
-
|
1489
|
-
_LIBCPP_INLINE_VISIBILITY bool __can_add(difference_type __n) const
|
1490
|
-
{return __can_add(__n, is_pointer<iterator_type>());}
|
1491
|
-
bool __can_add(difference_type __n, false_type) const;
|
1492
|
-
bool __can_add(difference_type __n, true_type) const;
|
1493
|
-
|
1494
|
-
template <class _Cp, class _Up> friend class __debug_iter;
|
1495
|
-
friend class _Container::__self;
|
1496
|
-
|
1497
|
-
template <class _Cp, class _Iter1, class _Iter2>
|
1498
|
-
friend
|
1499
|
-
bool
|
1500
|
-
operator==(const __debug_iter<_Cp, _Iter1>&, const __debug_iter<_Cp, _Iter2>&);
|
1501
|
-
|
1502
|
-
template <class _Cp, class _Iter1, class _Iter2>
|
1503
|
-
friend
|
1504
|
-
bool
|
1505
|
-
operator<(const __debug_iter<_Cp, _Iter1>&, const __debug_iter<_Cp, _Iter2>&);
|
1506
|
-
|
1507
|
-
template <class _Cp, class _Iter1, class _Iter2>
|
1508
|
-
friend
|
1509
|
-
bool
|
1510
|
-
operator!=(const __debug_iter<_Cp, _Iter1>&, const __debug_iter<_Cp, _Iter2>&);
|
1511
|
-
|
1512
|
-
template <class _Cp, class _Iter1, class _Iter2>
|
1513
|
-
friend
|
1514
|
-
bool
|
1515
|
-
operator>(const __debug_iter<_Cp, _Iter1>&, const __debug_iter<_Cp, _Iter2>&);
|
1516
|
-
|
1517
|
-
template <class _Cp, class _Iter1, class _Iter2>
|
1518
|
-
friend
|
1519
|
-
bool
|
1520
|
-
operator>=(const __debug_iter<_Cp, _Iter1>&, const __debug_iter<_Cp, _Iter2>&);
|
1521
|
-
|
1522
|
-
template <class _Cp, class _Iter1, class _Iter2>
|
1523
|
-
friend
|
1524
|
-
bool
|
1525
|
-
operator<=(const __debug_iter<_Cp, _Iter1>&, const __debug_iter<_Cp, _Iter2>&);
|
1526
|
-
|
1527
|
-
template <class _Cp, class _Iter1, class _Iter2>
|
1528
|
-
friend
|
1529
|
-
typename __debug_iter<_Cp, _Iter1>::difference_type
|
1530
|
-
operator-(const __debug_iter<_Cp, _Iter1>&, const __debug_iter<_Cp, _Iter2>&);
|
1531
|
-
|
1532
|
-
template <class _Cp, class _Iter1>
|
1533
|
-
friend
|
1534
|
-
__debug_iter<_Cp, _Iter1>
|
1535
|
-
operator+(typename __debug_iter<_Cp, _Iter1>::difference_type, const __debug_iter<_Cp, _Iter1>&);
|
1536
|
-
};
|
1537
|
-
|
1538
|
-
template <class _Container, class _Iter>
|
1539
|
-
__debug_iter<_Container, _Iter>&
|
1540
|
-
__debug_iter<_Container, _Iter>::operator=(const __debug_iter& __x)
|
1541
|
-
{
|
1542
|
-
if (this != &__x)
|
1543
|
-
{
|
1544
|
-
__remove_owner();
|
1545
|
-
__i = __x.__i;
|
1546
|
-
__set_owner(__x.__cont);
|
1547
|
-
}
|
1548
|
-
return *this;
|
1549
|
-
}
|
1550
|
-
|
1551
|
-
template <class _Container, class _Iter>
|
1552
|
-
void
|
1553
|
-
__debug_iter<_Container, _Iter>::__set_owner(const __container_type* __c)
|
1554
|
-
{
|
1555
|
-
__cont = const_cast<__container_type*>(__c);
|
1556
|
-
__debug_iter*& __head = __cont->__get_iterator_list(this);
|
1557
|
-
__next = __head;
|
1558
|
-
__head = this;
|
1559
|
-
}
|
1560
|
-
|
1561
|
-
template <class _Container, class _Iter>
|
1562
|
-
void
|
1563
|
-
__debug_iter<_Container, _Iter>::__remove_owner()
|
1564
|
-
{
|
1565
|
-
if (__cont)
|
1566
|
-
{
|
1567
|
-
__debug_iter*& __head = __cont->__get_iterator_list(this);
|
1568
|
-
if (__head == this)
|
1569
|
-
__head = __next;
|
1570
|
-
else
|
1571
|
-
{
|
1572
|
-
__debug_iter* __prev = __head;
|
1573
|
-
for (__debug_iter* __p = __head->__next; __p != this; __p = __p->__next)
|
1574
|
-
__prev = __p;
|
1575
|
-
__prev->__next = __next;
|
1576
|
-
}
|
1577
|
-
__cont = 0;
|
1578
|
-
}
|
1579
|
-
}
|
1580
|
-
|
1581
|
-
template <class _Container, class _Iter>
|
1582
|
-
void
|
1583
|
-
__debug_iter<_Container, _Iter>::__remove_all(__container_type* __c)
|
1584
|
-
{
|
1585
|
-
__debug_iter*& __head = __c->__get_iterator_list((__debug_iter*)0);
|
1586
|
-
__debug_iter* __p = __head;
|
1587
|
-
__head = 0;
|
1588
|
-
while (__p)
|
1589
|
-
{
|
1590
|
-
__p->__cont = 0;
|
1591
|
-
__debug_iter* __n = __p->__next;
|
1592
|
-
__p->__next = 0;
|
1593
|
-
__p = __n;
|
1594
|
-
}
|
1595
|
-
}
|
1596
|
-
|
1597
|
-
template <class _Container, class _Iter>
|
1598
|
-
void
|
1599
|
-
__debug_iter<_Container, _Iter>::swap(__container_type* __x, __container_type* __y)
|
1600
|
-
{
|
1601
|
-
__debug_iter*& __head_x = __x->__get_iterator_list((__debug_iter*)0);
|
1602
|
-
__debug_iter*& __head_y = __y->__get_iterator_list((__debug_iter*)0);
|
1603
|
-
__debug_iter* __p = __head_x;
|
1604
|
-
__head_x = __head_y;
|
1605
|
-
__head_y = __p;
|
1606
|
-
for (__p = __head_x; __p; __p = __p->__next)
|
1607
|
-
__p->__cont = __x;
|
1608
|
-
for (__p = __head_y; __p; __p = __p->__next)
|
1609
|
-
__p->__cont = __y;
|
1610
|
-
}
|
1611
|
-
|
1612
|
-
template <class _Container, class _Iter>
|
1613
|
-
bool
|
1614
|
-
__debug_iter<_Container, _Iter>::__is_deref(false_type) const
|
1615
|
-
{
|
1616
|
-
if (__cont == 0)
|
1617
|
-
return false;
|
1618
|
-
return __i != __cont->end().base();
|
1619
|
-
}
|
1620
|
-
|
1621
|
-
template <class _Container, class _Iter>
|
1622
|
-
bool
|
1623
|
-
__debug_iter<_Container, _Iter>::__is_deref(true_type) const
|
1624
|
-
{
|
1625
|
-
if (__cont == 0)
|
1626
|
-
return false;
|
1627
|
-
return __i < __cont->end().base();
|
1628
|
-
}
|
1629
|
-
|
1630
|
-
template <class _Container, class _Iter>
|
1631
|
-
bool
|
1632
|
-
__debug_iter<_Container, _Iter>::__can_decrement(integral_constant<int, 0>) const
|
1633
|
-
{
|
1634
|
-
if (__cont == 0)
|
1635
|
-
return false;
|
1636
|
-
return __i != __cont->begin().base();
|
1637
|
-
}
|
1638
|
-
|
1639
|
-
template <class _Container, class _Iter>
|
1640
|
-
bool
|
1641
|
-
__debug_iter<_Container, _Iter>::__can_decrement(integral_constant<int, 1>) const
|
1642
|
-
{
|
1643
|
-
if (__cont == 0)
|
1644
|
-
return false;
|
1645
|
-
iterator_type __b = __cont->begin().base();
|
1646
|
-
return __b < __i && __i <= __b + __cont->size();
|
1647
|
-
}
|
1648
|
-
|
1649
|
-
template <class _Container, class _Iter>
|
1650
|
-
bool
|
1651
|
-
__debug_iter<_Container, _Iter>::__can_decrement(integral_constant<int, 2>) const
|
1652
|
-
{
|
1653
|
-
if (__cont == 0)
|
1654
|
-
return false;
|
1655
|
-
iterator_type __b = __cont->begin().base();
|
1656
|
-
return __b < __i && __i <= __b + __cont->size();
|
1657
|
-
}
|
1658
|
-
|
1659
|
-
template <class _Container, class _Iter>
|
1660
|
-
bool
|
1661
|
-
__debug_iter<_Container, _Iter>::__can_increment(integral_constant<int, 0>) const
|
1662
|
-
{
|
1663
|
-
if (__cont == 0)
|
1664
|
-
return false;
|
1665
|
-
return __i != __cont->end().base();
|
1666
|
-
}
|
1667
|
-
|
1668
|
-
template <class _Container, class _Iter>
|
1669
|
-
bool
|
1670
|
-
__debug_iter<_Container, _Iter>::__can_increment(integral_constant<int, 1>) const
|
1671
|
-
{
|
1672
|
-
if (__cont == 0)
|
1673
|
-
return false;
|
1674
|
-
iterator_type __b = __cont->begin().base();
|
1675
|
-
return __b <= __i && __i < __b + __cont->size();
|
1676
|
-
}
|
1677
|
-
|
1678
|
-
template <class _Container, class _Iter>
|
1679
|
-
bool
|
1680
|
-
__debug_iter<_Container, _Iter>::__can_increment(integral_constant<int, 2>) const
|
1681
|
-
{
|
1682
|
-
if (__cont == 0)
|
1683
|
-
return false;
|
1684
|
-
iterator_type __b = __cont->begin().base();
|
1685
|
-
return __b <= __i && __i < __b + __cont->size();
|
1686
|
-
}
|
1687
|
-
|
1688
|
-
template <class _Container, class _Iter>
|
1689
|
-
bool
|
1690
|
-
__debug_iter<_Container, _Iter>::__can_add(difference_type __n, false_type) const
|
1691
|
-
{
|
1692
|
-
if (__cont == 0)
|
1693
|
-
return false;
|
1694
|
-
iterator_type __b = __cont->begin().base();
|
1695
|
-
iterator_type __j = __i + __n;
|
1696
|
-
return __b <= __j && __j <= __b + __cont->size();
|
1697
|
-
}
|
1698
|
-
|
1699
|
-
template <class _Container, class _Iter>
|
1700
|
-
bool
|
1701
|
-
__debug_iter<_Container, _Iter>::__can_add(difference_type __n, true_type) const
|
1702
|
-
{
|
1703
|
-
if (__cont == 0)
|
1704
|
-
return false;
|
1705
|
-
iterator_type __b = __cont->begin().base();
|
1706
|
-
iterator_type __j = __i + __n;
|
1707
|
-
return __b <= __j && __j <= __b + __cont->size();
|
1708
|
-
}
|
1709
|
-
|
1710
|
-
template <class _Container, class _Iter>
|
1711
|
-
__debug_iter<_Container, _Iter>&
|
1712
|
-
__debug_iter<_Container, _Iter>::operator+=(difference_type __n)
|
1713
|
-
{
|
1714
|
-
assert(__can_add(__n));
|
1715
|
-
__i += __n;
|
1716
|
-
return *this;
|
1717
|
-
}
|
1388
|
+
#if !defined(_LIBCPP_HAS_NO_RVALUE_REFERENCES) && !defined(_LIBCPP_HAS_NO_TRAILING_RETURN)
|
1718
1389
|
|
1719
|
-
template <class
|
1390
|
+
template <class _Cp>
|
1720
1391
|
inline _LIBCPP_INLINE_VISIBILITY
|
1721
|
-
|
1722
|
-
|
1392
|
+
auto
|
1393
|
+
begin(_Cp& __c) -> decltype(__c.begin())
|
1723
1394
|
{
|
1724
|
-
|
1725
|
-
return __x.base() == __y.base();
|
1395
|
+
return __c.begin();
|
1726
1396
|
}
|
1727
1397
|
|
1728
|
-
template <class
|
1398
|
+
template <class _Cp>
|
1729
1399
|
inline _LIBCPP_INLINE_VISIBILITY
|
1730
|
-
|
1731
|
-
|
1400
|
+
auto
|
1401
|
+
begin(const _Cp& __c) -> decltype(__c.begin())
|
1732
1402
|
{
|
1733
|
-
return
|
1403
|
+
return __c.begin();
|
1734
1404
|
}
|
1735
1405
|
|
1736
|
-
template <class
|
1406
|
+
template <class _Cp>
|
1737
1407
|
inline _LIBCPP_INLINE_VISIBILITY
|
1738
|
-
|
1739
|
-
|
1408
|
+
auto
|
1409
|
+
end(_Cp& __c) -> decltype(__c.end())
|
1740
1410
|
{
|
1741
|
-
|
1742
|
-
return __x.base() < __y.base();
|
1411
|
+
return __c.end();
|
1743
1412
|
}
|
1744
1413
|
|
1745
|
-
template <class
|
1414
|
+
template <class _Cp>
|
1746
1415
|
inline _LIBCPP_INLINE_VISIBILITY
|
1747
|
-
|
1748
|
-
|
1416
|
+
auto
|
1417
|
+
end(const _Cp& __c) -> decltype(__c.end())
|
1749
1418
|
{
|
1750
|
-
return
|
1419
|
+
return __c.end();
|
1751
1420
|
}
|
1752
1421
|
|
1753
|
-
|
1422
|
+
#if _LIBCPP_STD_VER > 11
|
1423
|
+
|
1424
|
+
template <class _Cp>
|
1754
1425
|
inline _LIBCPP_INLINE_VISIBILITY
|
1755
|
-
|
1756
|
-
operator>=(const __debug_iter<_Container, _Iter1>& __x, const __debug_iter<_Container, _Iter2>& __y)
|
1426
|
+
auto cbegin(const _Cp& __c) -> decltype(begin(__c))
|
1757
1427
|
{
|
1758
|
-
return
|
1428
|
+
return __c.begin();
|
1759
1429
|
}
|
1760
1430
|
|
1761
|
-
template <class
|
1431
|
+
template <class _Cp>
|
1762
1432
|
inline _LIBCPP_INLINE_VISIBILITY
|
1763
|
-
|
1764
|
-
operator<=(const __debug_iter<_Container, _Iter1>& __x, const __debug_iter<_Container, _Iter2>& __y)
|
1433
|
+
auto cend(const _Cp& __c) -> decltype(end(__c))
|
1765
1434
|
{
|
1766
|
-
return
|
1435
|
+
return __c.end();
|
1767
1436
|
}
|
1768
1437
|
|
1769
|
-
template <class
|
1438
|
+
template <class _Cp>
|
1770
1439
|
inline _LIBCPP_INLINE_VISIBILITY
|
1771
|
-
|
1772
|
-
operator-(const __debug_iter<_Container, _Iter1>& __x, const __debug_iter<_Container, _Iter2>& __y)
|
1440
|
+
auto rbegin(_Cp& __c) -> decltype(__c.rbegin())
|
1773
1441
|
{
|
1774
|
-
|
1775
|
-
return __x.base() - __y.base();
|
1442
|
+
return __c.rbegin();
|
1776
1443
|
}
|
1777
1444
|
|
1778
|
-
template <class
|
1445
|
+
template <class _Cp>
|
1779
1446
|
inline _LIBCPP_INLINE_VISIBILITY
|
1780
|
-
|
1781
|
-
operator+(typename __debug_iter<_Container, _Iter>::difference_type __n,
|
1782
|
-
const __debug_iter<_Container, _Iter>& __x)
|
1447
|
+
auto rbegin(const _Cp& __c) -> decltype(__c.rbegin())
|
1783
1448
|
{
|
1784
|
-
return
|
1449
|
+
return __c.rbegin();
|
1785
1450
|
}
|
1786
1451
|
|
1787
|
-
#endif // _LIBCPP_DEBUG
|
1788
|
-
|
1789
|
-
#if !defined(_LIBCPP_HAS_NO_RVALUE_REFERENCES) && !defined(_LIBCPP_HAS_NO_TRAILING_RETURN)
|
1790
|
-
|
1791
1452
|
template <class _Cp>
|
1792
1453
|
inline _LIBCPP_INLINE_VISIBILITY
|
1793
|
-
auto
|
1794
|
-
begin(_Cp& __c) -> decltype(__c.begin())
|
1454
|
+
auto rend(_Cp& __c) -> decltype(__c.rend())
|
1795
1455
|
{
|
1796
|
-
return __c.
|
1456
|
+
return __c.rend();
|
1797
1457
|
}
|
1798
1458
|
|
1799
1459
|
template <class _Cp>
|
1800
1460
|
inline _LIBCPP_INLINE_VISIBILITY
|
1801
|
-
auto
|
1802
|
-
begin(const _Cp& __c) -> decltype(__c.begin())
|
1461
|
+
auto rend(const _Cp& __c) -> decltype(__c.rend())
|
1803
1462
|
{
|
1804
|
-
return __c.
|
1463
|
+
return __c.rend();
|
1805
1464
|
}
|
1806
1465
|
|
1807
1466
|
template <class _Cp>
|
1808
1467
|
inline _LIBCPP_INLINE_VISIBILITY
|
1809
|
-
auto
|
1810
|
-
end(_Cp& __c) -> decltype(__c.end())
|
1468
|
+
auto crbegin(const _Cp& __c) -> decltype(rbegin(__c))
|
1811
1469
|
{
|
1812
|
-
return __c
|
1470
|
+
return rbegin(__c);
|
1813
1471
|
}
|
1814
1472
|
|
1815
1473
|
template <class _Cp>
|
1816
1474
|
inline _LIBCPP_INLINE_VISIBILITY
|
1817
|
-
auto
|
1818
|
-
end(const _Cp& __c) -> decltype(__c.end())
|
1475
|
+
auto crend(const _Cp& __c) -> decltype(rend(__c))
|
1819
1476
|
{
|
1820
|
-
return __c
|
1477
|
+
return rend(__c);
|
1821
1478
|
}
|
1822
1479
|
|
1480
|
+
#endif
|
1481
|
+
|
1482
|
+
|
1823
1483
|
#else // !defined(_LIBCPP_HAS_NO_RVALUE_REFERENCES) && !defined(_LIBCPP_HAS_NO_TRAILING_RETURN)
|
1824
1484
|
|
1825
1485
|
template <class _Cp>
|
@@ -1872,6 +1532,37 @@ end(_Tp (&__array)[_Np])
|
|
1872
1532
|
return __array + _Np;
|
1873
1533
|
}
|
1874
1534
|
|
1535
|
+
#if _LIBCPP_STD_VER > 11
|
1536
|
+
template <class _Tp, size_t _Np>
|
1537
|
+
inline _LIBCPP_INLINE_VISIBILITY
|
1538
|
+
reverse_iterator<_Tp*> rbegin(_Tp (&__array)[_Np])
|
1539
|
+
{
|
1540
|
+
return reverse_iterator<_Tp*>(__array + _Np);
|
1541
|
+
}
|
1542
|
+
|
1543
|
+
template <class _Tp, size_t _Np>
|
1544
|
+
inline _LIBCPP_INLINE_VISIBILITY
|
1545
|
+
reverse_iterator<_Tp*> rend(_Tp (&__array)[_Np])
|
1546
|
+
{
|
1547
|
+
return reverse_iterator<_Tp*>(__array);
|
1548
|
+
}
|
1549
|
+
|
1550
|
+
template <class _Ep>
|
1551
|
+
inline _LIBCPP_INLINE_VISIBILITY
|
1552
|
+
reverse_iterator<const _Ep*> rbegin(initializer_list<_Ep> __il)
|
1553
|
+
{
|
1554
|
+
return reverse_iterator<const _Ep*>(__il.end());
|
1555
|
+
}
|
1556
|
+
|
1557
|
+
template <class _Ep>
|
1558
|
+
inline _LIBCPP_INLINE_VISIBILITY
|
1559
|
+
reverse_iterator<const _Ep*> rend(initializer_list<_Ep> __il)
|
1560
|
+
{
|
1561
|
+
return reverse_iterator<const _Ep*>(__il.begin());
|
1562
|
+
}
|
1563
|
+
|
1564
|
+
#endif
|
1565
|
+
|
1875
1566
|
_LIBCPP_END_NAMESPACE_STD
|
1876
1567
|
|
1877
1568
|
#endif // _LIBCPP_ITERATOR
|