1 //===--- ReplaceDisallowCopyAndAssignMacroCheck.h - clang-tidy --*- C++ -*-===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 #ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MODERNIZE_REPLACEDISALLOWCOPYANDASSIGNMACROCHECK_H 10 #define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MODERNIZE_REPLACEDISALLOWCOPYANDASSIGNMACROCHECK_H 11 12 #include "../ClangTidyCheck.h" 13 14 namespace clang::tidy::modernize { 15 16 /// This check finds macro expansions of ``DISALLOW_COPY_AND_ASSIGN(Type)`` and 17 /// replaces them with a deleted copy constructor and a deleted assignment 18 /// operator. 19 /// 20 /// Before: 21 /// ~~~{.cpp} 22 /// class Foo { 23 /// private: 24 /// DISALLOW_COPY_AND_ASSIGN(Foo); 25 /// }; 26 /// ~~~ 27 /// 28 /// After: 29 /// ~~~{.cpp} 30 /// class Foo { 31 /// private: 32 /// Foo(const Foo &) = delete; 33 /// const Foo &operator=(const Foo &) = delete; 34 /// }; 35 /// ~~~ 36 /// 37 /// For the user-facing documentation see: 38 /// http://clang.llvm.org/extra/clang-tidy/checks/modernize/replace-disallow-copy-and-assign-macro.html 39 class ReplaceDisallowCopyAndAssignMacroCheck : public ClangTidyCheck { 40 public: 41 ReplaceDisallowCopyAndAssignMacroCheck(StringRef Name, 42 ClangTidyContext *Context); isLanguageVersionSupported(const LangOptions & LangOpts)43 bool isLanguageVersionSupported(const LangOptions &LangOpts) const override { 44 return LangOpts.CPlusPlus11; 45 } 46 void registerPPCallbacks(const SourceManager &SM, Preprocessor *PP, 47 Preprocessor *ModuleExpanderPP) override; 48 void storeOptions(ClangTidyOptions::OptionMap &Opts) override; 49 getMacroName()50 const StringRef &getMacroName() const { return MacroName; } 51 52 private: 53 const StringRef MacroName; 54 }; 55 56 } // namespace clang::tidy::modernize 57 58 #endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MODERNIZE_REPLACEDISALLOWCOPYANDASSIGNMACROCHECK_H 59