# cstring

Go to the documentation of this file.

    00001 // -*- C++ -*- forwarding header.
    00002
    00003 // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
    00004 // Free Software Foundation, Inc.
    00005 //
    00006 // This file is part of the GNU ISO C++ Library.  This library is free
    00007 // software; you can redistribute it and/or modify it under the
    00008 // terms of the GNU General Public License as published by the
    00009 // Free Software Foundation; either version 2, or (at your option)
    00010 // any later version.
    00011
    00012 // This library is distributed in the hope that it will be useful,
    00013 // but WITHOUT ANY WARRANTY; without even the implied warranty of
    00014 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    00015 // GNU General Public License for more details.
    00016
    00017 // You should have received a copy of the GNU General Public License along
    00018 // with this library; see the file COPYING.  If not, write to the Free
    00019 // Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
    00020 // USA.
    00021
    00022 // As a special exception, you may use this file as part of a free software
    00023 // library without restriction.  Specifically, if other files instantiate
    00024 // templates or use macros or inline functions from this file, or you compile
    00025 // this file and link it with other files to produce an executable, this
    00026 // file does not by itself cause the resulting executable to be covered by
    00027 // the GNU General Public License.  This exception does not however
    00028 // invalidate any other reasons why the executable file might be covered by
    00029 // the GNU General Public License.
    00030
    00031 /** @file cstring
    00032  *  This is a Standard C++ Library file.  You should @c #include this file
    00033  *  in your programs, rather than any of the "*.h" implementation files.
    00034  *
    00035  *  This is the C++ version of the Standard C Library header @c string.h,
    00036  *  and its contents are (mostly) the same as that header, but are all
    00037  *  contained in the namespace @c std (except for names which are defined
    00038  *  as macros in C).
    00039  */
    00040
    00041 //
    00042 // ISO C++ 14882: 20.4.6  C library
    00043 //
    00044
    00045 #ifndef _GLIBCXX_CSTRING
    00046 #define _GLIBCXX_CSTRING 1
    00047
    00048 #pragma GCC system_header
    00049
    00050 #include <bits/c++config.h>
    00051 #include <cstddef>
    00052 #include <string.h>
    00053
    00054 // Get rid of those macros defined in <string.h> in lieu of real functions.
    00055 #undef memcpy
    00056 #undef memmove
    00057 #undef strcpy
    00058 #undef strncpy
    00059 #undef strcat
    00060 #undef strncat
    00061 #undef memcmp
    00062 #undef strcmp
    00063 #undef strcoll
    00064 #undef strncmp
    00065 #undef strxfrm
    00066 #undef memchr
    00067 #undef strchr
    00068 #undef strcspn
    00069 #undef strpbrk
    00070 #undef strrchr
    00071 #undef strspn
    00072 #undef strstr
    00073 #undef strtok
    00074 #undef memset
    00075 #undef strerror
    00076 #undef strlen
    00077
    00078 _GLIBCXX_BEGIN_NAMESPACE(std)
    00079
    00080   using ::memcpy;
    00081   using ::memmove;
    00082   using ::strcpy;
    00083   using ::strncpy;
    00084   using ::strcat;
    00085   using ::strncat;
    00086   using ::memcmp;
    00087   using ::strcmp;
    00088   using ::strcoll;
    00089   using ::strncmp;
    00090   using ::strxfrm;
    00091   using ::strcspn;
    00092   using ::strspn;
    00093   using ::strtok;
    00094   using ::memset;
    00095   using ::strerror;
    00096   using ::strlen;
    00097
    00098   using ::memchr;
    00099
    00100   inline void*
    00101   memchr(void* __p, int __c, size_t __n)
    00102   { return memchr(const_cast<const void*>(__p), __c, __n); }
    00103
    00104   using ::strchr;
    00105
    00106   inline char*
    00107   strchr(char* __s1, int __n)
    00108   { return __builtin_strchr(const_cast<const char*>(__s1), __n); }
    00109
    00110   using ::strpbrk;
    00111
    00112   inline char*
    00113   strpbrk(char* __s1, const char* __s2)
    00114   { return __builtin_strpbrk(const_cast<const char*>(__s1), __s2); }
    00115
    00116   using ::strrchr;
    00117
    00118   inline char*
    00119   strrchr(char* __s1, int __n)
    00120   { return __builtin_strrchr(const_cast<const char*>(__s1), __n); }
    00121
    00122   using ::strstr;
    00123
    00124   inline char*
    00125   strstr(char* __s1, const char* __s2)
    00126   { return __builtin_strstr(const_cast<const char*>(__s1), __s2); }
    00127
    00128 _GLIBCXX_END_NAMESPACE
    00129
    00130 #endif