summaryrefslogtreecommitdiffstats
path: root/libcxx/include/support/newlib/xlocale.h
diff options
context:
space:
mode:
authorJonathan Roelofs <jonathan@codesourcery.com>2014-09-19 20:09:12 +0000
committerJonathan Roelofs <jonathan@codesourcery.com>2014-09-19 20:09:12 +0000
commit4f1561a5dd875711fcb5018de791bf953d25c817 (patch)
tree9ab69c75b07ba0fd5ea8d89d1a0e4786963a5180 /libcxx/include/support/newlib/xlocale.h
parent0fc0c22fa9fb999f988b89e6870ed657e17d87a9 (diff)
downloadbcm5719-llvm-4f1561a5dd875711fcb5018de791bf953d25c817.tar.gz
bcm5719-llvm-4f1561a5dd875711fcb5018de791bf953d25c817.zip
Support newlib as libc++'s C library [locale part]
http://reviews.llvm.org/D5385 llvm-svn: 218144
Diffstat (limited to 'libcxx/include/support/newlib/xlocale.h')
-rw-r--r--libcxx/include/support/newlib/xlocale.h63
1 files changed, 63 insertions, 0 deletions
diff --git a/libcxx/include/support/newlib/xlocale.h b/libcxx/include/support/newlib/xlocale.h
new file mode 100644
index 00000000000..d067cf85a3b
--- /dev/null
+++ b/libcxx/include/support/newlib/xlocale.h
@@ -0,0 +1,63 @@
+//===----------------------------------------------------------------------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is dual licensed under the MIT and the University of Illinois Open
+// Source Licenses. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef _LIBCPP_SUPPORT_NEWLIB_XLOCALE_H
+#define _LIBCPP_SUPPORT_NEWLIB_XLOCALE_H
+
+#if defined(_NEWLIB_VERSION)
+
+#include <cstdlib>
+#include <clocale>
+#include <cwctype>
+#include <ctype.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// Patch over newlib's lack of extended locale support
+typedef void *locale_t;
+static inline locale_t duplocale(locale_t) {
+ return NULL;
+}
+
+static inline void freelocale(locale_t) {
+}
+
+static inline locale_t newlocale(int, const char *, locale_t) {
+ return NULL;
+}
+
+static inline locale_t uselocale(locale_t) {
+ return NULL;
+}
+
+#define LC_COLLATE_MASK (1 << LC_COLLATE)
+#define LC_CTYPE_MASK (1 << LC_CTYPE)
+#define LC_MESSAGES_MASK (1 << LC_MESSAGES)
+#define LC_MONETARY_MASK (1 << LC_MONETARY)
+#define LC_NUMERIC_MASK (1 << LC_NUMERIC)
+#define LC_TIME_MASK (1 << LC_TIME)
+#define LC_ALL_MASK (LC_COLLATE_MASK|\
+ LC_CTYPE_MASK|\
+ LC_MONETARY_MASK|\
+ LC_NUMERIC_MASK|\
+ LC_TIME_MASK|\
+ LC_MESSAGES_MASK)
+
+// Share implementation with Android's Bionic
+#include <support/xlocale/xlocale.h>
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
+
+#endif // _NEWLIB_VERSION
+
+#endif
OpenPOWER on IntegriCloud