1 //===-- tools/extra/clang-reorder-fields/ReorderFieldsAction.h -*- 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 /// \file
10 /// This file contains the declarations of the ReorderFieldsAction class and
11 /// the FieldPosition struct.
12 ///
13 //===----------------------------------------------------------------------===//
14 
15 #ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_REORDER_FIELDS_ACTION_H
16 #define LLVM_CLANG_TOOLS_EXTRA_CLANG_REORDER_FIELDS_ACTION_H
17 
18 #include "clang/Tooling/Refactoring.h"
19 
20 namespace clang {
21 class ASTConsumer;
22 
23 namespace reorder_fields {
24 
25 class ReorderFieldsAction {
26   llvm::StringRef RecordName;
27   llvm::ArrayRef<std::string> DesiredFieldsOrder;
28   std::map<std::string, tooling::Replacements> &Replacements;
29 
30 public:
ReorderFieldsAction(llvm::StringRef RecordName,llvm::ArrayRef<std::string> DesiredFieldsOrder,std::map<std::string,tooling::Replacements> & Replacements)31   ReorderFieldsAction(
32       llvm::StringRef RecordName,
33       llvm::ArrayRef<std::string> DesiredFieldsOrder,
34       std::map<std::string, tooling::Replacements> &Replacements)
35       : RecordName(RecordName), DesiredFieldsOrder(DesiredFieldsOrder),
36         Replacements(Replacements) {}
37 
38   ReorderFieldsAction(const ReorderFieldsAction &) = delete;
39   ReorderFieldsAction &operator=(const ReorderFieldsAction &) = delete;
40 
41   std::unique_ptr<ASTConsumer> newASTConsumer();
42 };
43 } // namespace reorder_fields
44 } // namespace clang
45 
46 #endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_REORDER_FIELDS_ACTION_H
47