xref: /llvm-project/clang-tools-extra/clang-tidy/modernize/ReplaceRandomShuffleCheck.h (revision 4718da506091a37ca4863d979bc541e359b79b10)
1a3014987SMads Ravn //===--- ReplaceRandomShuffleCheck.h - clang-tidy----------------*- C++ -*-===//
2a3014987SMads Ravn //
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
6a3014987SMads Ravn //
7a3014987SMads Ravn //===----------------------------------------------------------------------===//
8a3014987SMads Ravn 
9a3014987SMads Ravn #ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MODERNIZE_REPLACE_RANDOM_SHUFFLE_H
10a3014987SMads Ravn #define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MODERNIZE_REPLACE_RANDOM_SHUFFLE_H
11a3014987SMads Ravn 
12478fc5c8SAlexander Kornienko #include "../ClangTidyCheck.h"
13a3014987SMads Ravn #include "../utils/IncludeInserter.h"
14a3014987SMads Ravn 
15*4718da50SCarlos Galvez namespace clang::tidy::modernize {
16a3014987SMads Ravn 
17a3014987SMads Ravn /// std::random_shuffle will be removed as of C++17. This check will find and
18a3014987SMads Ravn /// replace all occurrences of std::random_shuffle with std::shuffle.
19a3014987SMads Ravn ///
20a3014987SMads Ravn /// For the user-facing documentation see:
216e566bc5SRichard /// http://clang.llvm.org/extra/clang-tidy/checks/modernize/replace-random-shuffle.html
22a3014987SMads Ravn class ReplaceRandomShuffleCheck : public ClangTidyCheck {
23a3014987SMads Ravn public:
24a3014987SMads Ravn   ReplaceRandomShuffleCheck(StringRef Name, ClangTidyContext *Context);
25b6c4db99SAlexander Kornienko   void registerPPCallbacks(const SourceManager &SM, Preprocessor *PP,
26b6c4db99SAlexander Kornienko                            Preprocessor *ModuleExpanderPP) override;
isLanguageVersionSupported(const LangOptions & LangOpts)27e40a742aSNathan James   bool isLanguageVersionSupported(const LangOptions &LangOpts) const override {
28e40a742aSNathan James     return LangOpts.CPlusPlus11;
29e40a742aSNathan James   }
30a3014987SMads Ravn   void storeOptions(ClangTidyOptions::OptionMap &Opts) override;
31a3014987SMads Ravn   void registerMatchers(ast_matchers::MatchFinder *Finder) override;
32a3014987SMads Ravn   void check(const ast_matchers::MatchFinder::MatchResult &Result) override;
33a3014987SMads Ravn 
34a3014987SMads Ravn private:
3513c9bbc2SNathan James   utils::IncludeInserter IncludeInserter;
36a3014987SMads Ravn };
37a3014987SMads Ravn 
38*4718da50SCarlos Galvez } // namespace clang::tidy::modernize
39a3014987SMads Ravn 
40a3014987SMads Ravn #endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MODERNIZE_REPLACE_RANDOM_SHUFFLE_H
41