cstring 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. // -*- C++ -*- forwarding header.
  2. // Copyright (C) 1997-2019 Free Software Foundation, Inc.
  3. //
  4. // This file is part of the GNU ISO C++ Library. This library is free
  5. // software; you can redistribute it and/or modify it under the
  6. // terms of the GNU General Public License as published by the
  7. // Free Software Foundation; either version 3, or (at your option)
  8. // any later version.
  9. // This library is distributed in the hope that it will be useful,
  10. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  12. // GNU General Public License for more details.
  13. // Under Section 7 of GPL version 3, you are granted additional
  14. // permissions described in the GCC Runtime Library Exception, version
  15. // 3.1, as published by the Free Software Foundation.
  16. // You should have received a copy of the GNU General Public License and
  17. // a copy of the GCC Runtime Library Exception along with this program;
  18. // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
  19. // <http://www.gnu.org/licenses/>.
  20. /** @file cstring
  21. * This is a Standard C++ Library file. You should @c \#include this file
  22. * in your programs, rather than any of the @a *.h implementation files.
  23. *
  24. * This is the C++ version of the Standard C Library header @c string.h,
  25. * and its contents are (mostly) the same as that header, but are all
  26. * contained in the namespace @c std (except for names which are defined
  27. * as macros in C).
  28. */
  29. //
  30. // ISO C++ 14882: 20.4.6 C library
  31. //
  32. #pragma GCC system_header
  33. #include <bits/c++config.h>
  34. #include <string.h>
  35. #ifndef _GLIBCXX_CSTRING
  36. #define _GLIBCXX_CSTRING 1
  37. // Get rid of those macros defined in <string.h> in lieu of real functions.
  38. #undef memchr
  39. #undef memcmp
  40. #undef memcpy
  41. #undef memmove
  42. #undef memset
  43. #undef strcat
  44. #undef strchr
  45. #undef strcmp
  46. #undef strcoll
  47. #undef strcpy
  48. #undef strcspn
  49. #undef strerror
  50. #undef strlen
  51. #undef strncat
  52. #undef strncmp
  53. #undef strncpy
  54. #undef strpbrk
  55. #undef strrchr
  56. #undef strspn
  57. #undef strstr
  58. #undef strtok
  59. #undef strxfrm
  60. extern "C++"
  61. {
  62. namespace std _GLIBCXX_VISIBILITY(default)
  63. {
  64. _GLIBCXX_BEGIN_NAMESPACE_VERSION
  65. using ::memchr;
  66. using ::memcmp;
  67. using ::memcpy;
  68. using ::memmove;
  69. using ::memset;
  70. using ::strcat;
  71. using ::strcmp;
  72. using ::strcoll;
  73. using ::strcpy;
  74. using ::strcspn;
  75. using ::strerror;
  76. using ::strlen;
  77. using ::strncat;
  78. using ::strncmp;
  79. using ::strncpy;
  80. using ::strspn;
  81. using ::strtok;
  82. using ::strxfrm;
  83. using ::strchr;
  84. using ::strpbrk;
  85. using ::strrchr;
  86. using ::strstr;
  87. #ifndef __CORRECT_ISO_CPP_STRING_H_PROTO
  88. inline void*
  89. memchr(void* __s, int __c, size_t __n)
  90. { return __builtin_memchr(__s, __c, __n); }
  91. inline char*
  92. strchr(char* __s, int __n)
  93. { return __builtin_strchr(__s, __n); }
  94. inline char*
  95. strpbrk(char* __s1, const char* __s2)
  96. { return __builtin_strpbrk(__s1, __s2); }
  97. inline char*
  98. strrchr(char* __s, int __n)
  99. { return __builtin_strrchr(__s, __n); }
  100. inline char*
  101. strstr(char* __s1, const char* __s2)
  102. { return __builtin_strstr(__s1, __s2); }
  103. #endif
  104. _GLIBCXX_END_NAMESPACE_VERSION
  105. } // namespace
  106. } // extern "C++"
  107. #endif