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; 70*3ca2099fSMarshall Clowusing ::memcpy; 71*3ca2099fSMarshall Clowusing ::memmove; 723e519524SHoward Hinnantusing ::strcpy; 733e519524SHoward Hinnantusing ::strncpy; 743e519524SHoward Hinnantusing ::strcat; 753e519524SHoward Hinnantusing ::strncat; 76*3ca2099fSMarshall Clowusing ::memcmp; 773e519524SHoward Hinnantusing ::strcmp; 78*3ca2099fSMarshall Clowusing ::strncmp; 793e519524SHoward Hinnantusing ::strcoll; 803e519524SHoward Hinnantusing ::strxfrm; 813e519524SHoward Hinnant 822bcfef5eSHoward Hinnantusing ::memchr; 833e519524SHoward Hinnant 842bcfef5eSHoward Hinnantusing ::strchr; 853e519524SHoward Hinnant 863e519524SHoward Hinnantusing ::strcspn; 873e519524SHoward Hinnant 882bcfef5eSHoward Hinnantusing ::strpbrk; 893e519524SHoward Hinnant 902bcfef5eSHoward Hinnantusing ::strrchr; 913e519524SHoward Hinnant 923e519524SHoward Hinnantusing ::strspn; 933e519524SHoward Hinnant 942bcfef5eSHoward Hinnantusing ::strstr; 95a65a935bSHoward Hinnant 960be8f64cSHoward Hinnant// MSVCRT, GNU libc and its derivates already have the correct prototype in <string.h> #ifdef __cplusplus 970be8f64cSHoward Hinnant#if !defined(__GLIBC__) && !defined(_LIBCPP_MSVCRT) && !defined(__sun__) && !defined(_STRING_H_CPLUSPLUS_98_CONFORMANCE_) 98a65a935bSHoward Hinnantinline _LIBCPP_INLINE_VISIBILITY char* strchr( char* __s, int __c) {return ::strchr(__s, __c);} 99a65a935bSHoward Hinnantinline _LIBCPP_INLINE_VISIBILITY char* strpbrk( char* __s1, const char* __s2) {return ::strpbrk(__s1, __s2);} 100a65a935bSHoward Hinnantinline _LIBCPP_INLINE_VISIBILITY char* strrchr( char* __s, int __c) {return ::strrchr(__s, __c);} 101a65a935bSHoward Hinnantinline _LIBCPP_INLINE_VISIBILITY void* memchr( void* __s, int __c, size_t __n) {return ::memchr(__s, __c, __n);} 1023e519524SHoward Hinnantinline _LIBCPP_INLINE_VISIBILITY char* strstr( char* __s1, const char* __s2) {return ::strstr(__s1, __s2);} 103a65a935bSHoward Hinnant#endif 1043e519524SHoward Hinnant 1053e519524SHoward Hinnantusing ::strtok; 1063e519524SHoward Hinnantusing ::memset; 1073e519524SHoward Hinnantusing ::strerror; 1083e519524SHoward Hinnantusing ::strlen; 1093e519524SHoward Hinnant 1103e519524SHoward Hinnant_LIBCPP_END_NAMESPACE_STD 1113e519524SHoward Hinnant 1123e519524SHoward Hinnant#endif // _LIBCPP_CSTRING 113