52int main(
int argc,
const char **argv) {
53 auto ExpectedParser = tooling::CommonOptionsParser::create(
55 if (!ExpectedParser) {
56 llvm::errs() << ExpectedParser.takeError();
60 tooling::CommonOptionsParser &OP = ExpectedParser.get();
62 auto Files = OP.getSourcePathList();
63 tooling::RefactoringTool Tool(OP.getCompilations(), Files);
66 Tool.getReplacements());
68 auto Factory = tooling::newFrontendActionFactory(&Action);
71 return Tool.runAndSave(Factory.get());
73 int ExitCode = Tool.run(Factory.get());
74 LangOptions DefaultLangOptions;
75 DiagnosticOptions DiagOpts;
76 TextDiagnosticPrinter DiagnosticPrinter(errs(), DiagOpts);
77 DiagnosticsEngine Diagnostics(DiagnosticIDs::create(), DiagOpts,
78 &DiagnosticPrinter,
false);
80 auto &FileMgr = Tool.getFiles();
81 SourceManager Sources(Diagnostics, FileMgr);
82 Rewriter Rewrite(Sources, DefaultLangOptions);
83 Tool.applyAllReplacements(Rewrite);
85 for (
const auto &File : Files) {
86 auto Entry = llvm::cantFail(FileMgr.getFileRef(File));
87 const auto ID = Sources.getOrCreateFileID(
Entry, SrcMgr::C_User);
88 Rewrite.getEditBuffer(ID).write(outs());
static cl::list< std::string > FieldsOrder("fields-order", cl::CommaSeparated, cl::OneOrMore, cl::desc("The desired fields order."), cl::cat(ClangReorderFieldsCategory))
static cl::opt< std::string > RecordName("record-name", cl::Required, cl::desc("The name of the struct/class."), cl::cat(ClangReorderFieldsCategory))