1 /** 2 * D header file for C99. 3 * 4 * $(C_HEADER_DESCRIPTION pubs.opengroup.org/onlinepubs/009695399/basedefs/_string.h.html, _string.h) 5 * 6 * Copyright: Copyright Sean Kelly 2005 - 2009. 7 * License: Distributed under the 8 * $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0). 9 * (See accompanying file LICENSE) 10 * Authors: Sean Kelly 11 * Source: $(DRUNTIMESRC core/stdc/_string.d) 12 * Standards: ISO/IEC 9899:1999 (E) 13 */ 14 15 module core.stdc..string; 16 17 version (OSX) 18 version = Darwin; 19 else version (iOS) 20 version = Darwin; 21 else version (TVOS) 22 version = Darwin; 23 else version (WatchOS) 24 version = Darwin; 25 26 // Those libs don't expose the mandated C interface 27 version (CRuntime_Glibc) 28 version = ReturnStrerrorR; 29 else version (CRuntime_UClibc) 30 version = ReturnStrerrorR; 31 32 extern (C): 33 nothrow: 34 @nogc: 35 36 /// 37 inout(void)* memchr(return scope inout void* s, int c, size_t n) pure; 38 /// 39 int memcmp(scope const void* s1, scope const void* s2, size_t n) pure; 40 /// 41 void* memcpy(return scope void* s1, scope const void* s2, size_t n) pure; 42 version (Windows) 43 { 44 /// 45 int memicmp(scope const char* s1, scope const char* s2, size_t n); 46 } 47 /// 48 void* memmove(return scope void* s1, scope const void* s2, size_t n) pure; 49 /// 50 void* memset(return scope void* s, int c, size_t n) pure; 51 52 /// 53 char* strcat(return scope char* s1, scope const char* s2) pure; 54 /// 55 inout(char)* strchr(return scope inout(char)* s, int c) pure; 56 /// 57 int strcmp(scope const char* s1, scope const char* s2) pure; 58 /// 59 int strcoll(scope const char* s1, scope const char* s2); 60 /// 61 char* strcpy(return scope char* s1, scope const char* s2) pure; 62 /// 63 size_t strcspn(scope const char* s1, scope const char* s2) pure; 64 /// 65 char* strdup(scope const char *s); 66 /// 67 char* strerror(int errnum); 68 // This `strerror_r` definition is not following the POSIX standard 69 version (ReturnStrerrorR) 70 { 71 /// 72 const(char)* strerror_r(int errnum, return scope char* buf, size_t buflen); 73 } 74 // This one is 75 else 76 { 77 int strerror_r(int errnum, scope char* buf, size_t buflen); 78 } 79 /// 80 size_t strlen(scope const char* s) pure; 81 /// 82 char* strncat(return scope char* s1, scope const char* s2, size_t n) pure; 83 /// 84 int strncmp(scope const char* s1, scope const char* s2, size_t n) pure; 85 /// 86 char* strncpy(return scope char* s1, scope const char* s2, size_t n) pure; 87 /// 88 inout(char)* strpbrk(return scope inout(char)* s1, scope const char* s2) pure; 89 /// 90 inout(char)* strrchr(return scope inout(char)* s, int c) pure; 91 /// 92 size_t strspn(scope const char* s1, scope const char* s2) pure; 93 /// 94 inout(char)* strstr(return scope inout(char)* s1, scope const char* s2) pure; 95 /// 96 char* strtok(return scope char* s1, scope const char* s2); 97 /// 98 size_t strxfrm(scope char* s1, scope const char* s2, size_t n);