1*404b540aSrobert // -*- C++ -*- forwarding header. 2*404b540aSrobert 3*404b540aSrobert // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 4*404b540aSrobert // Free Software Foundation, Inc. 5*404b540aSrobert // 6*404b540aSrobert // This file is part of the GNU ISO C++ Library. This library is free 7*404b540aSrobert // software; you can redistribute it and/or modify it under the 8*404b540aSrobert // terms of the GNU General Public License as published by the 9*404b540aSrobert // Free Software Foundation; either version 2, or (at your option) 10*404b540aSrobert // any later version. 11*404b540aSrobert 12*404b540aSrobert // This library is distributed in the hope that it will be useful, 13*404b540aSrobert // but WITHOUT ANY WARRANTY; without even the implied warranty of 14*404b540aSrobert // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15*404b540aSrobert // GNU General Public License for more details. 16*404b540aSrobert 17*404b540aSrobert // You should have received a copy of the GNU General Public License along 18*404b540aSrobert // with this library; see the file COPYING. If not, write to the Free 19*404b540aSrobert // Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 20*404b540aSrobert // USA. 21*404b540aSrobert 22*404b540aSrobert // As a special exception, you may use this file as part of a free software 23*404b540aSrobert // library without restriction. Specifically, if other files instantiate 24*404b540aSrobert // templates or use macros or inline functions from this file, or you compile 25*404b540aSrobert // this file and link it with other files to produce an executable, this 26*404b540aSrobert // file does not by itself cause the resulting executable to be covered by 27*404b540aSrobert // the GNU General Public License. This exception does not however 28*404b540aSrobert // invalidate any other reasons why the executable file might be covered by 29*404b540aSrobert // the GNU General Public License. 30*404b540aSrobert 31*404b540aSrobert /** @file cstring 32*404b540aSrobert * This is a Standard C++ Library file. You should @c #include this file 33*404b540aSrobert * in your programs, rather than any of the "*.h" implementation files. 34*404b540aSrobert * 35*404b540aSrobert * This is the C++ version of the Standard C Library header @c string.h, 36*404b540aSrobert * and its contents are (mostly) the same as that header, but are all 37*404b540aSrobert * contained in the namespace @c std (except for names which are defined 38*404b540aSrobert * as macros in C). 39*404b540aSrobert */ 40*404b540aSrobert 41*404b540aSrobert // 42*404b540aSrobert // ISO C++ 14882: 20.4.6 C library 43*404b540aSrobert // 44*404b540aSrobert 45*404b540aSrobert #ifndef _GLIBCXX_CSTRING 46*404b540aSrobert #define _GLIBCXX_CSTRING 1 47*404b540aSrobert 48*404b540aSrobert #pragma GCC system_header 49*404b540aSrobert 50*404b540aSrobert #include <bits/c++config.h> 51*404b540aSrobert #include <cstddef> 52*404b540aSrobert #include <string.h> 53*404b540aSrobert 54*404b540aSrobert // Get rid of those macros defined in <string.h> in lieu of real functions. 55*404b540aSrobert #undef memcpy 56*404b540aSrobert #undef memmove 57*404b540aSrobert #undef strcpy 58*404b540aSrobert #undef strncpy 59*404b540aSrobert #undef strcat 60*404b540aSrobert #undef strncat 61*404b540aSrobert #undef memcmp 62*404b540aSrobert #undef strcmp 63*404b540aSrobert #undef strcoll 64*404b540aSrobert #undef strncmp 65*404b540aSrobert #undef strxfrm 66*404b540aSrobert #undef memchr 67*404b540aSrobert #undef strchr 68*404b540aSrobert #undef strcspn 69*404b540aSrobert #undef strpbrk 70*404b540aSrobert #undef strrchr 71*404b540aSrobert #undef strspn 72*404b540aSrobert #undef strstr 73*404b540aSrobert #undef strtok 74*404b540aSrobert #undef memset 75*404b540aSrobert #undef strerror 76*404b540aSrobert #undef strlen 77*404b540aSrobert 78*404b540aSrobert _GLIBCXX_BEGIN_NAMESPACE(std) 79*404b540aSrobert 80*404b540aSrobert using ::memcpy; 81*404b540aSrobert using ::memmove; 82*404b540aSrobert using ::strcpy; 83*404b540aSrobert using ::strncpy; 84*404b540aSrobert using ::strcat; 85*404b540aSrobert using ::strncat; 86*404b540aSrobert using ::memcmp; 87*404b540aSrobert using ::strcmp; 88*404b540aSrobert using ::strcoll; 89*404b540aSrobert using ::strncmp; 90*404b540aSrobert using ::strxfrm; 91*404b540aSrobert using ::strcspn; 92*404b540aSrobert using ::strspn; 93*404b540aSrobert using ::strtok; 94*404b540aSrobert using ::memset; 95*404b540aSrobert using ::strerror; 96*404b540aSrobert using ::strlen; 97*404b540aSrobert 98*404b540aSrobert using ::memchr; 99*404b540aSrobert 100*404b540aSrobert inline void* memchr(void * __p,int __c,size_t __n)101*404b540aSrobert memchr(void* __p, int __c, size_t __n) 102*404b540aSrobert { return memchr(const_cast<const void*>(__p), __c, __n); } 103*404b540aSrobert 104*404b540aSrobert using ::strchr; 105*404b540aSrobert 106*404b540aSrobert inline char* strchr(char * __s1,int __n)107*404b540aSrobert strchr(char* __s1, int __n) 108*404b540aSrobert { return __builtin_strchr(const_cast<const char*>(__s1), __n); } 109*404b540aSrobert 110*404b540aSrobert using ::strpbrk; 111*404b540aSrobert 112*404b540aSrobert inline char* strpbrk(char * __s1,const char * __s2)113*404b540aSrobert strpbrk(char* __s1, const char* __s2) 114*404b540aSrobert { return __builtin_strpbrk(const_cast<const char*>(__s1), __s2); } 115*404b540aSrobert 116*404b540aSrobert using ::strrchr; 117*404b540aSrobert 118*404b540aSrobert inline char* strrchr(char * __s1,int __n)119*404b540aSrobert strrchr(char* __s1, int __n) 120*404b540aSrobert { return __builtin_strrchr(const_cast<const char*>(__s1), __n); } 121*404b540aSrobert 122*404b540aSrobert using ::strstr; 123*404b540aSrobert 124*404b540aSrobert inline char* strstr(char * __s1,const char * __s2)125*404b540aSrobert strstr(char* __s1, const char* __s2) 126*404b540aSrobert { return __builtin_strstr(const_cast<const char*>(__s1), __s2); } 127*404b540aSrobert 128*404b540aSrobert _GLIBCXX_END_NAMESPACE 129*404b540aSrobert 130*404b540aSrobert #endif 131