aboutsummaryrefslogtreecommitdiff
path: root/system/include/libcxx
diff options
context:
space:
mode:
authorBruce Mitchener <bruce.mitchener@gmail.com>2013-02-28 00:35:29 +0700
committerBruce Mitchener <bruce.mitchener@gmail.com>2013-03-25 00:34:11 +0700
commit90338c69f75bf4c0b07bd7552b9c47755194eca8 (patch)
tree902d6292433d5b740bcdb8df2025825246ed5397 /system/include/libcxx
parent1a0bccc11d4ba74f8891b70dca1a723a4a7b932a (diff)
Get things working with the new libcxx / libcxxabi.
Diffstat (limited to 'system/include/libcxx')
-rw-r--r--system/include/libcxx/__locale12
-rw-r--r--system/include/libcxx/locale2
2 files changed, 8 insertions, 6 deletions
diff --git a/system/include/libcxx/__locale b/system/include/libcxx/__locale
index 4176720c..0805ad86 100644
--- a/system/include/libcxx/__locale
+++ b/system/include/libcxx/__locale
@@ -21,9 +21,9 @@
#include <locale.h>
#if _WIN32
# include <support/win32/locale_win32.h>
-#elif (__GLIBC__ || __APPLE__ || __FreeBSD__ || __sun__)
+#elif (__GLIBC__ || __APPLE__ || __FreeBSD__ || __sun__ || EMSCRIPTEN)
# include <xlocale.h>
-#endif // _WIN32 || __GLIBC__ || __APPLE__ || __FreeBSD_
+#endif // _WIN32 || __GLIBC__ || __APPLE__ || __FreeBSD__ || EMSCRIPTEN
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#pragma GCC system_header
@@ -339,11 +339,13 @@ public:
static const mask punct = _PUNCT;
static const mask xdigit = _HEX;
static const mask blank = _BLANK;
-#elif (__APPLE__ || __FreeBSD__)
+#elif (__APPLE__ || __FreeBSD__ || EMSCRIPTEN)
#if __APPLE__
typedef __uint32_t mask;
#elif __FreeBSD__
typedef unsigned long mask;
+#elif EMSCRIPTEN
+ typedef unsigned short mask;
#endif
static const mask space = _CTYPE_S;
static const mask print = _CTYPE_R;
@@ -367,7 +369,7 @@ public:
static const mask punct = _ISPUNCT;
static const mask xdigit = _ISXDIGIT;
static const mask blank = _ISBLANK;
-#else // __GLIBC__ || _WIN32 || __APPLE__ || __FreeBSD__ || __sun__
+#else // __GLIBC__ || _WIN32 || __APPLE__ || __FreeBSD__ || EMSCRIPTEN || __sun__
typedef unsigned long mask;
static const mask space = 1<<0;
static const mask print = 1<<1;
@@ -590,7 +592,7 @@ public:
#endif
_LIBCPP_ALWAYS_INLINE const mask* table() const _NOEXCEPT {return __tab_;}
static const mask* classic_table() _NOEXCEPT;
-#if defined(__GLIBC__)
+#if defined(__GLIBC__) || defined(EMSCRIPTEN)
static const int* __classic_upper_table() _NOEXCEPT;
static const int* __classic_lower_table() _NOEXCEPT;
#endif
diff --git a/system/include/libcxx/locale b/system/include/libcxx/locale
index 91893757..83259214 100644
--- a/system/include/libcxx/locale
+++ b/system/include/libcxx/locale
@@ -222,7 +222,7 @@ typedef _VSTD::unique_ptr<__locale_struct, decltype(&uselocale)> __locale_raii;
// OSX has nice foo_l() functions that let you turn off use of the global
// locale. Linux, not so much. The following functions avoid the locale when
// that's possible and otherwise do the wrong thing. FIXME.
-#ifdef __linux__
+#if defined(__linux__) || defined(EMSCRIPTEN)
#ifdef _LIBCPP_LOCALE__L_EXTENSIONS
decltype(MB_CUR_MAX_L(_VSTD::declval<locale_t>()))