mikecrowe created this revision. mikecrowe added a reviewer: njames93. Herald added a subscriber: xazax.hun. Herald added a project: All. mikecrowe requested review of this revision. Herald added a project: clang-tools-extra. Herald added a subscriber: cfe-commits.
In preparation for using the implementation of basic_string and basic_string_view from redundant-string-cstr.cpp in other checks, let's extract it to a header. https://reviews.llvm.org/D144216 Files: clang-tools-extra/test/clang-tidy/checkers/Inputs/Headers/string clang-tools-extra/test/clang-tidy/checkers/readability/redundant-string-cstr.cpp
Index: clang-tools-extra/test/clang-tidy/checkers/readability/redundant-string-cstr.cpp =================================================================== --- clang-tools-extra/test/clang-tidy/checkers/readability/redundant-string-cstr.cpp +++ clang-tools-extra/test/clang-tidy/checkers/readability/redundant-string-cstr.cpp @@ -1,71 +1,5 @@ -// RUN: %check_clang_tidy %s readability-redundant-string-cstr %t - -typedef unsigned __INT16_TYPE__ char16; -typedef unsigned __INT32_TYPE__ char32; -typedef __SIZE_TYPE__ size; - -namespace std { -template <typename T> -class allocator {}; -template <typename T> -class char_traits {}; -template <typename C, typename T, typename A> -struct basic_string { - typedef basic_string<C, T, A> _Type; - basic_string(); - basic_string(const C *p, const A &a = A()); - - ~basic_string(); - - const C *c_str() const; - const C *data() const; - - _Type& append(const C *s); - _Type& append(const C *s, size n); - _Type& assign(const C *s); - _Type& assign(const C *s, size n); - - int compare(const _Type&) const; - int compare(const C* s) const; - int compare(size pos, size len, const _Type&) const; - int compare(size pos, size len, const C* s) const; - - size find(const _Type& str, size pos = 0) const; - size find(const C* s, size pos = 0) const; - size find(const C* s, size pos, size n) const; - - _Type& insert(size pos, const _Type& str); - _Type& insert(size pos, const C* s); - _Type& insert(size pos, const C* s, size n); - - _Type& operator+=(const _Type& str); - _Type& operator+=(const C* s); - _Type& operator=(const _Type& str); - _Type& operator=(const C* s); -}; - -typedef basic_string<char, std::char_traits<char>, std::allocator<char>> string; -typedef basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t>> wstring; -typedef basic_string<char16, std::char_traits<char16>, std::allocator<char16>> u16string; -typedef basic_string<char32, std::char_traits<char32>, std::allocator<char32>> u32string; - -template <typename C, typename T> -struct basic_string_view { - basic_string_view(const C* s); -}; -typedef basic_string_view<char, std::char_traits<char>> string_view; -typedef basic_string_view<wchar_t, std::char_traits<wchar_t>> wstring_view; -typedef basic_string_view<char16, std::char_traits<char16>> u16string_view; -typedef basic_string_view<char32, std::char_traits<char32>> u32string_view; -} - -std::string operator+(const std::string&, const std::string&); -std::string operator+(const std::string&, const char*); -std::string operator+(const char*, const std::string&); - -bool operator==(const std::string&, const std::string&); -bool operator==(const std::string&, const char*); -bool operator==(const char*, const std::string&); +// RUN: %check_clang_tidy %s readability-redundant-string-cstr %t -- -- -isystem %clang_tidy_headers +#include <string> namespace llvm { struct StringRef { Index: clang-tools-extra/test/clang-tidy/checkers/Inputs/Headers/string =================================================================== --- /dev/null +++ clang-tools-extra/test/clang-tidy/checkers/Inputs/Headers/string @@ -0,0 +1,71 @@ +#ifndef _STRING_ +#define _STRING_ + +typedef unsigned __INT16_TYPE__ char16; +typedef unsigned __INT32_TYPE__ char32; +typedef __SIZE_TYPE__ size; + +namespace std { +template <typename T> +class allocator {}; +template <typename T> +class char_traits {}; +template <typename C, typename T, typename A> +struct basic_string { + typedef basic_string<C, T, A> _Type; + basic_string(); + basic_string(const C *p, const A &a = A()); + + ~basic_string(); + + const C *c_str() const; + const C *data() const; + + _Type& append(const C *s); + _Type& append(const C *s, size n); + _Type& assign(const C *s); + _Type& assign(const C *s, size n); + + int compare(const _Type&) const; + int compare(const C* s) const; + int compare(size pos, size len, const _Type&) const; + int compare(size pos, size len, const C* s) const; + + size find(const _Type& str, size pos = 0) const; + size find(const C* s, size pos = 0) const; + size find(const C* s, size pos, size n) const; + + _Type& insert(size pos, const _Type& str); + _Type& insert(size pos, const C* s); + _Type& insert(size pos, const C* s, size n); + + _Type& operator+=(const _Type& str); + _Type& operator+=(const C* s); + _Type& operator=(const _Type& str); + _Type& operator=(const C* s); +}; + +typedef basic_string<char, std::char_traits<char>, std::allocator<char>> string; +typedef basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t>> wstring; +typedef basic_string<char16, std::char_traits<char16>, std::allocator<char16>> u16string; +typedef basic_string<char32, std::char_traits<char32>, std::allocator<char32>> u32string; + +template <typename C, typename T> +struct basic_string_view { + basic_string_view(const C* s); +}; +typedef basic_string_view<char, std::char_traits<char>> string_view; +typedef basic_string_view<wchar_t, std::char_traits<wchar_t>> wstring_view; +typedef basic_string_view<char16, std::char_traits<char16>> u16string_view; +typedef basic_string_view<char32, std::char_traits<char32>> u32string_view; +} + +std::string operator+(const std::string&, const std::string&); +std::string operator+(const std::string&, const char*); +std::string operator+(const char*, const std::string&); + +bool operator==(const std::string&, const std::string&); +bool operator==(const std::string&, const char*); +bool operator==(const char*, const std::string&); + +#endif // _STRING_
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits