151e1523dSSamuel Benzaquen //===--- FasterStringFindCheck.h - clang-tidy--------------------*- C++ -*-===// 251e1523dSSamuel Benzaquen // 32946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 42946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information. 52946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 651e1523dSSamuel Benzaquen // 751e1523dSSamuel Benzaquen //===----------------------------------------------------------------------===// 851e1523dSSamuel Benzaquen 951e1523dSSamuel Benzaquen #ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_PERFORMANCE_FASTER_STRING_FIND_H 1051e1523dSSamuel Benzaquen #define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_PERFORMANCE_FASTER_STRING_FIND_H 1151e1523dSSamuel Benzaquen 12478fc5c8SAlexander Kornienko #include "../ClangTidyCheck.h" 1351e1523dSSamuel Benzaquen 1451e1523dSSamuel Benzaquen #include <string> 1551e1523dSSamuel Benzaquen #include <vector> 1651e1523dSSamuel Benzaquen 17*4718da50SCarlos Galvez namespace clang::tidy::performance { 1851e1523dSSamuel Benzaquen 1951e1523dSSamuel Benzaquen /// Optimize calls to std::string::find() and friends when the needle passed is 2051e1523dSSamuel Benzaquen /// a single character string literal. 2151e1523dSSamuel Benzaquen /// The character literal overload is more efficient. 2251e1523dSSamuel Benzaquen /// 2351e1523dSSamuel Benzaquen /// For the user-facing documentation see: 246e566bc5SRichard /// http://clang.llvm.org/extra/clang-tidy/checks/performance/faster-string-find.html 2551e1523dSSamuel Benzaquen class FasterStringFindCheck : public ClangTidyCheck { 2651e1523dSSamuel Benzaquen public: 2751e1523dSSamuel Benzaquen FasterStringFindCheck(StringRef Name, ClangTidyContext *Context); isLanguageVersionSupported(const LangOptions & LangOpts)28bfd99be0SNathan James bool isLanguageVersionSupported(const LangOptions &LangOpts) const override{ 29bfd99be0SNathan James return LangOpts.CPlusPlus; 30bfd99be0SNathan James } 3151e1523dSSamuel Benzaquen void registerMatchers(ast_matchers::MatchFinder *Finder) override; 3251e1523dSSamuel Benzaquen void check(const ast_matchers::MatchFinder::MatchResult &Result) override; 3351e1523dSSamuel Benzaquen void storeOptions(ClangTidyOptions::OptionMap &Opts) override; 3451e1523dSSamuel Benzaquen 3551e1523dSSamuel Benzaquen private: 3612cb5405SNathan James const std::vector<StringRef> StringLikeClasses; 3751e1523dSSamuel Benzaquen }; 3851e1523dSSamuel Benzaquen 39*4718da50SCarlos Galvez } // namespace clang::tidy::performance 4051e1523dSSamuel Benzaquen 4151e1523dSSamuel Benzaquen #endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_PERFORMANCE_FASTER_STRING_FIND_H 42