cstring
上传用户:sichengcw
上传日期:2009-02-17
资源大小:202k
文件大小:2k
源码类别:

STL

开发平台:

Visual C++

  1. // The -*- C++ -*- null-terminated string header.
  2. // This file is part of the GNU ANSI C++ Library.
  3. #ifndef __CSTRING__
  4. #define __CSTRING__
  5. #include <string.h>
  6. #if 0 // Let's not bother with this just yet.
  7. #include <cstddef>
  8. #ifdef __GNUG__
  9. #pragma interface "cstring"
  10. #endif
  11. // The ANSI C prototypes for these functions have a const argument type and
  12. // non-const return type, so we can't use them.
  13. extern "C++" {
  14. extern inline const char *
  15. _G_strchr (const char *s, int c)
  16. {
  17.   return strchr (s, c);
  18. }
  19. extern inline char *
  20. _G_strchr (char *s, int c)
  21. {
  22.   return const_cast<char *> (strchr (s, c));
  23. }
  24. extern inline const char *
  25. _G_strpbrk (const char *s1, const char *s2)
  26. {
  27.   return strpbrk (s1, s2);
  28. }
  29. extern inline char *
  30. _G_strpbrk (char *s1, const char *s2)
  31. {
  32.   return const_cast<char *> (strpbrk (s1, s2));
  33. }
  34. extern inline const char *
  35. _G_strrchr (const char *s, int c)
  36. {
  37.   return strrchr (s, c);
  38. }
  39. extern inline char *
  40. _G_strrchr (char *s, int c)
  41. {
  42.   return const_cast<char *> (strrchr (s, c));
  43. }
  44. extern inline const char *
  45. _G_strstr (const char *s1, const char *s2)
  46. {
  47.   return strstr (s1, s2);
  48. }
  49. extern inline char *
  50. _G_strstr (char *s1, const char *s2)
  51. {
  52.   return const_cast<char *> (strstr (s1, s2));
  53. }
  54. extern inline const void *
  55. _G_memchr (const void *s, int c, size_t n)
  56. {
  57.   return memchr (s, c, n);
  58. }
  59. extern inline void *
  60. _G_memchr (void *s, int c, size_t n)
  61. {
  62.   return const_cast<void *> (memchr (s, c, n));
  63. }
  64. } // extern "C++"
  65. // Lose any vendor macros for these functions.
  66. #undef strchr
  67. #undef strpbrk
  68. #undef strrchr
  69. #undef strstr
  70. #undef memchr
  71. // Ewww, namespace pollution.  Anyone have a better idea?
  72. #define strchr  _G_strchr
  73. #define strpbrk _G_strpbrk
  74. #define strrchr _G_strrchr
  75. #define strstr  _G_strstr
  76. #define memchr  _G_memchr
  77. #endif // 0
  78. #endif // !defined (__CSTRING__)