ascii_string.h 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. // ASCII-strings processing tools
  2. //
  3. // Platform: ISO C++ 98/11/17
  4. // $Id$
  5. //
  6. // (c) __vic 2017
  7. #ifndef __VIC_ASCII_STRING_H
  8. #define __VIC_ASCII_STRING_H
  9. #include<__vic/defs.h>
  10. #include<string>
  11. #if __has_include(<string_view>)
  12. #include<string_view>
  13. #endif
  14. namespace __vic { namespace ascii {
  15. //----------------------------------------------------------------------------
  16. char *toupper(char * );
  17. char *tolower(char * );
  18. std::string &toupper(std::string & );
  19. std::string &tolower(std::string & );
  20. //----------------------------------------------------------------------------
  21. //----------------------------------------------------------------------------
  22. bool equal_icase(const char * , const char * );
  23. bool equal_icase(const char * , size_t , const char * , size_t );
  24. #if __cpp_lib_string_view // C++17
  25. //----------------------------------------------------------------------------
  26. inline bool equal_icase(std::string_view s1, std::string_view s2)
  27. {
  28. return equal_icase(s1.data(), s1.length(), s2.data(), s2.length());
  29. }
  30. //----------------------------------------------------------------------------
  31. #else // until C++17
  32. //----------------------------------------------------------------------------
  33. inline bool equal_icase(const std::string &s1, const std::string &s2)
  34. {
  35. return equal_icase(s1.data(), s1.length(), s2.data(), s2.length());
  36. }
  37. inline bool equal_icase(const std::string &s1, const char *s2)
  38. {
  39. return equal_icase(s1.c_str(), s2);
  40. }
  41. inline bool equal_icase(const char *s1, const std::string &s2)
  42. {
  43. return equal_icase(s1, s2.c_str());
  44. }
  45. //----------------------------------------------------------------------------
  46. #endif
  47. }} // namespace
  48. #endif // header guard