1    	// -*- C++ -*- forwarding header.
2    	
3    	// Copyright (C) 1997-2013 Free Software Foundation, Inc.
4    	//
5    	// This file is part of the GNU ISO C++ Library.  This library is free
6    	// software; you can redistribute it and/or modify it under the
7    	// terms of the GNU General Public License as published by the
8    	// Free Software Foundation; either version 3, or (at your option)
9    	// any later version.
10   	
11   	// This library is distributed in the hope that it will be useful,
12   	// but WITHOUT ANY WARRANTY; without even the implied warranty of
13   	// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14   	// GNU General Public License for more details.
15   	
16   	// Under Section 7 of GPL version 3, you are granted additional
17   	// permissions described in the GCC Runtime Library Exception, version
18   	// 3.1, as published by the Free Software Foundation.
19   	
20   	// You should have received a copy of the GNU General Public License and
21   	// a copy of the GCC Runtime Library Exception along with this program;
22   	// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
23   	// <http://www.gnu.org/licenses/>.
24   	
25   	/** @file cstring
26   	 *  This is a Standard C++ Library file.  You should @c \#include this file
27   	 *  in your programs, rather than any of the @a *.h implementation files.
28   	 *
29   	 *  This is the C++ version of the Standard C Library header @c string.h,
30   	 *  and its contents are (mostly) the same as that header, but are all
31   	 *  contained in the namespace @c std (except for names which are defined
32   	 *  as macros in C).
33   	 */
34   	
35   	//
36   	// ISO C++ 14882: 20.4.6  C library
37   	//
38   	
39   	#pragma GCC system_header
40   	
41   	#include <bits/c++config.h>
42   	#include <string.h>
43   	
44   	#ifndef _GLIBCXX_CSTRING
45   	#define _GLIBCXX_CSTRING 1
46   	
47   	// Get rid of those macros defined in <string.h> in lieu of real functions.
48   	#undef memchr
49   	#undef memcmp
50   	#undef memcpy
51   	#undef memmove
52   	#undef memset
53   	#undef strcat
54   	#undef strchr
55   	#undef strcmp
56   	#undef strcoll
57   	#undef strcpy
58   	#undef strcspn
59   	#undef strerror
60   	#undef strlen
61   	#undef strncat
62   	#undef strncmp
63   	#undef strncpy
64   	#undef strpbrk
65   	#undef strrchr
66   	#undef strspn
67   	#undef strstr
68   	#undef strtok
69   	#undef strxfrm
70   	
71   	namespace std _GLIBCXX_VISIBILITY(default)
72   	{
73   	_GLIBCXX_BEGIN_NAMESPACE_VERSION
74   	
75   	  using ::memchr;
76   	  using ::memcmp;
77   	  using ::memcpy;
78   	  using ::memmove;
79   	  using ::memset;
80   	  using ::strcat;
81   	  using ::strcmp;
82   	  using ::strcoll;
83   	  using ::strcpy;
84   	  using ::strcspn;
85   	  using ::strerror;
86   	  using ::strlen;
87   	  using ::strncat;
88   	  using ::strncmp;
89   	  using ::strncpy;
90   	  using ::strspn;
91   	  using ::strtok;
92   	  using ::strxfrm;
93   	  using ::strchr;
94   	  using ::strpbrk;
95   	  using ::strrchr;
96   	  using ::strstr;
97   	
98   	#ifndef __CORRECT_ISO_CPP_STRING_H_PROTO
99   	  inline void*
100  	  memchr(void* __s, int __c, size_t __n)
101  	  { return __builtin_memchr(__s, __c, __n); }
102  	
103  	  inline char*
104  	  strchr(char* __s, int __n)
105  	  { return __builtin_strchr(__s, __n); }
106  	
107  	  inline char*
108  	  strpbrk(char* __s1, const char* __s2)
109  	  { return __builtin_strpbrk(__s1, __s2); }
110  	
111  	  inline char*
112  	  strrchr(char* __s, int __n)
113  	  { return __builtin_strrchr(__s, __n); }
114  	
115  	  inline char*
116  	  strstr(char* __s1, const char* __s2)
117  	  { return __builtin_strstr(__s1, __s2); }
118  	#endif
119  	
120  	_GLIBCXX_END_NAMESPACE_VERSION
121  	} // namespace
122  	
123  	#endif
124