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
@@ -10,6 +10,7 @@
|
|
10
10
|
#include <stdio.h>
|
11
11
|
|
12
12
|
#include "exception"
|
13
|
+
#include "new"
|
13
14
|
|
14
15
|
#ifndef __has_include
|
15
16
|
#define __has_include(inc) 0
|
@@ -90,14 +91,14 @@ terminate() _NOEXCEPT
|
|
90
91
|
(*get_terminate())();
|
91
92
|
// handler should not return
|
92
93
|
printf("terminate_handler unexpectedly returned\n");
|
93
|
-
::abort
|
94
|
+
::abort();
|
94
95
|
#ifndef _LIBCPP_NO_EXCEPTIONS
|
95
96
|
}
|
96
97
|
catch (...)
|
97
98
|
{
|
98
99
|
// handler should not throw exception
|
99
100
|
printf("terminate_handler unexpectedly threw an exception\n");
|
100
|
-
::abort
|
101
|
+
::abort();
|
101
102
|
}
|
102
103
|
#endif // _LIBCPP_NO_EXCEPTIONS
|
103
104
|
}
|
@@ -111,12 +112,17 @@ bool uncaught_exception() _NOEXCEPT
|
|
111
112
|
// on Darwin, there is a helper function so __cxa_get_globals is private
|
112
113
|
return __cxa_uncaught_exception();
|
113
114
|
#else // __APPLE__
|
114
|
-
|
115
|
+
# if defined(_MSC_VER) && ! defined(__clang__)
|
116
|
+
_LIBCPP_WARNING("uncaught_exception not yet implemented")
|
117
|
+
# else
|
118
|
+
# warning uncaught_exception not yet implemented
|
119
|
+
# endif
|
115
120
|
printf("uncaught_exception not yet implemented\n");
|
116
121
|
::abort();
|
117
122
|
#endif // __APPLE__
|
118
123
|
}
|
119
124
|
|
125
|
+
|
120
126
|
#ifndef _LIBCPPABI_VERSION
|
121
127
|
|
122
128
|
exception::~exception() _NOEXCEPT
|
@@ -143,16 +149,50 @@ const char* bad_exception::what() const _NOEXCEPT
|
|
143
149
|
|
144
150
|
#endif
|
145
151
|
|
152
|
+
#if defined(__GLIBCXX__)
|
153
|
+
|
154
|
+
// libsupc++ does not implement the dependent EH ABI and the functionality
|
155
|
+
// it uses to implement std::exception_ptr (which it declares as an alias of
|
156
|
+
// std::__exception_ptr::exception_ptr) is not directly exported to clients. So
|
157
|
+
// we have little choice but to hijack std::__exception_ptr::exception_ptr's
|
158
|
+
// (which fortunately has the same layout as our std::exception_ptr) copy
|
159
|
+
// constructor, assignment operator and destructor (which are part of its
|
160
|
+
// stable ABI), and its rethrow_exception(std::__exception_ptr::exception_ptr)
|
161
|
+
// function.
|
162
|
+
|
163
|
+
namespace __exception_ptr
|
164
|
+
{
|
165
|
+
|
166
|
+
struct exception_ptr
|
167
|
+
{
|
168
|
+
void* __ptr_;
|
169
|
+
|
170
|
+
exception_ptr(const exception_ptr&) _NOEXCEPT;
|
171
|
+
exception_ptr& operator=(const exception_ptr&) _NOEXCEPT;
|
172
|
+
~exception_ptr() _NOEXCEPT;
|
173
|
+
};
|
174
|
+
|
175
|
+
}
|
176
|
+
|
177
|
+
_LIBCPP_NORETURN void rethrow_exception(__exception_ptr::exception_ptr);
|
178
|
+
|
179
|
+
#endif
|
146
180
|
|
147
181
|
exception_ptr::~exception_ptr() _NOEXCEPT
|
148
182
|
{
|
149
183
|
#if HAVE_DEPENDENT_EH_ABI
|
150
184
|
__cxa_decrement_exception_refcount(__ptr_);
|
185
|
+
#elif defined(__GLIBCXX__)
|
186
|
+
reinterpret_cast<__exception_ptr::exception_ptr*>(this)->~exception_ptr();
|
151
187
|
#else
|
152
|
-
|
188
|
+
# if defined(_MSC_VER) && ! defined(__clang__)
|
189
|
+
_LIBCPP_WARNING("exception_ptr not yet implemented")
|
190
|
+
# else
|
191
|
+
# warning exception_ptr not yet implemented
|
192
|
+
# endif
|
153
193
|
printf("exception_ptr not yet implemented\n");
|
154
194
|
::abort();
|
155
|
-
#endif
|
195
|
+
#endif
|
156
196
|
}
|
157
197
|
|
158
198
|
exception_ptr::exception_ptr(const exception_ptr& other) _NOEXCEPT
|
@@ -160,11 +200,18 @@ exception_ptr::exception_ptr(const exception_ptr& other) _NOEXCEPT
|
|
160
200
|
{
|
161
201
|
#if HAVE_DEPENDENT_EH_ABI
|
162
202
|
__cxa_increment_exception_refcount(__ptr_);
|
203
|
+
#elif defined(__GLIBCXX__)
|
204
|
+
new (reinterpret_cast<void*>(this)) __exception_ptr::exception_ptr(
|
205
|
+
reinterpret_cast<const __exception_ptr::exception_ptr&>(other));
|
163
206
|
#else
|
164
|
-
|
207
|
+
# if defined(_MSC_VER) && ! defined(__clang__)
|
208
|
+
_LIBCPP_WARNING("exception_ptr not yet implemented")
|
209
|
+
# else
|
210
|
+
# warning exception_ptr not yet implemented
|
211
|
+
# endif
|
165
212
|
printf("exception_ptr not yet implemented\n");
|
166
213
|
::abort();
|
167
|
-
#endif
|
214
|
+
#endif
|
168
215
|
}
|
169
216
|
|
170
217
|
exception_ptr& exception_ptr::operator=(const exception_ptr& other) _NOEXCEPT
|
@@ -177,11 +224,19 @@ exception_ptr& exception_ptr::operator=(const exception_ptr& other) _NOEXCEPT
|
|
177
224
|
__ptr_ = other.__ptr_;
|
178
225
|
}
|
179
226
|
return *this;
|
180
|
-
#
|
181
|
-
|
227
|
+
#elif defined(__GLIBCXX__)
|
228
|
+
*reinterpret_cast<__exception_ptr::exception_ptr*>(this) =
|
229
|
+
reinterpret_cast<const __exception_ptr::exception_ptr&>(other);
|
230
|
+
return *this;
|
231
|
+
#else
|
232
|
+
# if defined(_MSC_VER) && ! defined(__clang__)
|
233
|
+
_LIBCPP_WARNING("exception_ptr not yet implemented")
|
234
|
+
# else
|
235
|
+
# warning exception_ptr not yet implemented
|
236
|
+
# endif
|
182
237
|
printf("exception_ptr not yet implemented\n");
|
183
238
|
::abort();
|
184
|
-
#endif
|
239
|
+
#endif
|
185
240
|
}
|
186
241
|
|
187
242
|
nested_exception::nested_exception() _NOEXCEPT
|
@@ -189,10 +244,14 @@ nested_exception::nested_exception() _NOEXCEPT
|
|
189
244
|
{
|
190
245
|
}
|
191
246
|
|
247
|
+
#if !defined(__GLIBCXX__)
|
248
|
+
|
192
249
|
nested_exception::~nested_exception() _NOEXCEPT
|
193
250
|
{
|
194
251
|
}
|
195
252
|
|
253
|
+
#endif
|
254
|
+
|
196
255
|
_LIBCPP_NORETURN
|
197
256
|
void
|
198
257
|
nested_exception::rethrow_nested() const
|
@@ -202,6 +261,7 @@ nested_exception::rethrow_nested() const
|
|
202
261
|
rethrow_exception(__ptr_);
|
203
262
|
}
|
204
263
|
|
264
|
+
#if !defined(__GLIBCXX__)
|
205
265
|
|
206
266
|
exception_ptr current_exception() _NOEXCEPT
|
207
267
|
{
|
@@ -212,13 +272,19 @@ exception_ptr current_exception() _NOEXCEPT
|
|
212
272
|
exception_ptr ptr;
|
213
273
|
ptr.__ptr_ = __cxa_current_primary_exception();
|
214
274
|
return ptr;
|
215
|
-
#else
|
216
|
-
|
275
|
+
#else
|
276
|
+
# if defined(_MSC_VER) && ! defined(__clang__)
|
277
|
+
_LIBCPP_WARNING( "exception_ptr not yet implemented" )
|
278
|
+
# else
|
279
|
+
# warning exception_ptr not yet implemented
|
280
|
+
# endif
|
217
281
|
printf("exception_ptr not yet implemented\n");
|
218
282
|
::abort();
|
219
|
-
#endif
|
283
|
+
#endif
|
220
284
|
}
|
221
285
|
|
286
|
+
#endif // !__GLIBCXX__
|
287
|
+
|
222
288
|
_LIBCPP_NORETURN
|
223
289
|
void rethrow_exception(exception_ptr p)
|
224
290
|
{
|
@@ -226,10 +292,16 @@ void rethrow_exception(exception_ptr p)
|
|
226
292
|
__cxa_rethrow_primary_exception(p.__ptr_);
|
227
293
|
// if p.__ptr_ is NULL, above returns so we terminate
|
228
294
|
terminate();
|
229
|
-
#
|
230
|
-
|
295
|
+
#elif defined(__GLIBCXX__)
|
296
|
+
rethrow_exception(reinterpret_cast<__exception_ptr::exception_ptr&>(p));
|
297
|
+
#else
|
298
|
+
# if defined(_MSC_VER) && ! defined(__clang__)
|
299
|
+
_LIBCPP_WARNING("exception_ptr not yet implemented")
|
300
|
+
# else
|
301
|
+
# warning exception_ptr not yet implemented
|
302
|
+
# endif
|
231
303
|
printf("exception_ptr not yet implemented\n");
|
232
304
|
::abort();
|
233
|
-
#endif
|
305
|
+
#endif
|
234
306
|
}
|
235
307
|
} // std
|
@@ -26,11 +26,15 @@ __future_error_category::name() const _NOEXCEPT
|
|
26
26
|
return "future";
|
27
27
|
}
|
28
28
|
|
29
|
+
#pragma clang diagnostic push
|
30
|
+
#pragma clang diagnostic ignored "-Wswitch"
|
31
|
+
|
29
32
|
string
|
30
33
|
__future_error_category::message(int ev) const
|
31
34
|
{
|
32
35
|
switch (static_cast<future_errc>(ev))
|
33
36
|
{
|
37
|
+
case future_errc(0): // For backwards compatibility with C++11 (LWG 2056)
|
34
38
|
case future_errc::broken_promise:
|
35
39
|
return string("The associated promise has been destructed prior "
|
36
40
|
"to the associated state becoming ready.");
|
@@ -46,6 +50,8 @@ __future_error_category::message(int ev) const
|
|
46
50
|
return string("unspecified future_errc value\n");
|
47
51
|
}
|
48
52
|
|
53
|
+
#pragma clang diagnostic pop
|
54
|
+
|
49
55
|
const error_category&
|
50
56
|
future_category() _NOEXCEPT
|
51
57
|
{
|
@@ -7,6 +7,8 @@
|
|
7
7
|
//
|
8
8
|
//===----------------------------------------------------------------------===//
|
9
9
|
|
10
|
+
#define _LIBCPP_EXTERN_TEMPLATE(...) extern template __VA_ARGS__;
|
11
|
+
|
10
12
|
#include "ios"
|
11
13
|
#include "streambuf"
|
12
14
|
#include "istream"
|
@@ -61,7 +63,7 @@ __iostream_category::message(int ev) const
|
|
61
63
|
}
|
62
64
|
|
63
65
|
const error_category&
|
64
|
-
iostream_category()
|
66
|
+
iostream_category() _NOEXCEPT
|
65
67
|
{
|
66
68
|
static __iostream_category s;
|
67
69
|
return s;
|
@@ -147,8 +149,11 @@ ios_base::getloc() const
|
|
147
149
|
}
|
148
150
|
|
149
151
|
// xalloc
|
150
|
-
|
152
|
+
#if __has_feature(cxx_atomic) && !defined(__EMSCRIPTEN__)
|
153
|
+
atomic<int> ios_base::__xindex_ = ATOMIC_VAR_INIT(0);
|
154
|
+
#else
|
151
155
|
int ios_base::__xindex_ = 0;
|
156
|
+
#endif
|
152
157
|
|
153
158
|
int
|
154
159
|
ios_base::xalloc()
|
@@ -22,14 +22,14 @@ _ALIGNAS_TYPE (__stdinbuf<wchar_t> ) static char __wcin [sizeof(__stdinbuf <wcha
|
|
22
22
|
_ALIGNAS_TYPE (__stdoutbuf<wchar_t>) static char __wcout[sizeof(__stdoutbuf<wchar_t>)];
|
23
23
|
_ALIGNAS_TYPE (__stdoutbuf<wchar_t>) static char __wcerr[sizeof(__stdoutbuf<wchar_t>)];
|
24
24
|
|
25
|
-
_ALIGNAS_TYPE (istream) char cin [sizeof(istream)];
|
26
|
-
_ALIGNAS_TYPE (ostream) char cout[sizeof(ostream)];
|
27
|
-
_ALIGNAS_TYPE (ostream) char cerr[sizeof(ostream)];
|
28
|
-
_ALIGNAS_TYPE (ostream) char clog[sizeof(ostream)];
|
29
|
-
_ALIGNAS_TYPE (wistream) char wcin [sizeof(wistream)];
|
30
|
-
_ALIGNAS_TYPE (wostream) char wcout[sizeof(wostream)];
|
31
|
-
_ALIGNAS_TYPE (wostream) char wcerr[sizeof(wostream)];
|
32
|
-
_ALIGNAS_TYPE (wostream) char wclog[sizeof(wostream)];
|
25
|
+
_ALIGNAS_TYPE (istream) _LIBCPP_FUNC_VIS char cin [sizeof(istream)];
|
26
|
+
_ALIGNAS_TYPE (ostream) _LIBCPP_FUNC_VIS char cout[sizeof(ostream)];
|
27
|
+
_ALIGNAS_TYPE (ostream) _LIBCPP_FUNC_VIS char cerr[sizeof(ostream)];
|
28
|
+
_ALIGNAS_TYPE (ostream) _LIBCPP_FUNC_VIS char clog[sizeof(ostream)];
|
29
|
+
_ALIGNAS_TYPE (wistream) _LIBCPP_FUNC_VIS char wcin [sizeof(wistream)];
|
30
|
+
_ALIGNAS_TYPE (wostream) _LIBCPP_FUNC_VIS char wcout[sizeof(wostream)];
|
31
|
+
_ALIGNAS_TYPE (wostream) _LIBCPP_FUNC_VIS char wcerr[sizeof(wostream)];
|
32
|
+
_ALIGNAS_TYPE (wostream) _LIBCPP_FUNC_VIS char wclog[sizeof(wostream)];
|
33
33
|
|
34
34
|
ios_base::Init __start_std_streams;
|
35
35
|
|
@@ -7,6 +7,8 @@
|
|
7
7
|
//
|
8
8
|
//===----------------------------------------------------------------------===//
|
9
9
|
|
10
|
+
#define _LIBCPP_EXTERN_TEMPLATE(...) extern template __VA_ARGS__;
|
11
|
+
|
10
12
|
// On Solaris, we need to define something to make the C99 parts of localeconv
|
11
13
|
// visible.
|
12
14
|
#ifdef __sun__
|
@@ -26,7 +28,7 @@
|
|
26
28
|
#include "cstring"
|
27
29
|
#include "cwctype"
|
28
30
|
#include "__sso_allocator"
|
29
|
-
#
|
31
|
+
#if defined(_LIBCPP_MSVCRT) || defined(__MINGW32__)
|
30
32
|
#include <support/win32/locale_win32.h>
|
31
33
|
#else // _LIBCPP_MSVCRT
|
32
34
|
#include <langinfo.h>
|
@@ -36,7 +38,9 @@
|
|
36
38
|
|
37
39
|
// On Linux, wint_t and wchar_t have different signed-ness, and this causes
|
38
40
|
// lots of noise in the build log, but no bugs that I know of.
|
41
|
+
#if defined(__clang__)
|
39
42
|
#pragma clang diagnostic ignored "-Wsign-conversion"
|
43
|
+
#endif
|
40
44
|
|
41
45
|
_LIBCPP_BEGIN_NAMESPACE_STD
|
42
46
|
|
@@ -107,6 +111,11 @@ countof(const T * const begin, const T * const end)
|
|
107
111
|
|
108
112
|
}
|
109
113
|
|
114
|
+
#if defined(_AIX)
|
115
|
+
// Set priority to INT_MIN + 256 + 150
|
116
|
+
# pragma priority ( -2147483242 )
|
117
|
+
#endif
|
118
|
+
|
110
119
|
const locale::category locale::none;
|
111
120
|
const locale::category locale::collate;
|
112
121
|
const locale::category locale::ctype;
|
@@ -116,14 +125,23 @@ const locale::category locale::time;
|
|
116
125
|
const locale::category locale::messages;
|
117
126
|
const locale::category locale::all;
|
118
127
|
|
128
|
+
#if defined(__clang__)
|
119
129
|
#pragma clang diagnostic push
|
120
130
|
#pragma clang diagnostic ignored "-Wpadded"
|
131
|
+
#endif
|
121
132
|
|
122
133
|
class _LIBCPP_HIDDEN locale::__imp
|
123
134
|
: public facet
|
124
135
|
{
|
125
136
|
enum {N = 28};
|
137
|
+
#if defined(_LIBCPP_MSVC)
|
138
|
+
// FIXME: MSVC doesn't support aligned parameters by value.
|
139
|
+
// I can't get the __sso_allocator to work here
|
140
|
+
// for MSVC I think for this reason.
|
141
|
+
vector<facet*> facets_;
|
142
|
+
#else
|
126
143
|
vector<facet*, __sso_allocator<facet*, N> > facets_;
|
144
|
+
#endif
|
127
145
|
string name_;
|
128
146
|
public:
|
129
147
|
explicit __imp(size_t refs = 0);
|
@@ -147,7 +165,9 @@ private:
|
|
147
165
|
template <class F> void install_from(const __imp& other);
|
148
166
|
};
|
149
167
|
|
168
|
+
#if defined(__clang__)
|
150
169
|
#pragma clang diagnostic pop
|
170
|
+
#endif
|
151
171
|
|
152
172
|
locale::__imp::__imp(size_t refs)
|
153
173
|
: facet(refs),
|
@@ -757,7 +777,7 @@ ctype<wchar_t>::~ctype()
|
|
757
777
|
bool
|
758
778
|
ctype<wchar_t>::do_is(mask m, char_type c) const
|
759
779
|
{
|
760
|
-
return isascii(c) ? ctype<char>::classic_table()[c] & m : false;
|
780
|
+
return isascii(c) ? (ctype<char>::classic_table()[c] & m) != 0 : false;
|
761
781
|
}
|
762
782
|
|
763
783
|
const wchar_t*
|
@@ -1009,12 +1029,14 @@ ctype<char>::classic_table() _NOEXCEPT
|
|
1009
1029
|
return __cloc()->__ctype_b;
|
1010
1030
|
#elif __sun__
|
1011
1031
|
return __ctype_mask;
|
1012
|
-
#elif defined(_LIBCPP_MSVCRT)
|
1032
|
+
#elif defined(_LIBCPP_MSVCRT) || defined(__MINGW32__)
|
1013
1033
|
return _ctype+1; // internal ctype mask table defined in msvcrt.dll
|
1014
1034
|
// This is assumed to be safe, which is a nonsense assumption because we're
|
1015
1035
|
// going to end up dereferencing it later...
|
1016
1036
|
#elif defined(__EMSCRIPTEN__)
|
1017
1037
|
return *__ctype_b_loc();
|
1038
|
+
#elif defined(_AIX)
|
1039
|
+
return (const unsigned long *)__lc_ctype_ptr->obj->mask;
|
1018
1040
|
#else
|
1019
1041
|
// Platform not supported: abort so the person doing the port knows what to
|
1020
1042
|
// fix
|
@@ -4350,7 +4372,7 @@ __num_put_base::__format_float(char* __fmtp, const char* __len,
|
|
4350
4372
|
if (__flags & ios_base::showpoint)
|
4351
4373
|
*__fmtp++ = '#';
|
4352
4374
|
ios_base::fmtflags floatfield = __flags & ios_base::floatfield;
|
4353
|
-
bool uppercase = __flags & ios_base::uppercase;
|
4375
|
+
bool uppercase = (__flags & ios_base::uppercase) != 0;
|
4354
4376
|
if (floatfield == (ios_base::fixed | ios_base::scientific))
|
4355
4377
|
specify_precision = false;
|
4356
4378
|
else
|
@@ -4681,9 +4703,12 @@ __time_get::~__time_get()
|
|
4681
4703
|
{
|
4682
4704
|
freelocale(__loc_);
|
4683
4705
|
}
|
4684
|
-
|
4706
|
+
#if defined(__clang__)
|
4685
4707
|
#pragma clang diagnostic ignored "-Wmissing-field-initializers"
|
4708
|
+
#endif
|
4709
|
+
#if defined(__GNUG__)
|
4686
4710
|
#pragma GCC diagnostic ignored "-Wmissing-field-initializers"
|
4711
|
+
#endif
|
4687
4712
|
|
4688
4713
|
template <>
|
4689
4714
|
string
|
@@ -4829,7 +4854,9 @@ __time_get_storage<char>::__analyze(char fmt, const ctype<char>& ct)
|
|
4829
4854
|
return result;
|
4830
4855
|
}
|
4831
4856
|
|
4857
|
+
#if defined(__clang__)
|
4832
4858
|
#pragma clang diagnostic ignored "-Wmissing-braces"
|
4859
|
+
#endif
|
4833
4860
|
|
4834
4861
|
template <>
|
4835
4862
|
wstring
|
@@ -5848,7 +5875,7 @@ moneypunct_byname<char, true>::init(const char* nm)
|
|
5848
5875
|
__frac_digits_ = lc->int_frac_digits;
|
5849
5876
|
else
|
5850
5877
|
__frac_digits_ = base::do_frac_digits();
|
5851
|
-
#
|
5878
|
+
#if defined(_LIBCPP_MSVCRT) || defined(__MINGW32__)
|
5852
5879
|
if (lc->p_sign_posn == 0)
|
5853
5880
|
#else // _LIBCPP_MSVCRT
|
5854
5881
|
if (lc->int_p_sign_posn == 0)
|
@@ -5856,7 +5883,7 @@ moneypunct_byname<char, true>::init(const char* nm)
|
|
5856
5883
|
__positive_sign_ = "()";
|
5857
5884
|
else
|
5858
5885
|
__positive_sign_ = lc->positive_sign;
|
5859
|
-
#
|
5886
|
+
#if defined(_LIBCPP_MSVCRT) || defined(__MINGW32__)
|
5860
5887
|
if(lc->n_sign_posn == 0)
|
5861
5888
|
#else // _LIBCPP_MSVCRT
|
5862
5889
|
if (lc->int_n_sign_posn == 0)
|
@@ -5868,7 +5895,7 @@ moneypunct_byname<char, true>::init(const char* nm)
|
|
5868
5895
|
// the same places in curr_symbol since there's no way to
|
5869
5896
|
// represent anything else.
|
5870
5897
|
string_type __dummy_curr_symbol = __curr_symbol_;
|
5871
|
-
#
|
5898
|
+
#if defined(_LIBCPP_MSVCRT) || defined(__MINGW32__)
|
5872
5899
|
__init_pat(__pos_format_, __dummy_curr_symbol, true,
|
5873
5900
|
lc->p_cs_precedes, lc->p_sep_by_space, lc->p_sign_posn, ' ');
|
5874
5901
|
__init_pat(__neg_format_, __curr_symbol_, true,
|
@@ -6007,7 +6034,7 @@ moneypunct_byname<wchar_t, true>::init(const char* nm)
|
|
6007
6034
|
__frac_digits_ = lc->int_frac_digits;
|
6008
6035
|
else
|
6009
6036
|
__frac_digits_ = base::do_frac_digits();
|
6010
|
-
#
|
6037
|
+
#if defined(_LIBCPP_MSVCRT) || defined(__MINGW32__)
|
6011
6038
|
if (lc->p_sign_posn == 0)
|
6012
6039
|
#else // _LIBCPP_MSVCRT
|
6013
6040
|
if (lc->int_p_sign_posn == 0)
|
@@ -6027,7 +6054,7 @@ moneypunct_byname<wchar_t, true>::init(const char* nm)
|
|
6027
6054
|
wbe = wbuf + j;
|
6028
6055
|
__positive_sign_.assign(wbuf, wbe);
|
6029
6056
|
}
|
6030
|
-
#
|
6057
|
+
#if defined(_LIBCPP_MSVCRT) || defined(__MINGW32__)
|
6031
6058
|
if (lc->n_sign_posn == 0)
|
6032
6059
|
#else // _LIBCPP_MSVCRT
|
6033
6060
|
if (lc->int_n_sign_posn == 0)
|
@@ -6051,7 +6078,7 @@ moneypunct_byname<wchar_t, true>::init(const char* nm)
|
|
6051
6078
|
// the same places in curr_symbol since there's no way to
|
6052
6079
|
// represent anything else.
|
6053
6080
|
string_type __dummy_curr_symbol = __curr_symbol_;
|
6054
|
-
#
|
6081
|
+
#if defined(_LIBCPP_MSVCRT) || defined(__MINGW32__)
|
6055
6082
|
__init_pat(__pos_format_, __dummy_curr_symbol, true,
|
6056
6083
|
lc->p_cs_precedes, lc->p_sep_by_space, lc->p_sign_posn, L' ');
|
6057
6084
|
__init_pat(__neg_format_, __curr_symbol_, true,
|
@@ -42,6 +42,7 @@ void
|
|
42
42
|
mutex::unlock() _NOEXCEPT
|
43
43
|
{
|
44
44
|
int ec = pthread_mutex_unlock(&__m_);
|
45
|
+
(void)ec;
|
45
46
|
assert(ec == 0);
|
46
47
|
}
|
47
48
|
|
@@ -79,6 +80,7 @@ fail:
|
|
79
80
|
recursive_mutex::~recursive_mutex()
|
80
81
|
{
|
81
82
|
int e = pthread_mutex_destroy(&__m_);
|
83
|
+
(void)e;
|
82
84
|
assert(e == 0);
|
83
85
|
}
|
84
86
|
|
@@ -94,6 +96,7 @@ void
|
|
94
96
|
recursive_mutex::unlock() _NOEXCEPT
|
95
97
|
{
|
96
98
|
int e = pthread_mutex_unlock(&__m_);
|
99
|
+
(void)e;
|
97
100
|
assert(e == 0);
|
98
101
|
}
|
99
102
|
|
@@ -7,6 +7,8 @@
|
|
7
7
|
//
|
8
8
|
//===----------------------------------------------------------------------===//
|
9
9
|
|
10
|
+
#define _LIBCPP_BUILDING_NEW
|
11
|
+
|
10
12
|
#include <stdlib.h>
|
11
13
|
|
12
14
|
#include "new"
|
@@ -28,16 +30,18 @@
|
|
28
30
|
#if defined(LIBCXXRT) || __has_include(<cxxabi.h>)
|
29
31
|
#include <cxxabi.h>
|
30
32
|
#endif // __has_include(<cxxabi.h>)
|
31
|
-
#
|
33
|
+
#if !defined(_LIBCPPABI_VERSION) && !defined(__GLIBCXX__)
|
32
34
|
static std::new_handler __new_handler;
|
33
35
|
#endif // _LIBCPPABI_VERSION
|
34
36
|
#endif
|
35
37
|
|
38
|
+
#ifndef __GLIBCXX__
|
39
|
+
|
36
40
|
// Implement all new and delete operators as weak definitions
|
37
41
|
// in this shared library, so that they can be overriden by programs
|
38
42
|
// that define non-weak copies of the functions.
|
39
43
|
|
40
|
-
|
44
|
+
_LIBCPP_WEAK _LIBCPP_NEW_DELETE_VIS
|
41
45
|
void *
|
42
46
|
operator new(std::size_t size)
|
43
47
|
#if !__has_feature(cxx_noexcept)
|
@@ -64,7 +68,7 @@ operator new(std::size_t size)
|
|
64
68
|
return p;
|
65
69
|
}
|
66
70
|
|
67
|
-
|
71
|
+
_LIBCPP_WEAK _LIBCPP_NEW_DELETE_VIS
|
68
72
|
void*
|
69
73
|
operator new(size_t size, const std::nothrow_t&) _NOEXCEPT
|
70
74
|
{
|
@@ -83,7 +87,7 @@ operator new(size_t size, const std::nothrow_t&) _NOEXCEPT
|
|
83
87
|
return p;
|
84
88
|
}
|
85
89
|
|
86
|
-
|
90
|
+
_LIBCPP_WEAK _LIBCPP_NEW_DELETE_VIS
|
87
91
|
void*
|
88
92
|
operator new[](size_t size)
|
89
93
|
#if !__has_feature(cxx_noexcept)
|
@@ -93,7 +97,7 @@ operator new[](size_t size)
|
|
93
97
|
return ::operator new(size);
|
94
98
|
}
|
95
99
|
|
96
|
-
|
100
|
+
_LIBCPP_WEAK _LIBCPP_NEW_DELETE_VIS
|
97
101
|
void*
|
98
102
|
operator new[](size_t size, const std::nothrow_t&) _NOEXCEPT
|
99
103
|
{
|
@@ -112,7 +116,7 @@ operator new[](size_t size, const std::nothrow_t&) _NOEXCEPT
|
|
112
116
|
return p;
|
113
117
|
}
|
114
118
|
|
115
|
-
|
119
|
+
_LIBCPP_WEAK _LIBCPP_NEW_DELETE_VIS
|
116
120
|
void
|
117
121
|
operator delete(void* ptr) _NOEXCEPT
|
118
122
|
{
|
@@ -120,34 +124,40 @@ operator delete(void* ptr) _NOEXCEPT
|
|
120
124
|
::free(ptr);
|
121
125
|
}
|
122
126
|
|
123
|
-
|
127
|
+
_LIBCPP_WEAK _LIBCPP_NEW_DELETE_VIS
|
124
128
|
void
|
125
129
|
operator delete(void* ptr, const std::nothrow_t&) _NOEXCEPT
|
126
130
|
{
|
127
131
|
::operator delete(ptr);
|
128
132
|
}
|
129
133
|
|
130
|
-
|
134
|
+
_LIBCPP_WEAK _LIBCPP_NEW_DELETE_VIS
|
131
135
|
void
|
132
136
|
operator delete[] (void* ptr) _NOEXCEPT
|
133
137
|
{
|
134
138
|
::operator delete (ptr);
|
135
139
|
}
|
136
140
|
|
137
|
-
|
141
|
+
_LIBCPP_WEAK _LIBCPP_NEW_DELETE_VIS
|
138
142
|
void
|
139
143
|
operator delete[] (void* ptr, const std::nothrow_t&) _NOEXCEPT
|
140
144
|
{
|
141
145
|
::operator delete[](ptr);
|
142
146
|
}
|
143
147
|
|
148
|
+
#endif // !__GLIBCXX__
|
149
|
+
|
144
150
|
namespace std
|
145
151
|
{
|
146
152
|
|
153
|
+
#ifndef __GLIBCXX__
|
147
154
|
const nothrow_t nothrow = {};
|
155
|
+
#endif
|
148
156
|
|
149
157
|
#ifndef _LIBCPPABI_VERSION
|
150
158
|
|
159
|
+
#ifndef __GLIBCXX__
|
160
|
+
|
151
161
|
new_handler
|
152
162
|
set_new_handler(new_handler handler) _NOEXCEPT
|
153
163
|
{
|
@@ -160,12 +170,16 @@ get_new_handler() _NOEXCEPT
|
|
160
170
|
return __sync_fetch_and_add(&__new_handler, (new_handler)0);
|
161
171
|
}
|
162
172
|
|
173
|
+
#endif // !__GLIBCXX__
|
174
|
+
|
163
175
|
#ifndef LIBCXXRT
|
164
176
|
|
165
177
|
bad_alloc::bad_alloc() _NOEXCEPT
|
166
178
|
{
|
167
179
|
}
|
168
180
|
|
181
|
+
#ifndef __GLIBCXX__
|
182
|
+
|
169
183
|
bad_alloc::~bad_alloc() _NOEXCEPT
|
170
184
|
{
|
171
185
|
}
|
@@ -176,6 +190,8 @@ bad_alloc::what() const _NOEXCEPT
|
|
176
190
|
return "std::bad_alloc";
|
177
191
|
}
|
178
192
|
|
193
|
+
#endif // !__GLIBCXX__
|
194
|
+
|
179
195
|
#endif //LIBCXXRT
|
180
196
|
|
181
197
|
bad_array_new_length::bad_array_new_length() _NOEXCEPT
|
@@ -186,13 +202,29 @@ bad_array_new_length::~bad_array_new_length() _NOEXCEPT
|
|
186
202
|
{
|
187
203
|
}
|
188
204
|
|
205
|
+
const char*
|
206
|
+
bad_array_length::what() const _NOEXCEPT
|
207
|
+
{
|
208
|
+
return "bad_array_length";
|
209
|
+
}
|
210
|
+
|
211
|
+
bad_array_length::bad_array_length() _NOEXCEPT
|
212
|
+
{
|
213
|
+
}
|
214
|
+
|
215
|
+
bad_array_length::~bad_array_length() _NOEXCEPT
|
216
|
+
{
|
217
|
+
}
|
218
|
+
|
189
219
|
const char*
|
190
220
|
bad_array_new_length::what() const _NOEXCEPT
|
191
221
|
{
|
192
222
|
return "bad_array_new_length";
|
193
223
|
}
|
194
224
|
|
195
|
-
#endif
|
225
|
+
#endif // _LIBCPPABI_VERSION
|
226
|
+
|
227
|
+
#ifndef LIBSTDCXX
|
196
228
|
|
197
229
|
void
|
198
230
|
__throw_bad_alloc()
|
@@ -202,4 +234,6 @@ __throw_bad_alloc()
|
|
202
234
|
#endif
|
203
235
|
}
|
204
236
|
|
237
|
+
#endif // !LIBSTDCXX
|
238
|
+
|
205
239
|
} // std
|
@@ -0,0 +1,25 @@
|
|
1
|
+
//===------------------------ optional.cpp --------------------------------===//
|
2
|
+
//
|
3
|
+
// The LLVM Compiler Infrastructure
|
4
|
+
//
|
5
|
+
// This file is dual licensed under the MIT and the University of Illinois Open
|
6
|
+
// Source Licenses. See LICENSE.TXT for details.
|
7
|
+
//
|
8
|
+
//===----------------------------------------------------------------------===//
|
9
|
+
|
10
|
+
#include "optional"
|
11
|
+
|
12
|
+
namespace std // purposefully not using versioning namespace
|
13
|
+
{
|
14
|
+
|
15
|
+
#ifdef _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS
|
16
|
+
|
17
|
+
bad_optional_access::~bad_optional_access() _NOEXCEPT {}
|
18
|
+
|
19
|
+
#else
|
20
|
+
|
21
|
+
bad_optional_access::~bad_optional_access() _NOEXCEPT = default;
|
22
|
+
|
23
|
+
#endif
|
24
|
+
|
25
|
+
} // std
|