| Index: base/string_util.h
|
| ===================================================================
|
| --- base/string_util.h (revision 95578)
|
| +++ base/string_util.h (working copy)
|
| @@ -14,7 +14,7 @@
|
| #include <string>
|
| #include <vector>
|
|
|
| -#include "base/base_api.h"
|
| +#include "base/base_export.h"
|
| #include "base/basictypes.h"
|
| #include "base/compiler_specific.h"
|
| #include "base/string16.h"
|
| @@ -93,8 +93,8 @@
|
| // long as |dst_size| is not 0. Returns the length of |src| in characters.
|
| // If the return value is >= dst_size, then the output was truncated.
|
| // NOTE: All sizes are in number of characters, NOT in bytes.
|
| -BASE_API size_t strlcpy(char* dst, const char* src, size_t dst_size);
|
| -BASE_API size_t wcslcpy(wchar_t* dst, const wchar_t* src, size_t dst_size);
|
| +BASE_EXPORT size_t strlcpy(char* dst, const char* src, size_t dst_size);
|
| +BASE_EXPORT size_t wcslcpy(wchar_t* dst, const wchar_t* src, size_t dst_size);
|
|
|
| // Scan a wprintf format string to determine whether it's portable across a
|
| // variety of systems. This function only checks that the conversion
|
| @@ -117,7 +117,7 @@
|
| // working with wprintf.
|
| //
|
| // This function is intended to be called from base::vswprintf.
|
| -BASE_API bool IsWprintfFormatPortable(const wchar_t* format);
|
| +BASE_EXPORT bool IsWprintfFormatPortable(const wchar_t* format);
|
|
|
| // ASCII-specific tolower. The standard library's tolower is locale sensitive,
|
| // so we don't want to use it here.
|
| @@ -168,43 +168,43 @@
|
| // have an empty string to use (e.g. in an error case). These should not be
|
| // used as initializers, function arguments, or return values for functions
|
| // which return by value or outparam.
|
| -BASE_API const std::string& EmptyString();
|
| -BASE_API const std::wstring& EmptyWString();
|
| -BASE_API const string16& EmptyString16();
|
| +BASE_EXPORT const std::string& EmptyString();
|
| +BASE_EXPORT const std::wstring& EmptyWString();
|
| +BASE_EXPORT const string16& EmptyString16();
|
|
|
| -BASE_API extern const wchar_t kWhitespaceWide[];
|
| -BASE_API extern const char16 kWhitespaceUTF16[];
|
| -BASE_API extern const char kWhitespaceASCII[];
|
| +BASE_EXPORT extern const wchar_t kWhitespaceWide[];
|
| +BASE_EXPORT extern const char16 kWhitespaceUTF16[];
|
| +BASE_EXPORT extern const char kWhitespaceASCII[];
|
|
|
| -BASE_API extern const char kUtf8ByteOrderMark[];
|
| +BASE_EXPORT extern const char kUtf8ByteOrderMark[];
|
|
|
| // Removes characters in remove_chars from anywhere in input. Returns true if
|
| // any characters were removed.
|
| // NOTE: Safe to use the same variable for both input and output.
|
| -BASE_API bool RemoveChars(const string16& input,
|
| - const char16 remove_chars[],
|
| - string16* output);
|
| -BASE_API bool RemoveChars(const std::string& input,
|
| - const char remove_chars[],
|
| - std::string* output);
|
| +BASE_EXPORT bool RemoveChars(const string16& input,
|
| + const char16 remove_chars[],
|
| + string16* output);
|
| +BASE_EXPORT bool RemoveChars(const std::string& input,
|
| + const char remove_chars[],
|
| + std::string* output);
|
|
|
| // Removes characters in trim_chars from the beginning and end of input.
|
| // NOTE: Safe to use the same variable for both input and output.
|
| -BASE_API bool TrimString(const std::wstring& input,
|
| - const wchar_t trim_chars[],
|
| - std::wstring* output);
|
| -BASE_API bool TrimString(const string16& input,
|
| - const char16 trim_chars[],
|
| - string16* output);
|
| -BASE_API bool TrimString(const std::string& input,
|
| - const char trim_chars[],
|
| - std::string* output);
|
| +BASE_EXPORT bool TrimString(const std::wstring& input,
|
| + const wchar_t trim_chars[],
|
| + std::wstring* output);
|
| +BASE_EXPORT bool TrimString(const string16& input,
|
| + const char16 trim_chars[],
|
| + string16* output);
|
| +BASE_EXPORT bool TrimString(const std::string& input,
|
| + const char trim_chars[],
|
| + std::string* output);
|
|
|
| // Truncates a string to the nearest UTF-8 character that will leave
|
| // the string less than or equal to the specified byte size.
|
| -BASE_API void TruncateUTF8ToByteSize(const std::string& input,
|
| - const size_t byte_size,
|
| - std::string* output);
|
| +BASE_EXPORT void TruncateUTF8ToByteSize(const std::string& input,
|
| + const size_t byte_size,
|
| + std::string* output);
|
|
|
| // Trims any whitespace from either end of the input string. Returns where
|
| // whitespace was found.
|
| @@ -219,18 +219,18 @@
|
| TRIM_TRAILING = 1 << 1,
|
| TRIM_ALL = TRIM_LEADING | TRIM_TRAILING,
|
| };
|
| -BASE_API TrimPositions TrimWhitespace(const string16& input,
|
| - TrimPositions positions,
|
| - string16* output);
|
| -BASE_API TrimPositions TrimWhitespaceASCII(const std::string& input,
|
| - TrimPositions positions,
|
| - std::string* output);
|
| +BASE_EXPORT TrimPositions TrimWhitespace(const string16& input,
|
| + TrimPositions positions,
|
| + string16* output);
|
| +BASE_EXPORT TrimPositions TrimWhitespaceASCII(const std::string& input,
|
| + TrimPositions positions,
|
| + std::string* output);
|
|
|
| // Deprecated. This function is only for backward compatibility and calls
|
| // TrimWhitespaceASCII().
|
| -BASE_API TrimPositions TrimWhitespace(const std::string& input,
|
| - TrimPositions positions,
|
| - std::string* output);
|
| +BASE_EXPORT TrimPositions TrimWhitespace(const std::string& input,
|
| + TrimPositions positions,
|
| + std::string* output);
|
|
|
| // Searches for CR or LF characters. Removes all contiguous whitespace
|
| // strings that contain them. This is useful when trying to deal with text
|
| @@ -240,35 +240,38 @@
|
| // (2) If |trim_sequences_with_line_breaks| is true, any other whitespace
|
| // sequences containing a CR or LF are trimmed.
|
| // (3) All other whitespace sequences are converted to single spaces.
|
| -BASE_API std::wstring CollapseWhitespace(const std::wstring& text,
|
| - bool trim_sequences_with_line_breaks);
|
| -BASE_API string16 CollapseWhitespace(const string16& text,
|
| - bool trim_sequences_with_line_breaks);
|
| -BASE_API std::string CollapseWhitespaceASCII(
|
| - const std::string& text, bool trim_sequences_with_line_breaks);
|
| +BASE_EXPORT std::wstring CollapseWhitespace(
|
| + const std::wstring& text,
|
| + bool trim_sequences_with_line_breaks);
|
| +BASE_EXPORT string16 CollapseWhitespace(
|
| + const string16& text,
|
| + bool trim_sequences_with_line_breaks);
|
| +BASE_EXPORT std::string CollapseWhitespaceASCII(
|
| + const std::string& text,
|
| + bool trim_sequences_with_line_breaks);
|
|
|
| // Returns true if the passed string is empty or contains only white-space
|
| // characters.
|
| -BASE_API bool ContainsOnlyWhitespaceASCII(const std::string& str);
|
| -BASE_API bool ContainsOnlyWhitespace(const string16& str);
|
| +BASE_EXPORT bool ContainsOnlyWhitespaceASCII(const std::string& str);
|
| +BASE_EXPORT bool ContainsOnlyWhitespace(const string16& str);
|
|
|
| // Returns true if |input| is empty or contains only characters found in
|
| // |characters|.
|
| -BASE_API bool ContainsOnlyChars(const std::wstring& input,
|
| - const std::wstring& characters);
|
| -BASE_API bool ContainsOnlyChars(const string16& input,
|
| - const string16& characters);
|
| -BASE_API bool ContainsOnlyChars(const std::string& input,
|
| - const std::string& characters);
|
| +BASE_EXPORT bool ContainsOnlyChars(const std::wstring& input,
|
| + const std::wstring& characters);
|
| +BASE_EXPORT bool ContainsOnlyChars(const string16& input,
|
| + const string16& characters);
|
| +BASE_EXPORT bool ContainsOnlyChars(const std::string& input,
|
| + const std::string& characters);
|
|
|
| // Converts to 7-bit ASCII by truncating. The result must be known to be ASCII
|
| // beforehand.
|
| -BASE_API std::string WideToASCII(const std::wstring& wide);
|
| -BASE_API std::string UTF16ToASCII(const string16& utf16);
|
| +BASE_EXPORT std::string WideToASCII(const std::wstring& wide);
|
| +BASE_EXPORT std::string UTF16ToASCII(const string16& utf16);
|
|
|
| // Converts the given wide string to the corresponding Latin1. This will fail
|
| // (return false) if any characters are more than 255.
|
| -BASE_API bool WideToLatin1(const std::wstring& wide, std::string* latin1);
|
| +BASE_EXPORT bool WideToLatin1(const std::wstring& wide, std::string* latin1);
|
|
|
| // Returns true if the specified string matches the criteria. How can a wide
|
| // string be 8-bit or UTF8? It contains only characters that are < 256 (in the
|
| @@ -281,10 +284,10 @@
|
| // to have the maximum 'discriminating' power from other encodings. If
|
| // there's a use case for just checking the structural validity, we have to
|
| // add a new function for that.
|
| -BASE_API bool IsStringUTF8(const std::string& str);
|
| -BASE_API bool IsStringASCII(const std::wstring& str);
|
| -BASE_API bool IsStringASCII(const base::StringPiece& str);
|
| -BASE_API bool IsStringASCII(const string16& str);
|
| +BASE_EXPORT bool IsStringUTF8(const std::string& str);
|
| +BASE_EXPORT bool IsStringASCII(const std::wstring& str);
|
| +BASE_EXPORT bool IsStringASCII(const base::StringPiece& str);
|
| +BASE_EXPORT bool IsStringASCII(const string16& str);
|
|
|
| // Converts the elements of the given string. This version uses a pointer to
|
| // clearly differentiate it from the non-pointer variant.
|
| @@ -318,55 +321,55 @@
|
| // string. This is useful for doing checking if an input string matches some
|
| // token, and it is optimized to avoid intermediate string copies. This API is
|
| // borrowed from the equivalent APIs in Mozilla.
|
| -BASE_API bool LowerCaseEqualsASCII(const std::string& a, const char* b);
|
| -BASE_API bool LowerCaseEqualsASCII(const std::wstring& a, const char* b);
|
| -BASE_API bool LowerCaseEqualsASCII(const string16& a, const char* b);
|
| +BASE_EXPORT bool LowerCaseEqualsASCII(const std::string& a, const char* b);
|
| +BASE_EXPORT bool LowerCaseEqualsASCII(const std::wstring& a, const char* b);
|
| +BASE_EXPORT bool LowerCaseEqualsASCII(const string16& a, const char* b);
|
|
|
| // Same thing, but with string iterators instead.
|
| -BASE_API bool LowerCaseEqualsASCII(std::string::const_iterator a_begin,
|
| - std::string::const_iterator a_end,
|
| - const char* b);
|
| -BASE_API bool LowerCaseEqualsASCII(std::wstring::const_iterator a_begin,
|
| - std::wstring::const_iterator a_end,
|
| - const char* b);
|
| -BASE_API bool LowerCaseEqualsASCII(string16::const_iterator a_begin,
|
| - string16::const_iterator a_end,
|
| - const char* b);
|
| -BASE_API bool LowerCaseEqualsASCII(const char* a_begin,
|
| - const char* a_end,
|
| - const char* b);
|
| -BASE_API bool LowerCaseEqualsASCII(const wchar_t* a_begin,
|
| - const wchar_t* a_end,
|
| - const char* b);
|
| -BASE_API bool LowerCaseEqualsASCII(const char16* a_begin,
|
| - const char16* a_end,
|
| - const char* b);
|
| +BASE_EXPORT bool LowerCaseEqualsASCII(std::string::const_iterator a_begin,
|
| + std::string::const_iterator a_end,
|
| + const char* b);
|
| +BASE_EXPORT bool LowerCaseEqualsASCII(std::wstring::const_iterator a_begin,
|
| + std::wstring::const_iterator a_end,
|
| + const char* b);
|
| +BASE_EXPORT bool LowerCaseEqualsASCII(string16::const_iterator a_begin,
|
| + string16::const_iterator a_end,
|
| + const char* b);
|
| +BASE_EXPORT bool LowerCaseEqualsASCII(const char* a_begin,
|
| + const char* a_end,
|
| + const char* b);
|
| +BASE_EXPORT bool LowerCaseEqualsASCII(const wchar_t* a_begin,
|
| + const wchar_t* a_end,
|
| + const char* b);
|
| +BASE_EXPORT bool LowerCaseEqualsASCII(const char16* a_begin,
|
| + const char16* a_end,
|
| + const char* b);
|
|
|
| // Performs a case-sensitive string compare. The behavior is undefined if both
|
| // strings are not ASCII.
|
| -BASE_API bool EqualsASCII(const string16& a, const base::StringPiece& b);
|
| +BASE_EXPORT bool EqualsASCII(const string16& a, const base::StringPiece& b);
|
|
|
| // Returns true if str starts with search, or false otherwise.
|
| -BASE_API bool StartsWithASCII(const std::string& str,
|
| - const std::string& search,
|
| - bool case_sensitive);
|
| -BASE_API bool StartsWith(const std::wstring& str,
|
| - const std::wstring& search,
|
| - bool case_sensitive);
|
| -BASE_API bool StartsWith(const string16& str,
|
| - const string16& search,
|
| - bool case_sensitive);
|
| +BASE_EXPORT bool StartsWithASCII(const std::string& str,
|
| + const std::string& search,
|
| + bool case_sensitive);
|
| +BASE_EXPORT bool StartsWith(const std::wstring& str,
|
| + const std::wstring& search,
|
| + bool case_sensitive);
|
| +BASE_EXPORT bool StartsWith(const string16& str,
|
| + const string16& search,
|
| + bool case_sensitive);
|
|
|
| // Returns true if str ends with search, or false otherwise.
|
| -BASE_API bool EndsWith(const std::string& str,
|
| - const std::string& search,
|
| - bool case_sensitive);
|
| -BASE_API bool EndsWith(const std::wstring& str,
|
| - const std::wstring& search,
|
| - bool case_sensitive);
|
| -BASE_API bool EndsWith(const string16& str,
|
| - const string16& search,
|
| - bool case_sensitive);
|
| +BASE_EXPORT bool EndsWith(const std::string& str,
|
| + const std::string& search,
|
| + bool case_sensitive);
|
| +BASE_EXPORT bool EndsWith(const std::wstring& str,
|
| + const std::wstring& search,
|
| + bool case_sensitive);
|
| +BASE_EXPORT bool EndsWith(const string16& str,
|
| + const string16& search,
|
| + bool case_sensitive);
|
|
|
|
|
| // Determines the type of ASCII character, independent of locale (the C
|
| @@ -412,15 +415,16 @@
|
| // appropriate for use in any UI; use of FormatBytes and friends in ui/base is
|
| // highly recommended instead. TODO(avi): Figure out how to get callers to use
|
| // FormatBytes instead; remove this.
|
| -BASE_API string16 FormatBytesUnlocalized(int64 bytes);
|
| +BASE_EXPORT string16 FormatBytesUnlocalized(int64 bytes);
|
|
|
| // Starting at |start_offset| (usually 0), replace the first instance of
|
| // |find_this| with |replace_with|.
|
| -BASE_API void ReplaceFirstSubstringAfterOffset(string16* str,
|
| - string16::size_type start_offset,
|
| - const string16& find_this,
|
| - const string16& replace_with);
|
| -BASE_API void ReplaceFirstSubstringAfterOffset(
|
| +BASE_EXPORT void ReplaceFirstSubstringAfterOffset(
|
| + string16* str,
|
| + string16::size_type start_offset,
|
| + const string16& find_this,
|
| + const string16& replace_with);
|
| +BASE_EXPORT void ReplaceFirstSubstringAfterOffset(
|
| std::string* str,
|
| std::string::size_type start_offset,
|
| const std::string& find_this,
|
| @@ -432,14 +436,16 @@
|
| // This does entire substrings; use std::replace in <algorithm> for single
|
| // characters, for example:
|
| // std::replace(str.begin(), str.end(), 'a', 'b');
|
| -BASE_API void ReplaceSubstringsAfterOffset(string16* str,
|
| - string16::size_type start_offset,
|
| - const string16& find_this,
|
| - const string16& replace_with);
|
| -BASE_API void ReplaceSubstringsAfterOffset(std::string* str,
|
| - std::string::size_type start_offset,
|
| - const std::string& find_this,
|
| - const std::string& replace_with);
|
| +BASE_EXPORT void ReplaceSubstringsAfterOffset(
|
| + string16* str,
|
| + string16::size_type start_offset,
|
| + const string16& find_this,
|
| + const string16& replace_with);
|
| +BASE_EXPORT void ReplaceSubstringsAfterOffset(
|
| + std::string* str,
|
| + std::string::size_type start_offset,
|
| + const std::string& find_this,
|
| + const std::string& replace_with);
|
|
|
| // This is mpcomplete's pattern for saving a string copy when dealing with
|
| // a function that writes results into a wchar_t[] and wanting the result to
|
| @@ -469,49 +475,51 @@
|
| // Splits a string into its fields delimited by any of the characters in
|
| // |delimiters|. Each field is added to the |tokens| vector. Returns the
|
| // number of tokens found.
|
| -BASE_API size_t Tokenize(const std::wstring& str,
|
| - const std::wstring& delimiters,
|
| - std::vector<std::wstring>* tokens);
|
| -BASE_API size_t Tokenize(const string16& str,
|
| - const string16& delimiters,
|
| - std::vector<string16>* tokens);
|
| -BASE_API size_t Tokenize(const std::string& str,
|
| - const std::string& delimiters,
|
| - std::vector<std::string>* tokens);
|
| -BASE_API size_t Tokenize(const base::StringPiece& str,
|
| - const base::StringPiece& delimiters,
|
| - std::vector<base::StringPiece>* tokens);
|
| +BASE_EXPORT size_t Tokenize(const std::wstring& str,
|
| + const std::wstring& delimiters,
|
| + std::vector<std::wstring>* tokens);
|
| +BASE_EXPORT size_t Tokenize(const string16& str,
|
| + const string16& delimiters,
|
| + std::vector<string16>* tokens);
|
| +BASE_EXPORT size_t Tokenize(const std::string& str,
|
| + const std::string& delimiters,
|
| + std::vector<std::string>* tokens);
|
| +BASE_EXPORT size_t Tokenize(const base::StringPiece& str,
|
| + const base::StringPiece& delimiters,
|
| + std::vector<base::StringPiece>* tokens);
|
|
|
| // Does the opposite of SplitString().
|
| -BASE_API string16 JoinString(const std::vector<string16>& parts, char16 s);
|
| -BASE_API std::string JoinString(const std::vector<std::string>& parts, char s);
|
| +BASE_EXPORT string16 JoinString(const std::vector<string16>& parts, char16 s);
|
| +BASE_EXPORT std::string JoinString(
|
| + const std::vector<std::string>& parts, char s);
|
|
|
| // Replace $1-$2-$3..$9 in the format string with |a|-|b|-|c|..|i| respectively.
|
| // Additionally, any number of consecutive '$' characters is replaced by that
|
| // number less one. Eg $$->$, $$$->$$, etc. The offsets parameter here can be
|
| // NULL. This only allows you to use up to nine replacements.
|
| -BASE_API string16 ReplaceStringPlaceholders(const string16& format_string,
|
| - const std::vector<string16>& subst,
|
| - std::vector<size_t>* offsets);
|
| +BASE_EXPORT string16 ReplaceStringPlaceholders(
|
| + const string16& format_string,
|
| + const std::vector<string16>& subst,
|
| + std::vector<size_t>* offsets);
|
|
|
| -BASE_API std::string ReplaceStringPlaceholders(
|
| +BASE_EXPORT std::string ReplaceStringPlaceholders(
|
| const base::StringPiece& format_string,
|
| const std::vector<std::string>& subst,
|
| std::vector<size_t>* offsets);
|
|
|
| // Single-string shortcut for ReplaceStringHolders. |offset| may be NULL.
|
| -BASE_API string16 ReplaceStringPlaceholders(const string16& format_string,
|
| - const string16& a,
|
| - size_t* offset);
|
| +BASE_EXPORT string16 ReplaceStringPlaceholders(const string16& format_string,
|
| + const string16& a,
|
| + size_t* offset);
|
|
|
| // Returns true if the string passed in matches the pattern. The pattern
|
| // string can contain wildcards like * and ?
|
| // The backslash character (\) is an escape character for * and ?
|
| // We limit the patterns to having a max of 16 * or ? characters.
|
| // ? matches 0 or 1 character, while * matches 0 or more characters.
|
| -BASE_API bool MatchPattern(const base::StringPiece& string,
|
| - const base::StringPiece& pattern);
|
| -BASE_API bool MatchPattern(const string16& string, const string16& pattern);
|
| +BASE_EXPORT bool MatchPattern(const base::StringPiece& string,
|
| + const base::StringPiece& pattern);
|
| +BASE_EXPORT bool MatchPattern(const string16& string, const string16& pattern);
|
|
|
| // Hack to convert any char-like type to its unsigned counterpart.
|
| // For example, it will convert char, signed char and unsigned char to unsigned
|
|
|