| // Copyright 2013 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| // |
| // This file defines utility functions for working with strings. |
| |
| #ifndef BASE_STRINGS_STRING_UTIL_H_ |
| #define BASE_STRINGS_STRING_UTIL_H_ |
| |
| #include <ctype.h> |
| #include <stdarg.h> // va_list |
| #include <stddef.h> |
| #include <stdint.h> |
| |
| #include <string> |
| #include <vector> |
| |
| #include "base/strings/string16.h" |
| #include "base/strings/string_piece.h" // For implicit conversions. |
| #include "build/build_config.h" |
| |
| #define BASE_EXPORT |
| |
| namespace url { |
| namespace base { |
| |
| // ASCII-specific tolower. The standard library's tolower is locale sensitive, |
| // so we don't want to use it here. |
| inline char ToLowerASCII(char c) { |
| return (c >= 'A' && c <= 'Z') ? (c + ('a' - 'A')) : c; |
| } |
| inline char16 ToLowerASCII(char16 c) { |
| return (c >= 'A' && c <= 'Z') ? (c + ('a' - 'A')) : c; |
| } |
| |
| // Converts the given string to it's ASCII-lowercase equivalent. |
| BASE_EXPORT std::string ToLowerASCII(StringPiece str); |
| BASE_EXPORT string16 ToLowerASCII(StringPiece16 str); |
| |
| BASE_EXPORT bool IsStringASCII(const StringPiece& str); |
| BASE_EXPORT bool IsStringASCII(const StringPiece16& str); |
| BASE_EXPORT bool IsStringASCII(const string16& str); |
| #if defined(WCHAR_T_IS_UTF32) |
| BASE_EXPORT bool IsStringASCII(const std::wstring& str); |
| #endif |
| |
| // Compare the lower-case form of the given string against the given |
| // previously-lower-cased ASCII string (typically a constant). |
| BASE_EXPORT bool LowerCaseEqualsASCII(StringPiece str, |
| StringPiece lowecase_ascii); |
| BASE_EXPORT bool LowerCaseEqualsASCII(StringPiece16 str, |
| StringPiece lowecase_ascii); |
| |
| template <typename Char> |
| inline bool IsAsciiAlpha(Char c) { |
| return (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z'); |
| } |
| template <typename Char> |
| inline bool IsAsciiLower(Char c) { |
| return c >= 'a' && c <= 'z'; |
| } |
| |
| } // namespace base |
| } // namespace url |
| |
| #endif // BASE_STRINGS_STRING_UTIL_H_ |