9 #ifndef LLVM_CLANG_EDIT_EDITEDSOURCE_H
10 #define LLVM_CLANG_EDIT_EDITEDSOURCE_H
16 #include "llvm/ADT/DenseMap.h"
17 #include "llvm/ADT/SmallVector.h"
18 #include "llvm/ADT/StringRef.h"
19 #include "llvm/Support/Allocator.h"
27 class PPConditionalDirectiveRecord;
42 unsigned RemoveLen = 0;
47 using FileEditsTy = std::map<FileOffset, FileEdit>;
49 FileEditsTy FileEdits;
58 bool operator==(
const MacroArgUse &Other)
const {
59 return std::tie(
Identifier, ImmediateExpansionLoc, UseLoc) ==
60 std::tie(Other.Identifier, Other.ImmediateExpansionLoc,
65 llvm::DenseMap<SourceLocation, SmallVector<MacroArgUse, 2>> ExpansionToArgMap;
67 CurrCommitMacroArgExps;
70 llvm::BumpPtrAllocator StrAlloc;
75 : SourceMgr(
SM), LangOpts(LangOpts), PPRec(PPRec), IdentTable(LangOpts) {}
91 StringRef
copyString(StringRef str) {
return str.copy(StrAlloc); }
96 bool beforePreviousInsertions);
99 bool beforePreviousInsertions);
104 FileEditsTy::iterator getActionForOffset(
FileOffset Offs);
107 MacroArgUse &ArgUse);
109 void startingCommit();
110 void finishedCommit();
117 #endif // LLVM_CLANG_EDIT_EDITEDSOURCE_H