webruby 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/webruby/rake/mruby.rake +1 -0
- data/modules/emscripten/AUTHORS +7 -0
- data/modules/emscripten/LICENSE +26 -0
- data/modules/emscripten/emcc +58 -20
- data/modules/emscripten/emlink.py +2 -265
- data/modules/emscripten/emscripten.py +38 -18
- data/modules/emscripten/scons-tools/emscripten.py +11 -6
- data/modules/emscripten/scons-tools/llvm.py +4 -3
- data/modules/emscripten/src/analyzer.js +32 -13
- data/modules/emscripten/src/embind/embind.js +13 -13
- data/modules/emscripten/src/embind/emval.js +8 -7
- data/modules/emscripten/src/intertyper.js +10 -0
- data/modules/emscripten/src/jsifier.js +28 -6
- data/modules/emscripten/src/library.js +2949 -1322
- data/modules/emscripten/src/library_browser.js +27 -23
- data/modules/emscripten/src/library_egl.js +7 -2
- data/modules/emscripten/src/library_gl.js +15 -2
- data/modules/emscripten/src/library_glut.js +1 -1
- data/modules/emscripten/src/library_jansson.js +1 -1
- data/modules/emscripten/src/library_openal.js +464 -132
- data/modules/emscripten/src/library_path.js +134 -0
- data/modules/emscripten/src/library_sdl.js +222 -50
- data/modules/emscripten/src/modules.js +22 -5
- data/modules/emscripten/src/parseTools.js +13 -2
- data/modules/emscripten/src/postamble.js +60 -34
- data/modules/emscripten/src/preamble.js +67 -18
- data/modules/emscripten/src/relooper/Relooper.cpp +1 -1
- data/modules/emscripten/src/runtime.js +12 -2
- data/modules/emscripten/src/settings.js +869 -826
- data/modules/emscripten/src/shell.js +63 -51
- data/modules/emscripten/src/utility.js +6 -0
- data/modules/emscripten/system/include/bsd/sys/mman.h +1 -1
- data/modules/emscripten/system/include/emscripten/bind.h +28 -28
- data/modules/emscripten/system/include/libc/math.h +8 -0
- data/modules/emscripten/system/include/libc/sys/signal.h +3 -1
- data/modules/emscripten/system/include/libc/sys/stat.h +2 -1
- data/modules/emscripten/system/include/libc/sys/types.h +4 -0
- data/modules/emscripten/system/include/libcxx/CREDITS.TXT +24 -0
- data/modules/emscripten/system/include/libcxx/__bit_reference +27 -8
- data/modules/emscripten/system/include/libcxx/__config +62 -15
- data/modules/emscripten/system/include/libcxx/__debug +5 -1
- data/modules/emscripten/system/include/libcxx/__functional_03 +24 -24
- data/modules/emscripten/system/include/libcxx/__functional_base +22 -4
- data/modules/emscripten/system/include/libcxx/__hash_table +566 -54
- data/modules/emscripten/system/include/libcxx/__locale +11 -3
- data/modules/emscripten/system/include/libcxx/__split_buffer +6 -6
- data/modules/emscripten/system/include/libcxx/__std_stream +58 -30
- data/modules/emscripten/system/include/libcxx/__tree +58 -51
- data/modules/emscripten/system/include/libcxx/__tuple +9 -9
- data/modules/emscripten/system/include/libcxx/algorithm +223 -13
- data/modules/emscripten/system/include/libcxx/array +18 -17
- data/modules/emscripten/system/include/libcxx/atomic +15 -5
- data/modules/emscripten/system/include/libcxx/cctype +2 -2
- data/modules/emscripten/system/include/libcxx/chrono +131 -36
- data/modules/emscripten/system/include/libcxx/cmath +41 -36
- data/modules/emscripten/system/include/libcxx/complex +49 -49
- data/modules/emscripten/system/include/libcxx/cstdio +2 -2
- data/modules/emscripten/system/include/libcxx/cstdlib +5 -5
- data/modules/emscripten/system/include/libcxx/cstring +2 -2
- data/modules/emscripten/system/include/libcxx/cwchar +22 -13
- data/modules/emscripten/system/include/libcxx/deque +27 -14
- data/modules/emscripten/system/include/libcxx/forward_list +36 -35
- data/modules/emscripten/system/include/libcxx/fstream +16 -0
- data/modules/emscripten/system/include/libcxx/functional +348 -23
- data/modules/emscripten/system/include/libcxx/future +66 -0
- data/modules/emscripten/system/include/libcxx/ios +27 -0
- data/modules/emscripten/system/include/libcxx/istream +2 -4
- data/modules/emscripten/system/include/libcxx/iterator +17 -9
- data/modules/emscripten/system/include/libcxx/limits +2 -2
- data/modules/emscripten/system/include/libcxx/list +165 -105
- data/modules/emscripten/system/include/libcxx/locale +154 -43
- data/modules/emscripten/system/include/libcxx/map +165 -224
- data/modules/emscripten/system/include/libcxx/memory +113 -54
- data/modules/emscripten/system/include/libcxx/random +2 -29
- data/modules/emscripten/system/include/libcxx/readme.txt +1 -1
- data/modules/emscripten/system/include/libcxx/regex +60 -15
- data/modules/emscripten/system/include/libcxx/sstream +124 -40
- data/modules/emscripten/system/include/libcxx/string +345 -182
- data/modules/emscripten/system/include/libcxx/support/win32/limits_win32.h +3 -3
- data/modules/emscripten/system/include/libcxx/support/win32/locale_win32.h +15 -2
- data/modules/emscripten/system/include/libcxx/support/win32/math_win32.h +3 -3
- data/modules/emscripten/system/include/libcxx/support/win32/support.h +10 -11
- data/modules/emscripten/system/include/libcxx/thread +2 -2
- data/modules/emscripten/system/include/libcxx/tuple +134 -65
- data/modules/emscripten/system/include/libcxx/type_traits +232 -24
- data/modules/emscripten/system/include/libcxx/unordered_map +314 -161
- data/modules/emscripten/system/include/libcxx/unordered_set +160 -2
- data/modules/emscripten/system/include/libcxx/utility +225 -40
- data/modules/emscripten/system/include/libcxx/vector +52 -57
- data/modules/emscripten/system/include/net/if.h +20 -1
- data/modules/emscripten/system/include/net/netinet/in.h +69 -5
- data/modules/emscripten/system/include/netdb.h +36 -0
- data/modules/emscripten/system/include/sys/ioctl.h +55 -3
- data/modules/emscripten/system/include/sys/select.h +2 -0
- data/modules/emscripten/system/include/sys/sendfile.h +16 -0
- data/modules/emscripten/system/include/sys/socket.h +181 -35
- data/modules/emscripten/system/lib/dlmalloc.c +10 -12
- data/modules/emscripten/system/lib/libc/musl/src/stdlib/ecvt.c +19 -0
- data/modules/emscripten/system/lib/libc/musl/src/stdlib/fcvt.c +25 -0
- data/modules/emscripten/system/lib/libc/musl/src/stdlib/gcvt.c +8 -0
- data/modules/emscripten/system/lib/libcextra.symbols +3 -0
- data/modules/emscripten/system/lib/libcxx/CREDITS.TXT +24 -0
- data/modules/emscripten/system/lib/libcxx/debug.cpp +11 -9
- data/modules/emscripten/system/lib/libcxx/exception.cpp +9 -0
- data/modules/emscripten/system/lib/libcxx/hash.cpp +6 -0
- data/modules/emscripten/system/lib/libcxx/iostream.cpp +4 -4
- data/modules/emscripten/system/lib/libcxx/locale.cpp +91 -42
- data/modules/emscripten/system/lib/libcxx/readme.txt +1 -1
- data/modules/emscripten/system/lib/libcxx/stdexcept.cpp +1 -1
- data/modules/emscripten/system/lib/libcxx/string.cpp +332 -491
- data/modules/emscripten/system/lib/libcxx/support/win32/locale_win32.cpp +4 -2
- data/modules/emscripten/system/lib/libcxx/support/win32/support.cpp +140 -41
- data/modules/emscripten/system/lib/libcxx/symbols +9 -256
- data/modules/emscripten/system/lib/libcxx/system_error.cpp +3 -0
- data/modules/emscripten/system/lib/libcxx/thread.cpp +16 -3
- data/modules/emscripten/system/lib/libcxx/typeinfo.cpp +12 -2
- data/modules/emscripten/third_party/stb_image.c +4673 -0
- data/modules/emscripten/tools/asm_module.py +273 -0
- data/modules/emscripten/tools/exec_llvm.py +2 -2
- data/modules/emscripten/tools/file_packager.py +36 -16
- data/modules/emscripten/tools/find_bigfuncs.py +9 -9
- data/modules/emscripten/tools/js-optimizer.js +485 -131
- data/modules/emscripten/tools/js_optimizer.py +22 -15
- data/modules/emscripten/tools/merge_asm.py +26 -0
- data/modules/emscripten/tools/nativize_llvm.py +2 -2
- data/modules/emscripten/tools/settings_template_readonly.py +1 -1
- data/modules/emscripten/tools/shared.py +63 -20
- data/modules/emscripten/tools/split_asm.py +30 -0
- data/modules/emscripten/tools/test-js-optimizer-asm-outline1-output.js +686 -0
- data/modules/emscripten/tools/test-js-optimizer-asm-outline1.js +263 -0
- data/modules/emscripten/tools/test-js-optimizer-asm-outline2-output.js +747 -0
- data/modules/emscripten/tools/{test-js-optimizer-asm-outline.js → test-js-optimizer-asm-outline2.js} +1 -1
- data/modules/emscripten/tools/test-js-optimizer-asm-outline3-output.js +28 -0
- data/modules/emscripten/tools/test-js-optimizer-asm-outline3.js +30 -0
- data/modules/emscripten/tools/test-js-optimizer-asm-pre-output.js +4 -4
- data/modules/mruby/AUTHORS +1 -0
- data/modules/mruby/README.md +4 -2
- data/modules/mruby/build_config.rb +6 -6
- data/modules/mruby/doc/mrbgems/README.md +4 -4
- data/modules/mruby/examples/mrbgems/c_and_ruby_extension_example/mrbgem.rake +1 -1
- data/modules/mruby/examples/mrbgems/c_extension_example/mrbgem.rake +1 -1
- data/modules/mruby/examples/mrbgems/ruby_extension_example/mrbgem.rake +1 -1
- data/modules/mruby/include/mrbconf.h +3 -0
- data/modules/mruby/include/mruby/array.h +2 -2
- data/modules/mruby/include/mruby/class.h +4 -4
- data/modules/mruby/include/mruby/compile.h +1 -0
- data/modules/mruby/include/mruby/data.h +1 -1
- data/modules/mruby/include/mruby/hash.h +2 -2
- data/modules/mruby/include/mruby/irep.h +3 -2
- data/modules/mruby/include/mruby/proc.h +1 -1
- data/modules/mruby/include/mruby/range.h +1 -1
- data/modules/mruby/include/mruby/string.h +2 -2
- data/modules/mruby/include/mruby/value.h +43 -26
- data/modules/mruby/include/mruby.h +10 -2
- data/modules/mruby/minirake +2 -2
- data/modules/mruby/mrbgems/mruby-array-ext/mrbgem.rake +1 -1
- data/modules/mruby/mrbgems/mruby-bin-mirb/mrbgem.rake +4 -1
- data/modules/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c +32 -0
- data/modules/mruby/mrbgems/mruby-bin-mruby/mrbgem.rake +1 -1
- data/modules/mruby/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c +13 -5
- data/modules/mruby/mrbgems/mruby-enum-ext/mrbgem.rake +1 -1
- data/modules/mruby/mrbgems/mruby-enum-ext/test/enum.rb +10 -11
- data/modules/mruby/mrbgems/mruby-eval/mrbgem.rake +1 -1
- data/modules/mruby/mrbgems/mruby-exit/mrbgem.rake +4 -0
- data/modules/mruby/mrbgems/mruby-exit/src/mruby-exit.c +24 -0
- data/modules/mruby/mrbgems/mruby-fiber/mrbgem.rake +1 -1
- data/modules/mruby/mrbgems/mruby-fiber/src/fiber.c +4 -2
- data/modules/mruby/mrbgems/mruby-hash-ext/mrbgem.rake +1 -1
- data/modules/mruby/mrbgems/mruby-hash-ext/test/hash.rb +5 -7
- data/modules/mruby/mrbgems/mruby-math/mrbgem.rake +1 -1
- data/modules/mruby/mrbgems/mruby-numeric-ext/mrbgem.rake +1 -1
- data/modules/mruby/mrbgems/mruby-numeric-ext/test/numeric.rb +2 -2
- data/modules/mruby/mrbgems/mruby-object-ext/mrbgem.rake +1 -1
- data/modules/mruby/mrbgems/mruby-object-ext/src/object.c +3 -3
- data/modules/mruby/mrbgems/mruby-object-ext/test/nil.rb +3 -3
- data/modules/mruby/mrbgems/mruby-object-ext/test/object.rb +1 -1
- data/modules/mruby/mrbgems/mruby-objectspace/mrbgem.rake +1 -1
- data/modules/mruby/mrbgems/mruby-objectspace/test/objectspace.rb +36 -37
- data/modules/mruby/mrbgems/mruby-print/mrbgem.rake +1 -1
- data/modules/mruby/mrbgems/mruby-proc-ext/mrbgem.rake +1 -1
- data/modules/mruby/mrbgems/mruby-proc-ext/test/proc.rb +8 -8
- data/modules/mruby/mrbgems/mruby-random/mrbgem.rake +1 -1
- data/modules/mruby/mrbgems/mruby-range-ext/mrbgem.rake +1 -1
- data/modules/mruby/mrbgems/mruby-range-ext/test/range.rb +6 -6
- data/modules/mruby/mrbgems/mruby-sprintf/mrbgem.rake +1 -1
- data/modules/mruby/mrbgems/mruby-string-ext/mrbgem.rake +1 -1
- data/modules/mruby/mrbgems/mruby-string-ext/test/string.rb +6 -6
- data/modules/mruby/mrbgems/mruby-struct/mrbgem.rake +1 -1
- data/modules/mruby/mrbgems/mruby-symbol-ext/mrbgem.rake +1 -1
- data/modules/mruby/mrbgems/mruby-symbol-ext/test/symbol.rb +2 -2
- data/modules/mruby/mrbgems/mruby-time/mrbgem.rake +1 -1
- data/modules/mruby/mrbgems/mruby-time/src/time.c +2 -8
- data/modules/mruby/mrbgems/mruby-toplevel-ext/mrbgem.rake +1 -1
- data/modules/mruby/mrbgems/mruby-toplevel-ext/test/toplevel.rb +10 -10
- data/modules/mruby/mrblib/class.rb +15 -9
- data/modules/mruby/mrblib/string.rb +12 -0
- data/modules/mruby/src/array.c +4 -3
- data/modules/mruby/src/class.c +13 -8
- data/modules/mruby/src/codegen.c +9 -8
- data/modules/mruby/src/error.c +7 -5
- data/modules/mruby/src/error.h +1 -0
- data/modules/mruby/src/etc.c +1 -1
- data/modules/mruby/src/gc.c +163 -128
- data/modules/mruby/src/kernel.c +43 -15
- data/modules/mruby/src/numeric.c +9 -7
- data/modules/mruby/src/object.c +1 -1
- data/modules/mruby/src/parse.y +37 -19
- data/modules/mruby/src/range.c +10 -24
- data/modules/mruby/src/state.c +2 -6
- data/modules/mruby/src/string.c +0 -9
- data/modules/mruby/src/variable.c +2 -2
- data/modules/mruby/src/vm.c +12 -6
- data/modules/mruby/tasks/mrbgem_spec.rake +7 -0
- data/modules/mruby/tasks/mrbgems.rake +2 -1
- data/modules/mruby/tasks/mrbgems_test.rake +1 -1
- data/modules/mruby/tasks/mruby_build.rake +4 -3
- data/modules/mruby/tasks/mruby_build_commands.rake +6 -1
- data/modules/mruby/tasks/mruby_build_gem.rake +2 -2
- data/modules/mruby/tasks/toolchains/androideabi.rake +2 -0
- data/modules/mruby/test/assert.rb +2 -2
- data/modules/mruby/test/t/argumenterror.rb +3 -3
- data/modules/mruby/test/t/array.rb +55 -55
- data/modules/mruby/test/t/basicobject.rb +1 -1
- data/modules/mruby/test/t/bs_block.rb +12 -12
- data/modules/mruby/test/t/class.rb +21 -21
- data/modules/mruby/test/t/enumerable.rb +18 -18
- data/modules/mruby/test/t/exception.rb +20 -20
- data/modules/mruby/test/t/false.rb +3 -3
- data/modules/mruby/test/t/float.rb +40 -40
- data/modules/mruby/test/t/gc.rb +10 -10
- data/modules/mruby/test/t/hash.rb +41 -41
- data/modules/mruby/test/t/indexerror.rb +2 -2
- data/modules/mruby/test/t/integer.rb +41 -41
- data/modules/mruby/test/t/kernel.rb +33 -33
- data/modules/mruby/test/t/literals.rb +82 -82
- data/modules/mruby/test/t/localjumperror.rb +1 -1
- data/modules/mruby/test/t/module.rb +170 -31
- data/modules/mruby/test/t/nameerror.rb +5 -5
- data/modules/mruby/test/t/nil.rb +2 -2
- data/modules/mruby/test/t/nomethoderror.rb +1 -1
- data/modules/mruby/test/t/numeric.rb +5 -5
- data/modules/mruby/test/t/object.rb +2 -2
- data/modules/mruby/test/t/proc.rb +8 -8
- data/modules/mruby/test/t/range.rb +9 -9
- data/modules/mruby/test/t/rangeerror.rb +2 -2
- data/modules/mruby/test/t/runtimeerror.rb +1 -1
- data/modules/mruby/test/t/standarderror.rb +2 -2
- data/modules/mruby/test/t/string.rb +100 -100
- data/modules/mruby/test/t/symbol.rb +5 -5
- data/modules/mruby/test/t/syntax.rb +15 -6
- data/modules/mruby/test/t/true.rb +3 -3
- data/modules/mruby/test/t/typeerror.rb +2 -2
- data/modules/mruby/tools/mrbc/mrbc.c +10 -4
- data/modules/mruby/travis_config.rb +1 -0
- data/scripts/gen_gems_config.rb +5 -1
- metadata +19 -4
- data/modules/emscripten/tools/test-js-optimizer-asm-outline-output.js +0 -570
@@ -11,8 +11,8 @@
|
|
11
11
|
#ifndef _LIBCPP_SUPPORT_WIN32_LIMITS_WIN32_H
|
12
12
|
#define _LIBCPP_SUPPORT_WIN32_LIMITS_WIN32_H
|
13
13
|
|
14
|
-
#if !defined(
|
15
|
-
#error "This header
|
14
|
+
#if !defined(_LIBCPP_MSVCRT)
|
15
|
+
#error "This header complements Microsoft's C Runtime library, and should not be included otherwise."
|
16
16
|
#else
|
17
17
|
|
18
18
|
#ifndef NOMINMAX
|
@@ -74,6 +74,6 @@
|
|
74
74
|
#define __builtin_nansf(__dummy) _FSnan._Float
|
75
75
|
#define __builtin_nansl(__dummy) _LSnan._Long_double
|
76
76
|
|
77
|
-
#endif //
|
77
|
+
#endif // _LIBCPP_MSVCRT
|
78
78
|
|
79
79
|
#endif // _LIBCPP_SUPPORT_WIN32_LIMITS_WIN32_H
|
@@ -65,8 +65,21 @@ decltype(MB_CUR_MAX) MB_CUR_MAX_L( locale_t __l )
|
|
65
65
|
#define strtoull_l _strtoui64_l
|
66
66
|
// FIXME: current msvcrt does not know about long double
|
67
67
|
#define strtold_l _strtod_l
|
68
|
-
|
69
|
-
|
68
|
+
|
69
|
+
inline _LIBCPP_INLINE_VISIBILITY
|
70
|
+
int
|
71
|
+
islower_l(int c, _locale_t loc)
|
72
|
+
{
|
73
|
+
return _islower_l((int)c, loc);
|
74
|
+
}
|
75
|
+
|
76
|
+
inline _LIBCPP_INLINE_VISIBILITY
|
77
|
+
int
|
78
|
+
isupper_l(int c, _locale_t loc)
|
79
|
+
{
|
80
|
+
return _isupper_l((int)c, loc);
|
81
|
+
}
|
82
|
+
|
70
83
|
#define isdigit_l _isdigit_l
|
71
84
|
#define isxdigit_l _isxdigit_l
|
72
85
|
#define strcoll_l _strcoll_l
|
@@ -11,8 +11,8 @@
|
|
11
11
|
#ifndef _LIBCPP_SUPPORT_WIN32_MATH_WIN32_H
|
12
12
|
#define _LIBCPP_SUPPORT_WIN32_MATH_WIN32_H
|
13
13
|
|
14
|
-
#if !defined(
|
15
|
-
#error "This header
|
14
|
+
#if !defined(_LIBCPP_MSVCRT)
|
15
|
+
#error "This header complements Microsoft's C Runtime library, and should not be included otherwise."
|
16
16
|
#else
|
17
17
|
|
18
18
|
#include <math.h>
|
@@ -108,6 +108,6 @@ _LIBCPP_ALWAYS_INLINE int fpclassify( double num )
|
|
108
108
|
return _fpclass(num);
|
109
109
|
}
|
110
110
|
|
111
|
-
#endif //
|
111
|
+
#endif // _LIBCPP_MSVCRT
|
112
112
|
|
113
113
|
#endif // _LIBCPP_SUPPORT_WIN32_MATH_WIN32_H
|
@@ -15,26 +15,23 @@
|
|
15
15
|
Functions and constants used in libc++ that are missing from the Windows C library.
|
16
16
|
*/
|
17
17
|
|
18
|
-
#include <
|
19
|
-
#include <
|
20
|
-
#include <stdio.h> // _snwprintf
|
18
|
+
#include <cwchar> // mbstate_t
|
19
|
+
#include <cstdarg> // va_ macros
|
21
20
|
#define swprintf _snwprintf
|
22
21
|
#define vswprintf _vsnwprintf
|
23
|
-
#define vfscnaf fscanf
|
24
22
|
|
25
|
-
|
26
|
-
int asprintf( char **sptr, const char *__restrict fmt, ...);
|
27
|
-
//int vfscanf( FILE *__restrict stream, const char *__restrict format,
|
28
|
-
// va_list arg);
|
23
|
+
extern "C" {
|
29
24
|
|
25
|
+
int vasprintf( char **sptr, const char *__restrict fmt, va_list ap );
|
26
|
+
int asprintf( char **sptr, const char *__restrict fmt, ...);
|
30
27
|
size_t mbsnrtowcs( wchar_t *__restrict dst, const char **__restrict src,
|
31
28
|
size_t nmc, size_t len, mbstate_t *__restrict ps );
|
32
29
|
size_t wcsnrtombs( char *__restrict dst, const wchar_t **__restrict src,
|
33
30
|
size_t nwc, size_t len, mbstate_t *__restrict ps );
|
31
|
+
}
|
34
32
|
|
35
|
-
#if defined(
|
33
|
+
#if defined(_LIBCPP_MSVCRT)
|
36
34
|
#define snprintf _snprintf
|
37
|
-
|
38
35
|
#include <xlocinfo.h>
|
39
36
|
#define atoll _atoi64
|
40
37
|
#define strtoll _strtoi64
|
@@ -85,9 +82,11 @@ _LIBCPP_ALWAYS_INLINE int __builtin_ctz( unsigned int x )
|
|
85
82
|
_BitScanReverse(&r, x);
|
86
83
|
return static_cast<int>(r);
|
87
84
|
}
|
85
|
+
|
88
86
|
// sizeof(long) == sizeof(int) on Windows
|
89
87
|
_LIBCPP_ALWAYS_INLINE int __builtin_ctzl( unsigned long x )
|
90
88
|
{ return __builtin_ctz( static_cast<int>(x) ); }
|
89
|
+
|
91
90
|
_LIBCPP_ALWAYS_INLINE int __builtin_ctzll( unsigned long long x )
|
92
91
|
{
|
93
92
|
DWORD r = 0;
|
@@ -110,6 +109,6 @@ _LIBCPP_ALWAYS_INLINE int __builtin_clzll( unsigned long long x )
|
|
110
109
|
return static_cast<int>(r);
|
111
110
|
}
|
112
111
|
#endif // !__clang__
|
113
|
-
#endif //
|
112
|
+
#endif // _LIBCPP_MSVCRT
|
114
113
|
|
115
114
|
#endif // _LIBCPP_SUPPORT_WIN32_SUPPORT_H
|
@@ -328,7 +328,7 @@ __thread_specific_ptr<__thread_struct>& __thread_local_data();
|
|
328
328
|
template <class _Fp, class ..._Args, size_t ..._Indices>
|
329
329
|
inline _LIBCPP_INLINE_VISIBILITY
|
330
330
|
void
|
331
|
-
|
331
|
+
__thread_execute(tuple<_Fp, _Args...>& __t, __tuple_indices<_Indices...>)
|
332
332
|
{
|
333
333
|
__invoke(_VSTD::move(_VSTD::get<0>(__t)), _VSTD::move(_VSTD::get<_Indices>(__t))...);
|
334
334
|
}
|
@@ -340,7 +340,7 @@ __thread_proxy(void* __vp)
|
|
340
340
|
__thread_local_data().reset(new __thread_struct);
|
341
341
|
std::unique_ptr<_Fp> __p(static_cast<_Fp*>(__vp));
|
342
342
|
typedef typename __make_tuple_indices<tuple_size<_Fp>::value, 1>::type _Index;
|
343
|
-
|
343
|
+
__thread_execute(*__p, _Index());
|
344
344
|
return nullptr;
|
345
345
|
}
|
346
346
|
|
@@ -21,19 +21,19 @@ template <class... T>
|
|
21
21
|
class tuple {
|
22
22
|
public:
|
23
23
|
constexpr tuple();
|
24
|
-
explicit tuple(const T&...);
|
24
|
+
explicit tuple(const T&...); // constexpr in C++14
|
25
25
|
template <class... U>
|
26
|
-
explicit tuple(U&&...);
|
26
|
+
explicit tuple(U&&...); // constexpr in C++14
|
27
27
|
tuple(const tuple&) = default;
|
28
28
|
tuple(tuple&&) = default;
|
29
29
|
template <class... U>
|
30
|
-
tuple(const tuple<U...>&);
|
30
|
+
tuple(const tuple<U...>&); // constexpr in C++14
|
31
31
|
template <class... U>
|
32
|
-
tuple(tuple<U...>&&);
|
32
|
+
tuple(tuple<U...>&&); // constexpr in C++14
|
33
33
|
template <class U1, class U2>
|
34
|
-
tuple(const pair<U1, U2>&); // iff sizeof...(T) == 2
|
34
|
+
tuple(const pair<U1, U2>&); // iff sizeof...(T) == 2 // constexpr in C++14
|
35
35
|
template <class U1, class U2>
|
36
|
-
tuple(pair<U1, U2>&&); // iff sizeof...(T) == 2
|
36
|
+
tuple(pair<U1, U2>&&); // iff sizeof...(T) == 2 // constexpr in C++14
|
37
37
|
|
38
38
|
// allocator-extended constructors
|
39
39
|
template <class Alloc>
|
@@ -72,10 +72,10 @@ public:
|
|
72
72
|
|
73
73
|
const unspecified ignore;
|
74
74
|
|
75
|
-
template <class... T> tuple<V...> make_tuple(T&&...);
|
75
|
+
template <class... T> tuple<V...> make_tuple(T&&...); // constexpr in C++14
|
76
76
|
template <class... T> tuple<ATypes...> forward_as_tuple(T&&...) noexcept;
|
77
77
|
template <class... T> tuple<T&...> tie(T&...) noexcept;
|
78
|
-
template <class... Tuples> tuple<CTypes...> tuple_cat(Tuples&&... tpls);
|
78
|
+
template <class... Tuples> tuple<CTypes...> tuple_cat(Tuples&&... tpls); // constexpr in C++14
|
79
79
|
|
80
80
|
// 20.4.1.4, tuple helper classes:
|
81
81
|
template <class T> class tuple_size; // undefined
|
@@ -86,21 +86,28 @@ template <intsize_t I, class... T> class tuple_element<I, tuple<T...>>;
|
|
86
86
|
// 20.4.1.5, element access:
|
87
87
|
template <intsize_t I, class... T>
|
88
88
|
typename tuple_element<I, tuple<T...>>::type&
|
89
|
-
get(tuple<T...>&) noexcept;
|
89
|
+
get(tuple<T...>&) noexcept; // constexpr in C++14
|
90
90
|
template <intsize_t I, class... T>
|
91
91
|
typename tuple_element<I, tuple<T...>>::type const&
|
92
|
-
get(const tuple<T...>&) noexcept;
|
92
|
+
get(const tuple<T...>&) noexcept; // constexpr in C++14
|
93
93
|
template <intsize_t I, class... T>
|
94
94
|
typename tuple_element<I, tuple<T...>>::type&&
|
95
|
-
get(tuple<T...>&&) noexcept;
|
95
|
+
get(tuple<T...>&&) noexcept; // constexpr in C++14
|
96
|
+
|
97
|
+
template <class T1, class... T>
|
98
|
+
constexpr T1& get(tuple<T...>&) noexcept; // C++14
|
99
|
+
template <class T1, class... T>
|
100
|
+
constexpr T1 const& get(const tuple<T...>&) noexcept; // C++14
|
101
|
+
template <class T1, class... T>
|
102
|
+
constexpr T1&& get(tuple<T...>&&) noexcept; // C++14
|
96
103
|
|
97
104
|
// 20.4.1.6, relational operators:
|
98
|
-
template<class... T, class... U> bool operator==(const tuple<T...>&, const tuple<U...>&);
|
99
|
-
template<class... T, class... U> bool operator<(const tuple<T...>&, const tuple<U...>&);
|
100
|
-
template<class... T, class... U> bool operator!=(const tuple<T...>&, const tuple<U...>&);
|
101
|
-
template<class... T, class... U> bool operator>(const tuple<T...>&, const tuple<U...>&);
|
102
|
-
template<class... T, class... U> bool operator<=(const tuple<T...>&, const tuple<U...>&);
|
103
|
-
template<class... T, class... U> bool operator>=(const tuple<T...>&, const tuple<U...>&);
|
105
|
+
template<class... T, class... U> bool operator==(const tuple<T...>&, const tuple<U...>&); // constexpr in C++14
|
106
|
+
template<class... T, class... U> bool operator<(const tuple<T...>&, const tuple<U...>&); // constexpr in C++14
|
107
|
+
template<class... T, class... U> bool operator!=(const tuple<T...>&, const tuple<U...>&); // constexpr in C++14
|
108
|
+
template<class... T, class... U> bool operator>(const tuple<T...>&, const tuple<U...>&); // constexpr in C++14
|
109
|
+
template<class... T, class... U> bool operator<=(const tuple<T...>&, const tuple<U...>&); // constexpr in C++14
|
110
|
+
template<class... T, class... U> bool operator>=(const tuple<T...>&, const tuple<U...>&); // constexpr in C++14
|
104
111
|
|
105
112
|
template <class... Types, class Alloc>
|
106
113
|
struct uses_allocator<tuple<Types...>, Alloc>;
|
@@ -259,7 +266,7 @@ public:
|
|
259
266
|
|
260
267
|
template <class _Tp,
|
261
268
|
class = typename enable_if<is_constructible<_Hp, _Tp>::value>::type>
|
262
|
-
_LIBCPP_INLINE_VISIBILITY
|
269
|
+
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
|
263
270
|
explicit __tuple_leaf(_Tp&& __t) _NOEXCEPT_((is_nothrow_constructible<_Hp, _Tp>::value))
|
264
271
|
: value(_VSTD::forward<_Tp>(__t))
|
265
272
|
{static_assert(!is_reference<_Hp>::value ||
|
@@ -316,15 +323,17 @@ public:
|
|
316
323
|
>::value)),
|
317
324
|
"Attempted to construct a reference element in a tuple with an rvalue");}
|
318
325
|
|
326
|
+
_LIBCPP_INLINE_VISIBILITY
|
327
|
+
_LIBCPP_CONSTEXPR_AFTER_CXX11
|
319
328
|
__tuple_leaf(const __tuple_leaf& __t) _NOEXCEPT_(is_nothrow_copy_constructible<_Hp>::value)
|
320
329
|
: value(__t.get())
|
321
330
|
{static_assert(!is_rvalue_reference<_Hp>::value, "Can not copy a tuple with rvalue reference member");}
|
322
331
|
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
332
|
+
_LIBCPP_INLINE_VISIBILITY
|
333
|
+
_LIBCPP_CONSTEXPR_AFTER_CXX11
|
334
|
+
__tuple_leaf(__tuple_leaf&& __t) _NOEXCEPT_(is_nothrow_move_constructible<_Hp>::value)
|
335
|
+
: value(_VSTD::move(__t.get()))
|
336
|
+
{}
|
328
337
|
|
329
338
|
template <class _Tp>
|
330
339
|
_LIBCPP_INLINE_VISIBILITY
|
@@ -342,8 +351,8 @@ public:
|
|
342
351
|
return 0;
|
343
352
|
}
|
344
353
|
|
345
|
-
_LIBCPP_INLINE_VISIBILITY _Hp& get() _NOEXCEPT {return value;}
|
346
|
-
_LIBCPP_INLINE_VISIBILITY const _Hp& get() const _NOEXCEPT {return value;}
|
354
|
+
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 _Hp& get() _NOEXCEPT {return value;}
|
355
|
+
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 const _Hp& get() const _NOEXCEPT {return value;}
|
347
356
|
};
|
348
357
|
|
349
358
|
template <size_t _Ip, class _Hp>
|
@@ -372,7 +381,7 @@ public:
|
|
372
381
|
|
373
382
|
template <class _Tp,
|
374
383
|
class = typename enable_if<is_constructible<_Hp, _Tp>::value>::type>
|
375
|
-
_LIBCPP_INLINE_VISIBILITY
|
384
|
+
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
|
376
385
|
explicit __tuple_leaf(_Tp&& __t) _NOEXCEPT_((is_nothrow_constructible<_Hp, _Tp>::value))
|
377
386
|
: _Hp(_VSTD::forward<_Tp>(__t)) {}
|
378
387
|
|
@@ -391,12 +400,6 @@ public:
|
|
391
400
|
explicit __tuple_leaf(integral_constant<int, 2>, const _Alloc& __a, _Tp&& __t)
|
392
401
|
: _Hp(_VSTD::forward<_Tp>(__t), __a) {}
|
393
402
|
|
394
|
-
template <class _Tp>
|
395
|
-
_LIBCPP_INLINE_VISIBILITY
|
396
|
-
explicit __tuple_leaf(const __tuple_leaf<_Ip, _Tp>& __t)
|
397
|
-
_NOEXCEPT_((is_nothrow_constructible<_Hp, const _Tp&>::value))
|
398
|
-
: _Hp(__t.get()) {}
|
399
|
-
|
400
403
|
template <class _Tp>
|
401
404
|
_LIBCPP_INLINE_VISIBILITY
|
402
405
|
__tuple_leaf&
|
@@ -414,8 +417,8 @@ public:
|
|
414
417
|
return 0;
|
415
418
|
}
|
416
419
|
|
417
|
-
_LIBCPP_INLINE_VISIBILITY _Hp& get() _NOEXCEPT {return static_cast<_Hp&>(*this);}
|
418
|
-
_LIBCPP_INLINE_VISIBILITY const _Hp& get() const _NOEXCEPT {return static_cast<const _Hp&>(*this);}
|
420
|
+
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 _Hp& get() _NOEXCEPT {return static_cast<_Hp&>(*this);}
|
421
|
+
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 const _Hp& get() const _NOEXCEPT {return static_cast<const _Hp&>(*this);}
|
419
422
|
};
|
420
423
|
|
421
424
|
template <class ..._Tp>
|
@@ -450,7 +453,7 @@ struct __tuple_impl<__tuple_indices<_Indx...>, _Tp...>
|
|
450
453
|
|
451
454
|
template <size_t ..._Uf, class ..._Tf,
|
452
455
|
size_t ..._Ul, class ..._Tl, class ..._Up>
|
453
|
-
_LIBCPP_INLINE_VISIBILITY
|
456
|
+
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
|
454
457
|
explicit
|
455
458
|
__tuple_impl(__tuple_indices<_Uf...>, __tuple_types<_Tf...>,
|
456
459
|
__tuple_indices<_Ul...>, __tuple_types<_Tl...>,
|
@@ -477,10 +480,10 @@ struct __tuple_impl<__tuple_indices<_Indx...>, _Tp...>
|
|
477
480
|
template <class _Tuple,
|
478
481
|
class = typename enable_if
|
479
482
|
<
|
480
|
-
|
483
|
+
__tuple_constructible<_Tuple, tuple<_Tp...> >::value
|
481
484
|
>::type
|
482
485
|
>
|
483
|
-
_LIBCPP_INLINE_VISIBILITY
|
486
|
+
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
|
484
487
|
__tuple_impl(_Tuple&& __t) _NOEXCEPT_((__all<is_nothrow_constructible<_Tp, typename tuple_element<_Indx,
|
485
488
|
typename __make_tuple_types<_Tuple>::type>::type>::value...>::value))
|
486
489
|
: __tuple_leaf<_Indx, _Tp>(_VSTD::forward<typename tuple_element<_Indx,
|
@@ -539,11 +542,11 @@ class _LIBCPP_TYPE_VIS tuple
|
|
539
542
|
|
540
543
|
base base_;
|
541
544
|
|
542
|
-
template <size_t _Jp, class ..._Up> friend
|
545
|
+
template <size_t _Jp, class ..._Up> friend _LIBCPP_CONSTEXPR_AFTER_CXX11
|
543
546
|
typename tuple_element<_Jp, tuple<_Up...> >::type& get(tuple<_Up...>&) _NOEXCEPT;
|
544
|
-
template <size_t _Jp, class ..._Up> friend
|
547
|
+
template <size_t _Jp, class ..._Up> friend _LIBCPP_CONSTEXPR_AFTER_CXX11
|
545
548
|
const typename tuple_element<_Jp, tuple<_Up...> >::type& get(const tuple<_Up...>&) _NOEXCEPT;
|
546
|
-
template <size_t _Jp, class ..._Up> friend
|
549
|
+
template <size_t _Jp, class ..._Up> friend _LIBCPP_CONSTEXPR_AFTER_CXX11
|
547
550
|
typename tuple_element<_Jp, tuple<_Up...> >::type&& get(tuple<_Up...>&&) _NOEXCEPT;
|
548
551
|
public:
|
549
552
|
|
@@ -551,7 +554,7 @@ public:
|
|
551
554
|
_LIBCPP_CONSTEXPR tuple()
|
552
555
|
_NOEXCEPT_(__all<is_nothrow_default_constructible<_Tp>::value...>::value) {}
|
553
556
|
|
554
|
-
_LIBCPP_INLINE_VISIBILITY
|
557
|
+
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
|
555
558
|
explicit tuple(const _Tp& ... __t) _NOEXCEPT_((__all<is_nothrow_copy_constructible<_Tp>::value...>::value))
|
556
559
|
: base_(typename __make_tuple_indices<sizeof...(_Tp)>::type(),
|
557
560
|
typename __make_tuple_types<tuple, sizeof...(_Tp)>::type(),
|
@@ -586,7 +589,7 @@ public:
|
|
586
589
|
bool
|
587
590
|
>::type = false
|
588
591
|
>
|
589
|
-
_LIBCPP_INLINE_VISIBILITY
|
592
|
+
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
|
590
593
|
tuple(_Up&&... __u)
|
591
594
|
_NOEXCEPT_((
|
592
595
|
is_nothrow_constructible<
|
@@ -626,7 +629,7 @@ public:
|
|
626
629
|
bool
|
627
630
|
>::type =false
|
628
631
|
>
|
629
|
-
_LIBCPP_INLINE_VISIBILITY
|
632
|
+
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
|
630
633
|
explicit
|
631
634
|
tuple(_Up&&... __u)
|
632
635
|
_NOEXCEPT_((
|
@@ -674,7 +677,7 @@ public:
|
|
674
677
|
bool
|
675
678
|
>::type = false
|
676
679
|
>
|
677
|
-
_LIBCPP_INLINE_VISIBILITY
|
680
|
+
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
|
678
681
|
tuple(_Tuple&& __t) _NOEXCEPT_((is_nothrow_constructible<base, _Tuple>::value))
|
679
682
|
: base_(_VSTD::forward<_Tuple>(__t)) {}
|
680
683
|
|
@@ -686,7 +689,7 @@ public:
|
|
686
689
|
bool
|
687
690
|
>::type = false
|
688
691
|
>
|
689
|
-
_LIBCPP_INLINE_VISIBILITY
|
692
|
+
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
|
690
693
|
explicit
|
691
694
|
tuple(_Tuple&& __t) _NOEXCEPT_((is_nothrow_constructible<base, _Tuple>::value))
|
692
695
|
: base_(_VSTD::forward<_Tuple>(__t)) {}
|
@@ -756,7 +759,7 @@ swap(tuple<_Tp...>& __t, tuple<_Tp...>& __u)
|
|
756
759
|
// get
|
757
760
|
|
758
761
|
template <size_t _Ip, class ..._Tp>
|
759
|
-
inline _LIBCPP_INLINE_VISIBILITY
|
762
|
+
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
|
760
763
|
typename tuple_element<_Ip, tuple<_Tp...> >::type&
|
761
764
|
get(tuple<_Tp...>& __t) _NOEXCEPT
|
762
765
|
{
|
@@ -765,7 +768,7 @@ get(tuple<_Tp...>& __t) _NOEXCEPT
|
|
765
768
|
}
|
766
769
|
|
767
770
|
template <size_t _Ip, class ..._Tp>
|
768
|
-
inline _LIBCPP_INLINE_VISIBILITY
|
771
|
+
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
|
769
772
|
const typename tuple_element<_Ip, tuple<_Tp...> >::type&
|
770
773
|
get(const tuple<_Tp...>& __t) _NOEXCEPT
|
771
774
|
{
|
@@ -774,7 +777,7 @@ get(const tuple<_Tp...>& __t) _NOEXCEPT
|
|
774
777
|
}
|
775
778
|
|
776
779
|
template <size_t _Ip, class ..._Tp>
|
777
|
-
inline _LIBCPP_INLINE_VISIBILITY
|
780
|
+
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
|
778
781
|
typename tuple_element<_Ip, tuple<_Tp...> >::type&&
|
779
782
|
get(tuple<_Tp...>&& __t) _NOEXCEPT
|
780
783
|
{
|
@@ -783,6 +786,64 @@ get(tuple<_Tp...>&& __t) _NOEXCEPT
|
|
783
786
|
static_cast<__tuple_leaf<_Ip, type>&&>(__t.base_).get());
|
784
787
|
}
|
785
788
|
|
789
|
+
#if _LIBCPP_STD_VER > 11
|
790
|
+
// get by type
|
791
|
+
template <typename _T1, size_t _Idx, typename... _Args>
|
792
|
+
struct __find_exactly_one_t_helper;
|
793
|
+
|
794
|
+
// -- find exactly one
|
795
|
+
template <typename _T1, size_t _Idx, typename... _Args>
|
796
|
+
struct __find_exactly_one_t_checker {
|
797
|
+
static constexpr size_t value = _Idx;
|
798
|
+
// Check the rest of the list to make sure there's only one
|
799
|
+
static_assert ( __find_exactly_one_t_helper<_T1, 0, _Args...>::value == -1, "type can only occur once in type list" );
|
800
|
+
};
|
801
|
+
|
802
|
+
|
803
|
+
template <typename _T1, size_t _Idx>
|
804
|
+
struct __find_exactly_one_t_helper <_T1, _Idx> {
|
805
|
+
static constexpr size_t value = -1;
|
806
|
+
};
|
807
|
+
|
808
|
+
template <typename _T1, size_t _Idx, typename _Head, typename... _Args>
|
809
|
+
struct __find_exactly_one_t_helper <_T1, _Idx, _Head, _Args...> {
|
810
|
+
static constexpr size_t value =
|
811
|
+
std::conditional<
|
812
|
+
std::is_same<_T1, _Head>::value,
|
813
|
+
__find_exactly_one_t_checker<_T1, _Idx, _Args...>,
|
814
|
+
__find_exactly_one_t_helper <_T1, _Idx+1, _Args...>
|
815
|
+
>::type::value;
|
816
|
+
};
|
817
|
+
|
818
|
+
template <typename _T1, typename... _Args>
|
819
|
+
struct __find_exactly_one_t {
|
820
|
+
static constexpr size_t value = __find_exactly_one_t_helper<_T1, 0, _Args...>::value;
|
821
|
+
static_assert ( value != -1, "type not found in type list" );
|
822
|
+
};
|
823
|
+
|
824
|
+
template <class _T1, class... _Args>
|
825
|
+
inline _LIBCPP_INLINE_VISIBILITY
|
826
|
+
constexpr _T1& get(tuple<_Args...>& __tup) noexcept
|
827
|
+
{
|
828
|
+
return _VSTD::get<__find_exactly_one_t<_T1, _Args...>::value>(__tup);
|
829
|
+
}
|
830
|
+
|
831
|
+
template <class _T1, class... _Args>
|
832
|
+
inline _LIBCPP_INLINE_VISIBILITY
|
833
|
+
constexpr _T1 const& get(tuple<_Args...> const& __tup) noexcept
|
834
|
+
{
|
835
|
+
return _VSTD::get<__find_exactly_one_t<_T1, _Args...>::value>(__tup);
|
836
|
+
}
|
837
|
+
|
838
|
+
template <class _T1, class... _Args>
|
839
|
+
inline _LIBCPP_INLINE_VISIBILITY
|
840
|
+
constexpr _T1&& get(tuple<_Args...>&& __tup) noexcept
|
841
|
+
{
|
842
|
+
return _VSTD::get<__find_exactly_one_t<_T1, _Args...>::value>(_VSTD::move(__tup));
|
843
|
+
}
|
844
|
+
|
845
|
+
#endif
|
846
|
+
|
786
847
|
// tie
|
787
848
|
|
788
849
|
template <class ..._Tp>
|
@@ -824,13 +885,21 @@ struct __make_tuple_return
|
|
824
885
|
};
|
825
886
|
|
826
887
|
template <class... _Tp>
|
827
|
-
inline _LIBCPP_INLINE_VISIBILITY
|
888
|
+
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
|
828
889
|
tuple<typename __make_tuple_return<_Tp>::type...>
|
829
890
|
make_tuple(_Tp&&... __t)
|
830
891
|
{
|
831
892
|
return tuple<typename __make_tuple_return<_Tp>::type...>(_VSTD::forward<_Tp>(__t)...);
|
832
893
|
}
|
833
894
|
|
895
|
+
template <class... _Tp>
|
896
|
+
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
|
897
|
+
tuple<_Tp&&...>
|
898
|
+
__forward_as_tuple(_Tp&&... __t) _NOEXCEPT
|
899
|
+
{
|
900
|
+
return tuple<_Tp&&...>(_VSTD::forward<_Tp>(__t)...);
|
901
|
+
}
|
902
|
+
|
834
903
|
template <class... _Tp>
|
835
904
|
inline _LIBCPP_INLINE_VISIBILITY
|
836
905
|
tuple<_Tp&&...>
|
@@ -843,7 +912,7 @@ template <size_t _Ip>
|
|
843
912
|
struct __tuple_equal
|
844
913
|
{
|
845
914
|
template <class _Tp, class _Up>
|
846
|
-
_LIBCPP_INLINE_VISIBILITY
|
915
|
+
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
|
847
916
|
bool operator()(const _Tp& __x, const _Up& __y)
|
848
917
|
{
|
849
918
|
return __tuple_equal<_Ip - 1>()(__x, __y) && get<_Ip-1>(__x) == get<_Ip-1>(__y);
|
@@ -854,7 +923,7 @@ template <>
|
|
854
923
|
struct __tuple_equal<0>
|
855
924
|
{
|
856
925
|
template <class _Tp, class _Up>
|
857
|
-
_LIBCPP_INLINE_VISIBILITY
|
926
|
+
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
|
858
927
|
bool operator()(const _Tp&, const _Up&)
|
859
928
|
{
|
860
929
|
return true;
|
@@ -862,7 +931,7 @@ struct __tuple_equal<0>
|
|
862
931
|
};
|
863
932
|
|
864
933
|
template <class ..._Tp, class ..._Up>
|
865
|
-
inline _LIBCPP_INLINE_VISIBILITY
|
934
|
+
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
|
866
935
|
bool
|
867
936
|
operator==(const tuple<_Tp...>& __x, const tuple<_Up...>& __y)
|
868
937
|
{
|
@@ -870,7 +939,7 @@ operator==(const tuple<_Tp...>& __x, const tuple<_Up...>& __y)
|
|
870
939
|
}
|
871
940
|
|
872
941
|
template <class ..._Tp, class ..._Up>
|
873
|
-
inline _LIBCPP_INLINE_VISIBILITY
|
942
|
+
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
|
874
943
|
bool
|
875
944
|
operator!=(const tuple<_Tp...>& __x, const tuple<_Up...>& __y)
|
876
945
|
{
|
@@ -881,7 +950,7 @@ template <size_t _Ip>
|
|
881
950
|
struct __tuple_less
|
882
951
|
{
|
883
952
|
template <class _Tp, class _Up>
|
884
|
-
_LIBCPP_INLINE_VISIBILITY
|
953
|
+
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
|
885
954
|
bool operator()(const _Tp& __x, const _Up& __y)
|
886
955
|
{
|
887
956
|
return __tuple_less<_Ip-1>()(__x, __y) ||
|
@@ -893,7 +962,7 @@ template <>
|
|
893
962
|
struct __tuple_less<0>
|
894
963
|
{
|
895
964
|
template <class _Tp, class _Up>
|
896
|
-
_LIBCPP_INLINE_VISIBILITY
|
965
|
+
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
|
897
966
|
bool operator()(const _Tp&, const _Up&)
|
898
967
|
{
|
899
968
|
return false;
|
@@ -901,7 +970,7 @@ struct __tuple_less<0>
|
|
901
970
|
};
|
902
971
|
|
903
972
|
template <class ..._Tp, class ..._Up>
|
904
|
-
inline _LIBCPP_INLINE_VISIBILITY
|
973
|
+
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
|
905
974
|
bool
|
906
975
|
operator<(const tuple<_Tp...>& __x, const tuple<_Up...>& __y)
|
907
976
|
{
|
@@ -909,7 +978,7 @@ operator<(const tuple<_Tp...>& __x, const tuple<_Up...>& __y)
|
|
909
978
|
}
|
910
979
|
|
911
980
|
template <class ..._Tp, class ..._Up>
|
912
|
-
inline _LIBCPP_INLINE_VISIBILITY
|
981
|
+
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
|
913
982
|
bool
|
914
983
|
operator>(const tuple<_Tp...>& __x, const tuple<_Up...>& __y)
|
915
984
|
{
|
@@ -917,7 +986,7 @@ operator>(const tuple<_Tp...>& __x, const tuple<_Up...>& __y)
|
|
917
986
|
}
|
918
987
|
|
919
988
|
template <class ..._Tp, class ..._Up>
|
920
|
-
inline _LIBCPP_INLINE_VISIBILITY
|
989
|
+
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
|
921
990
|
bool
|
922
991
|
operator>=(const tuple<_Tp...>& __x, const tuple<_Up...>& __y)
|
923
992
|
{
|
@@ -925,7 +994,7 @@ operator>=(const tuple<_Tp...>& __x, const tuple<_Up...>& __y)
|
|
925
994
|
}
|
926
995
|
|
927
996
|
template <class ..._Tp, class ..._Up>
|
928
|
-
inline _LIBCPP_INLINE_VISIBILITY
|
997
|
+
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
|
929
998
|
bool
|
930
999
|
operator<=(const tuple<_Tp...>& __x, const tuple<_Up...>& __y)
|
931
1000
|
{
|
@@ -983,7 +1052,7 @@ struct __tuple_cat_return<>
|
|
983
1052
|
typedef tuple<> type;
|
984
1053
|
};
|
985
1054
|
|
986
|
-
inline _LIBCPP_INLINE_VISIBILITY
|
1055
|
+
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
|
987
1056
|
tuple<>
|
988
1057
|
tuple_cat()
|
989
1058
|
{
|
@@ -1030,16 +1099,16 @@ template <class ..._Types, size_t ..._I0, size_t ..._J0>
|
|
1030
1099
|
struct __tuple_cat<tuple<_Types...>, __tuple_indices<_I0...>, __tuple_indices<_J0...> >
|
1031
1100
|
{
|
1032
1101
|
template <class _Tuple0>
|
1033
|
-
_LIBCPP_INLINE_VISIBILITY
|
1102
|
+
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
|
1034
1103
|
typename __tuple_cat_return_ref<tuple<_Types...>&&, _Tuple0&&>::type
|
1035
1104
|
operator()(tuple<_Types...> __t, _Tuple0&& __t0)
|
1036
1105
|
{
|
1037
|
-
return
|
1106
|
+
return __forward_as_tuple(_VSTD::forward<_Types>(get<_I0>(__t))...,
|
1038
1107
|
get<_J0>(_VSTD::forward<_Tuple0>(__t0))...);
|
1039
1108
|
}
|
1040
1109
|
|
1041
1110
|
template <class _Tuple0, class _Tuple1, class ..._Tuples>
|
1042
|
-
_LIBCPP_INLINE_VISIBILITY
|
1111
|
+
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
|
1043
1112
|
typename __tuple_cat_return_ref<tuple<_Types...>&&, _Tuple0&&, _Tuple1&&, _Tuples&&...>::type
|
1044
1113
|
operator()(tuple<_Types...> __t, _Tuple0&& __t0, _Tuple1&& __t1, _Tuples&& ...__tpls)
|
1045
1114
|
{
|
@@ -1049,7 +1118,7 @@ struct __tuple_cat<tuple<_Types...>, __tuple_indices<_I0...>, __tuple_indices<_J
|
|
1049
1118
|
tuple<_Types..., typename __apply_cv<_Tuple0, typename tuple_element<_J0, _T0>::type>::type&&...>,
|
1050
1119
|
typename __make_tuple_indices<sizeof ...(_Types) + tuple_size<_T0>::value>::type,
|
1051
1120
|
typename __make_tuple_indices<tuple_size<_T1>::value>::type>()
|
1052
|
-
(
|
1121
|
+
(__forward_as_tuple(
|
1053
1122
|
_VSTD::forward<_Types>(get<_I0>(__t))...,
|
1054
1123
|
get<_J0>(_VSTD::forward<_Tuple0>(__t0))...
|
1055
1124
|
),
|
@@ -1059,7 +1128,7 @@ struct __tuple_cat<tuple<_Types...>, __tuple_indices<_I0...>, __tuple_indices<_J
|
|
1059
1128
|
};
|
1060
1129
|
|
1061
1130
|
template <class _Tuple0, class... _Tuples>
|
1062
|
-
inline _LIBCPP_INLINE_VISIBILITY
|
1131
|
+
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
|
1063
1132
|
typename __tuple_cat_return<_Tuple0, _Tuples...>::type
|
1064
1133
|
tuple_cat(_Tuple0&& __t0, _Tuples&&... __tpls)
|
1065
1134
|
{
|