This is the mail archive of the
libstdc++@gcc.gnu.org
mailing list for the libstdc++ project.
Patch to fix const-correctness of c_std string functions
- To: gcc-patches at gcc dot gnu dot org,libstdc++ at gcc dot gnu dot org
- Subject: Patch to fix const-correctness of c_std string functions
- From: Stephen M. Webb <stephen at bregmasoft dot com>
- Date: Wed, 28 Mar 2001 21:18:08 -0500
- Organization: Bregmasoft
- Reply-To: stephen at bregmasoft dot com
The following is a patch to fix the const-correctness of some of the c_std
null-terminated C string (and wide string) functions as per the C++ standard.
Index: libstdc++-v3/include/c_std/bits/std_cstring.h
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/include/c_std/bits/std_cstring.h,v
retrieving revision 1.5
diff -c -3 -p -r1.5 std_cstring.h
*** std_cstring.h 2001/02/05 22:27:40 1.5
--- std_cstring.h 2001/03/29 02:25:25
*************** namespace std
*** 79,91 ****
extern "C" int strcoll(const char*, const char*);
extern "C" int strncmp(const char*, const char*, size_t);
extern "C" size_t strxfrm(char*, const char*, size_t);
! extern "C" void* memchr(const void*, int, size_t);
! extern "C" char* strchr(const char*, int);
extern "C" size_t strcspn(const char*, const char*);
! extern "C" char* strpbrk(const char*, const char*);
! extern "C" char* strrchr(const char*, int);
extern "C" size_t strspn(const char*, const char*);
! extern "C" char* strstr(const char*, const char*);
extern "C" char* strtok(char*, const char*);
extern "C" void* memset(void*, int, size_t);
extern "C" char* strerror(int);
--- 79,116 ----
extern "C" int strcoll(const char*, const char*);
extern "C" int strncmp(const char*, const char*, size_t);
extern "C" size_t strxfrm(char*, const char*, size_t);
! extern "C" const void* memchr(const void*, int, size_t);
! inline void*
! memchr(void* __p, int __c, size_t __n)
! {
! return const_cast<void*>(memchr(const_cast<const void*>(__p), __c, __n));
! }
! extern "C" const char* strchr(const char*, int);
! inline char*
! strchr(char* __s1, int __n)
! {
! return const_cast<char*>(strchr(const_cast<const char*>(__s1), __n));
! }
extern "C" size_t strcspn(const char*, const char*);
! extern "C" const char* strpbrk(const char*, const char*);
! inline char*
! strpbrk(char* __s1, const char* __s2)
! {
! return const_cast<char*>(strpbrk(const_cast<const char*>(__s1), __s2));
! }
! extern "C" const char* strrchr(const char*, int);
! inline char*
! strrchr(char* __s1, int __n)
! {
! return const_cast<char*>(strrchr(const_cast<const char*>(__s1), __n));
! }
extern "C" size_t strspn(const char*, const char*);
! extern "C" const char* strstr(const char*, const char*);
! inline char*
! strstr(char* __s1, const char* __s2)
! {
! return const_cast<char*>(strstr(const_cast<const char*>(__s1), __s2));
! }
extern "C" char* strtok(char*, const char*);
extern "C" void* memset(void*, int, size_t);
extern "C" char* strerror(int);
Index: libstdc++-v3/include/c_std/bits/std_cwchar.h
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/include/c_std/bits/std_cwchar.h,v
retrieving revision 1.5
diff -c -3 -p -r1.5 std_cwchar.h
*** std_cwchar.h 2001/02/05 22:27:40 1.5
--- std_cwchar.h 2001/03/29 02:25:25
*************** namespace std
*** 157,171 ****
extern "C" int wcscoll(const wchar_t*, const wchar_t*);
extern "C" int wcsncmp(const wchar_t*, const wchar_t*, size_t);
extern "C" size_t wcsxfrm(wchar_t*, const wchar_t*, size_t);
! extern "C" wchar_t* wcschr(const wchar_t*, wchar_t);
extern "C" size_t wcscspn(const wchar_t*, const wchar_t*);
extern "C" size_t wcslen(const wchar_t*);
! extern "C" wchar_t* wcspbrk(const wchar_t*, const wchar_t*);
! extern "C" wchar_t* wcsrchr(const wchar_t*, wchar_t);
extern "C" size_t wcsspn(const wchar_t*, const wchar_t*);
! extern "C" wchar_t* wcsstr(const wchar_t*, const wchar_t*);
extern "C" wchar_t* wcstok(wchar_t*, const wchar_t*, wchar_t**);
! extern "C" wchar_t* wmemchr(const wchar_t*, wchar_t, size_t);
extern "C" int wmemcmp(const wchar_t*, const wchar_t*, size_t);
//extern "C" int wmemcmp(wchar_t*, const wchar_t*, size_t);
extern "C" wchar_t* wmemcpy(wchar_t*, const wchar_t*, size_t);
--- 157,196 ----
extern "C" int wcscoll(const wchar_t*, const wchar_t*);
extern "C" int wcsncmp(const wchar_t*, const wchar_t*, size_t);
extern "C" size_t wcsxfrm(wchar_t*, const wchar_t*, size_t);
! extern "C" const wchar_t* wcschr(const wchar_t*, wchar_t);
! inline wchar_t*
! wcschr(wchar_t* __p, wchar_t __c)
! {
! return const_cast<wchar_t*>(wcschr(const_cast<const wchar_t*>(__p), __c));
! }
extern "C" size_t wcscspn(const wchar_t*, const wchar_t*);
extern "C" size_t wcslen(const wchar_t*);
! extern "C" const wchar_t* wcspbrk(const wchar_t*, const wchar_t*);
! inline wchar_t*
! wcspbrk(wchar_t* __s1, wchar_t* __s2)
! {
! return const_cast<wchar_t*>(wcspbrk(const_cast<const wchar_t*>(__s1), __s2));
! }
! extern "C" const wchar_t* wcsrchr(const wchar_t*, wchar_t);
! inline wchar_t*
! wcsrchr(wchar_t* __p, wchar_t __c)
! {
! return const_cast<wchar_t*>(wcsrchr(const_cast<const wchar_t*>(__p), __c));
! }
extern "C" size_t wcsspn(const wchar_t*, const wchar_t*);
! extern "C" const wchar_t* wcsstr(const wchar_t*, const wchar_t*);
! inline wchar_t*
! wcsstr(wchar_t* __s1, wchar_t* __s2)
! {
! return const_cast<wchar_t*>(wcsstr(const_cast<const wchar_t*>(__s1), __s2));
! }
extern "C" wchar_t* wcstok(wchar_t*, const wchar_t*, wchar_t**);
! extern "C" const wchar_t* wmemchr(const wchar_t*, wchar_t, size_t);
! inline wchar_t*
! wmemchr(wchar_t* __p, wchar_t __c, size_t __n)
! {
! return const_cast<wchar_t*>(wmemchr(const_cast<const wchar_t*>(__p), __c, __n));
! }
extern "C" int wmemcmp(const wchar_t*, const wchar_t*, size_t);
//extern "C" int wmemcmp(wchar_t*, const wchar_t*, size_t);
extern "C" wchar_t* wmemcpy(wchar_t*, const wchar_t*, size_t);
--
Stephen M. Webb
Principal Consultant, Bregmasoft
stephen at bregmasoft dot com