Changeset View
Changeset View
Standalone View
Standalone View
lib/Tooling/ReplacementsFormat.cpp
- This file was added.
//===--- ReplacementFormat.cpp - Format code changed by replacemnts -------===// | |||||
// | |||||
// The LLVM Compiler Infrastructure | |||||
// | |||||
// This file is distributed under the University of Illinois Open Source | |||||
// License. See LICENSE.TXT for details. | |||||
// | |||||
//===----------------------------------------------------------------------===// | |||||
// | |||||
// \file | |||||
// \brief This file implements functions that reformat code changed by | |||||
// replacements. | |||||
// | |||||
//===----------------------------------------------------------------------===// | |||||
#include "clang/Tooling/ReplacementsFormat.h" | |||||
#include "clang/Basic/SourceManager.h" | |||||
namespace clang { | |||||
namespace tooling { | |||||
bool formatAndApplyAllReplacements(const Replacements &Replaces, | |||||
Rewriter &Rewrite, | |||||
const format::FormatStyle &Style) { | |||||
SourceManager &SM = Rewrite.getSourceMgr(); | |||||
FileManager &Files = SM.getFileManager(); | |||||
FileToReplacementsMap FileToReplaces = | |||||
groupReplacementsByFile(Replaces, Files); | |||||
bool Result = true; | |||||
for (auto &FileAndReplaces : FileToReplaces) { | |||||
const FileEntry *Entry = FileAndReplaces.first; | |||||
assert(Entry != nullptr && "Invalid file entry!"); | |||||
auto &CurReplaces = FileAndReplaces.second; | |||||
FileID ID = SM.getOrCreateFileID(Entry, SrcMgr::C_User); | |||||
StringRef Code = SM.getBufferData(ID); | |||||
Replacements NewReplacements = | |||||
format::formatReplacements(Code, CurReplaces, Style); | |||||
Result = applyAllReplacements(NewReplacements, Rewrite) && Result; | |||||
} | |||||
return Result; | |||||
} | |||||
} // namespace tooling | |||||
} // namespace clang |