diff options
Diffstat (limited to 'lib/Rewrite/Rewriter.cpp')
-rw-r--r-- | lib/Rewrite/Rewriter.cpp | 77 |
1 files changed, 0 insertions, 77 deletions
diff --git a/lib/Rewrite/Rewriter.cpp b/lib/Rewrite/Rewriter.cpp index e3c27eaad1..1c1903cc40 100644 --- a/lib/Rewrite/Rewriter.cpp +++ b/lib/Rewrite/Rewriter.cpp @@ -19,83 +19,6 @@ #include <sstream> using namespace clang; - -/// getMappedOffset - Given an offset into the original SourceBuffer that this -/// RewriteBuffer is based on, map it into the offset space of the -/// RewriteBuffer. -unsigned RewriteBuffer::getMappedOffset(unsigned OrigOffset, - bool AfterInserts) const { - unsigned ResultOffset = 0; -#if !defined(USE_VECTOR) - ResultOffset += Deltas.getDeltaAt(OrigOffset+AfterInserts); -#else - unsigned DeltaIdx = 0; - - // Move past any deltas that are relevant. - // FIXME: binary search. - for (; DeltaIdx != Deltas.size() && - Deltas[DeltaIdx].FileLoc < OrigOffset; ++DeltaIdx) - ResultOffset += Deltas[DeltaIdx].Delta; - - if (AfterInserts) - for (; DeltaIdx != Deltas.size() && - OrigOffset == Deltas[DeltaIdx].FileLoc; ++DeltaIdx) - ResultOffset += Deltas[DeltaIdx].Delta; -#endif - - // printf("Map: %d/%d -> %d\n", OrigOffset, AfterInserts, ResultOffset); - return ResultOffset+OrigOffset; -} - -/// AddDelta - When a change is made that shifts around the text buffer, this -/// method is used to record that info. -void RewriteBuffer::AddDelta(unsigned OrigOffset, int Change) { - // printf("AddDelta: %d/%d\n", OrigOffset, Change); -#if !defined(USE_VECTOR) - return Deltas.AddDelta(OrigOffset, Change); -#else - assert(Change != 0 && "Not changing anything"); - unsigned DeltaIdx = 0; - - // Skip over any unrelated deltas. - for (; DeltaIdx != Deltas.size() && - Deltas[DeltaIdx].FileLoc < OrigOffset; ++DeltaIdx) - ; - - // If there is no a delta for this offset, insert a new delta record. - if (DeltaIdx == Deltas.size() || OrigOffset != Deltas[DeltaIdx].FileLoc) { - // If this is a removal, check to see if this can be folded into - // a delta at the end of the deletion. For example, if we have: - // ABCXDEF (X inserted after C) and delete C, we want to end up with no - // delta because X basically replaced C. - if (Change < 0 && DeltaIdx != Deltas.size() && - OrigOffset-Change == Deltas[DeltaIdx].FileLoc) { - // Adjust the start of the delta to be the start of the deleted region. - Deltas[DeltaIdx].FileLoc += Change; - Deltas[DeltaIdx].Delta += Change; - - // If the delta becomes a noop, remove it. - if (Deltas[DeltaIdx].Delta == 0) - Deltas.erase(Deltas.begin()+DeltaIdx); - return; - } - - // Otherwise, create an entry and return. - Deltas.insert(Deltas.begin()+DeltaIdx, - SourceDelta::get(OrigOffset, Change)); - return; - } - - // Otherwise, we found a delta record at this offset, adjust it. - Deltas[DeltaIdx].Delta += Change; - - // If it is now dead, remove it. - if (Deltas[DeltaIdx].Delta == 0) - Deltas.erase(Deltas.begin()+DeltaIdx); -#endif -} - - void RewriteBuffer::RemoveText(unsigned OrigOffset, unsigned Size) { // Nothing to remove, exit early. if (Size == 0) return; |