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