[libcxx] r249738 - Split <ctype.h> out of <cctype>.

Richard Smith via cfe-commits cfe-commits at lists.llvm.org
Thu Oct 8 13:36:30 PDT 2015


Author: rsmith
Date: Thu Oct  8 15:36:30 2015
New Revision: 249738

URL: http://llvm.org/viewvc/llvm-project?rev=249738&view=rev
Log:
Split <ctype.h> out of <cctype>.

Added:
    libcxx/trunk/include/ctype.h
      - copied, changed from r249736, libcxx/trunk/include/cctype
Modified:
    libcxx/trunk/include/cctype
    libcxx/trunk/test/std/strings/c.strings/cctype.pass.cpp

Modified: libcxx/trunk/include/cctype
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/cctype?rev=249738&r1=249737&r2=249738&view=diff
==============================================================================
--- libcxx/trunk/include/cctype (original)
+++ libcxx/trunk/include/cctype Thu Oct  8 15:36:30 2015
@@ -37,10 +37,6 @@ int toupper(int c);
 
 #include <__config>
 #include <ctype.h>
-#if defined(_LIBCPP_MSVCRT)
-#include "support/win32/support.h"
-#include "support/win32/locale_win32.h"
-#endif // _LIBCPP_MSVCRT
 
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
@@ -48,33 +44,19 @@ int toupper(int c);
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
-#undef isalnum
 using ::isalnum;
-#undef isalpha
 using ::isalpha;
-#undef isblank
 using ::isblank;
-#undef iscntrl
 using ::iscntrl;
-#undef isdigit
 using ::isdigit;
-#undef isgraph
 using ::isgraph;
-#undef islower
 using ::islower;
-#undef isprint
 using ::isprint;
-#undef ispunct
 using ::ispunct;
-#undef isspace
 using ::isspace;
-#undef isupper
 using ::isupper;
-#undef isxdigit
 using ::isxdigit;
-#undef tolower
 using ::tolower;
-#undef toupper
 using ::toupper;
 
 _LIBCPP_END_NAMESPACE_STD

Copied: libcxx/trunk/include/ctype.h (from r249736, libcxx/trunk/include/cctype)
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/ctype.h?p2=libcxx/trunk/include/ctype.h&p1=libcxx/trunk/include/cctype&r1=249736&r2=249738&rev=249738&view=diff
==============================================================================
--- libcxx/trunk/include/cctype (original)
+++ libcxx/trunk/include/ctype.h Thu Oct  8 15:36:30 2015
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-//===---------------------------- cctype ----------------------------------===//
+//===---------------------------- ctype.h ---------------------------------===//
 //
 //                     The LLVM Compiler Infrastructure
 //
@@ -8,14 +8,11 @@
 //
 //===----------------------------------------------------------------------===//
 
-#ifndef _LIBCPP_CCTYPE
-#define _LIBCPP_CCTYPE
+#ifndef _LIBCPP_CTYPE_H
+#define _LIBCPP_CTYPE_H
 
 /*
-    cctype synopsis
-
-namespace std
-{
+    ctype.h synopsis
 
 int isalnum(int c);
 int isalpha(int c);
@@ -31,52 +28,41 @@ int isupper(int c);
 int isxdigit(int c);
 int tolower(int c);
 int toupper(int c);
-
-}  // std
 */
 
 #include <__config>
-#include <ctype.h>
-#if defined(_LIBCPP_MSVCRT)
-#include "support/win32/support.h"
-#include "support/win32/locale_win32.h"
-#endif // _LIBCPP_MSVCRT
+#include_next <ctype.h>
 
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
 #endif
 
-_LIBCPP_BEGIN_NAMESPACE_STD
+#ifdef __cplusplus
+
+#if defined(_LIBCPP_MSVCRT)
+// We support including .h headers inside 'extern "C"' contexts, so switch
+// back to C++ linkage before including these C++ headers.
+extern "C++" {
+  #include "support/win32/support.h"
+  #include "support/win32/locale_win32.h"
+}
+#endif // _LIBCPP_MSVCRT
 
 #undef isalnum
-using ::isalnum;
 #undef isalpha
-using ::isalpha;
 #undef isblank
-using ::isblank;
 #undef iscntrl
-using ::iscntrl;
 #undef isdigit
-using ::isdigit;
 #undef isgraph
-using ::isgraph;
 #undef islower
-using ::islower;
 #undef isprint
-using ::isprint;
 #undef ispunct
-using ::ispunct;
 #undef isspace
-using ::isspace;
 #undef isupper
-using ::isupper;
 #undef isxdigit
-using ::isxdigit;
 #undef tolower
-using ::tolower;
 #undef toupper
-using ::toupper;
 
-_LIBCPP_END_NAMESPACE_STD
+#endif
 
-#endif  // _LIBCPP_CCTYPE
+#endif  // _LIBCPP_CTYPE_H

Modified: libcxx/trunk/test/std/strings/c.strings/cctype.pass.cpp
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/strings/c.strings/cctype.pass.cpp?rev=249738&r1=249737&r2=249738&view=diff
==============================================================================
--- libcxx/trunk/test/std/strings/c.strings/cctype.pass.cpp (original)
+++ libcxx/trunk/test/std/strings/c.strings/cctype.pass.cpp Thu Oct  8 15:36:30 2015
@@ -86,18 +86,18 @@ int main()
     static_assert((std::is_same<decltype(std::tolower(0)), int>::value), "");
     static_assert((std::is_same<decltype(std::toupper(0)), int>::value), "");
 
-    assert(isalnum('a'));
-    assert(isalpha('a'));
-    assert(isblank(' '));
-    assert(!iscntrl(' '));
-    assert(!isdigit('a'));
-    assert(isgraph('a'));
-    assert(islower('a'));
-    assert(isprint('a'));
-    assert(!ispunct('a'));
-    assert(!isspace('a'));
-    assert(!isupper('a'));
-    assert(isxdigit('a'));
-    assert(tolower('A') == 'a');
-    assert(toupper('a') == 'A');
+    assert(std::isalnum('a'));
+    assert(std::isalpha('a'));
+    assert(std::isblank(' '));
+    assert(!std::iscntrl(' '));
+    assert(!std::isdigit('a'));
+    assert(std::isgraph('a'));
+    assert(std::islower('a'));
+    assert(std::isprint('a'));
+    assert(!std::ispunct('a'));
+    assert(!std::isspace('a'));
+    assert(!std::isupper('a'));
+    assert(std::isxdigit('a'));
+    assert(std::tolower('A') == 'a');
+    assert(std::toupper('a') == 'A');
 }




More information about the cfe-commits mailing list