13e519524SHoward Hinnant// -*- C++ -*-
23e519524SHoward Hinnant//===--------------------------- cstring ----------------------------------===//
33e519524SHoward Hinnant//
45b08a8a4SHoward Hinnant//                     The LLVM Compiler Infrastructure
53e519524SHoward Hinnant//
63e519524SHoward Hinnant// This file is distributed under the University of Illinois Open Source
73e519524SHoward Hinnant// License. See LICENSE.TXT for details.
83e519524SHoward Hinnant//
93e519524SHoward Hinnant//===----------------------------------------------------------------------===//
103e519524SHoward Hinnant
113e519524SHoward Hinnant#ifndef _LIBCPP_CSTRING
123e519524SHoward Hinnant#define _LIBCPP_CSTRING
133e519524SHoward Hinnant
143e519524SHoward Hinnant/*
153e519524SHoward Hinnant    cstring synopsis
163e519524SHoward Hinnant
173e519524SHoward HinnantMacros:
183e519524SHoward Hinnant
193e519524SHoward Hinnant    NULL
203e519524SHoward Hinnant
213e519524SHoward Hinnantnamespace std
223e519524SHoward Hinnant{
233e519524SHoward Hinnant
243e519524SHoward HinnantTypes:
253e519524SHoward Hinnant
263e519524SHoward Hinnant    size_t
273e519524SHoward Hinnant
283e519524SHoward Hinnantvoid* memcpy(void* restrict s1, const void* restrict s2, size_t n);
293e519524SHoward Hinnantvoid* memmove(void* s1, const void* s2, size_t n);
303e519524SHoward Hinnantchar* strcpy (char* restrict s1, const char* restrict s2);
313e519524SHoward Hinnantchar* strncpy(char* restrict s1, const char* restrict s2, size_t n);
323e519524SHoward Hinnantchar* strcat (char* restrict s1, const char* restrict s2);
333e519524SHoward Hinnantchar* strncat(char* restrict s1, const char* restrict s2, size_t n);
343e519524SHoward Hinnantint memcmp(const void* s1, const void* s2, size_t n);
353e519524SHoward Hinnantint strcmp (const char* s1, const char* s2);
363e519524SHoward Hinnantint strncmp(const char* s1, const char* s2, size_t n);
373e519524SHoward Hinnantint strcoll(const char* s1, const char* s2);
383e519524SHoward Hinnantsize_t strxfrm(char* restrict s1, const char* restrict s2, size_t n);
393e519524SHoward Hinnantconst void* memchr(const void* s, int c, size_t n);
403e519524SHoward Hinnant      void* memchr(      void* s, int c, size_t n);
413e519524SHoward Hinnantconst char* strchr(const char* s, int c);
423e519524SHoward Hinnant      char* strchr(      char* s, int c);
433e519524SHoward Hinnantsize_t strcspn(const char* s1, const char* s2);
443e519524SHoward Hinnantconst char* strpbrk(const char* s1, const char* s2);
453e519524SHoward Hinnant      char* strpbrk(      char* s1, const char* s2);
463e519524SHoward Hinnantconst char* strrchr(const char* s, int c);
473e519524SHoward Hinnant      char* strrchr(      char* s, int c);
483e519524SHoward Hinnantsize_t strspn(const char* s1, const char* s2);
493e519524SHoward Hinnantconst char* strstr(const char* s1, const char* s2);
503e519524SHoward Hinnant      char* strstr(      char* s1, const char* s2);
513e519524SHoward Hinnantchar* strtok(char* restrict s1, const char* restrict s2);
523e519524SHoward Hinnantvoid* memset(void* s, int c, size_t n);
533e519524SHoward Hinnantchar* strerror(int errnum);
543e519524SHoward Hinnantsize_t strlen(const char* s);
553e519524SHoward Hinnant
563e519524SHoward Hinnant}  // std
573e519524SHoward Hinnant
583e519524SHoward Hinnant*/
593e519524SHoward Hinnant
603e519524SHoward Hinnant#include <__config>
613e519524SHoward Hinnant#include <string.h>
623e519524SHoward Hinnant
63073458b1SHoward Hinnant#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
643e519524SHoward Hinnant#pragma GCC system_header
65073458b1SHoward Hinnant#endif
663e519524SHoward Hinnant
673e519524SHoward Hinnant_LIBCPP_BEGIN_NAMESPACE_STD
683e519524SHoward Hinnant
693e519524SHoward Hinnantusing ::size_t;
703ca2099fSMarshall Clowusing ::memcpy;
713ca2099fSMarshall Clowusing ::memmove;
723e519524SHoward Hinnantusing ::strcpy;
733e519524SHoward Hinnantusing ::strncpy;
743e519524SHoward Hinnantusing ::strcat;
753e519524SHoward Hinnantusing ::strncat;
763ca2099fSMarshall Clowusing ::memcmp;
773e519524SHoward Hinnantusing ::strcmp;
783ca2099fSMarshall Clowusing ::strncmp;
793e519524SHoward Hinnantusing ::strcoll;
803e519524SHoward Hinnantusing ::strxfrm;
81*25cb3209SRichard Smith
82*25cb3209SRichard Smithusing ::memchr;
83*25cb3209SRichard Smith
84*25cb3209SRichard Smithusing ::strchr;
85*25cb3209SRichard Smith
863e519524SHoward Hinnantusing ::strcspn;
87*25cb3209SRichard Smith
88*25cb3209SRichard Smithusing ::strpbrk;
89*25cb3209SRichard Smith
90*25cb3209SRichard Smithusing ::strrchr;
91*25cb3209SRichard Smith
923e519524SHoward Hinnantusing ::strspn;
93*25cb3209SRichard Smith
94*25cb3209SRichard Smithusing ::strstr;
95*25cb3209SRichard Smith
96*25cb3209SRichard Smith// MSVCRT, GNU libc and its derivates already have the correct prototype in <string.h> #ifdef __cplusplus
97*25cb3209SRichard Smith#if !defined(__GLIBC__) && !defined(_LIBCPP_MSVCRT) && !defined(__sun__) && !defined(_STRING_H_CPLUSPLUS_98_CONFORMANCE_)
98*25cb3209SRichard Smithinline _LIBCPP_INLINE_VISIBILITY       char* strchr(      char* __s, int __c) {return ::strchr(__s, __c);}
99*25cb3209SRichard Smithinline _LIBCPP_INLINE_VISIBILITY       char* strpbrk(      char* __s1, const char* __s2) {return ::strpbrk(__s1, __s2);}
100*25cb3209SRichard Smithinline _LIBCPP_INLINE_VISIBILITY       char* strrchr(      char* __s, int __c) {return ::strrchr(__s, __c);}
101*25cb3209SRichard Smithinline _LIBCPP_INLINE_VISIBILITY       void* memchr(      void* __s, int __c, size_t __n) {return ::memchr(__s, __c, __n);}
102*25cb3209SRichard Smithinline _LIBCPP_INLINE_VISIBILITY       char* strstr(      char* __s1, const char* __s2) {return ::strstr(__s1, __s2);}
103*25cb3209SRichard Smith#endif
104*25cb3209SRichard Smith
105e0cf3b9aSEd Schouten#ifndef _LIBCPP_HAS_NO_THREAD_UNSAFE_C_FUNCTIONS
1063e519524SHoward Hinnantusing ::strtok;
107e0cf3b9aSEd Schouten#endif
1083e519524SHoward Hinnantusing ::memset;
1093e519524SHoward Hinnantusing ::strerror;
1103e519524SHoward Hinnantusing ::strlen;
1113e519524SHoward Hinnant
1123e519524SHoward Hinnant_LIBCPP_END_NAMESPACE_STD
1133e519524SHoward Hinnant
1143e519524SHoward Hinnant#endif  // _LIBCPP_CSTRING
115