diff options
author | Chris Lattner <sabre@nondot.org> | 2007-11-08 20:51:02 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2007-11-08 20:51:02 +0000 |
commit | fab21b6d735a8f96e7dda595fecf72946d745871 (patch) | |
tree | ed322f98ae2a54e30671b3c0c255d84533ad8044 /Rewrite/Rewriter.cpp | |
parent | 93a9ab4bdc607b12fdcf6aa5cf56950dd45ae0f5 (diff) |
add a getAtOffset() member to simplify some code.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43905 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'Rewrite/Rewriter.cpp')
-rw-r--r-- | Rewrite/Rewriter.cpp | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/Rewrite/Rewriter.cpp b/Rewrite/Rewriter.cpp index 3a007f3e71..e8a469fe1e 100644 --- a/Rewrite/Rewriter.cpp +++ b/Rewrite/Rewriter.cpp @@ -91,7 +91,8 @@ void RewriteBuffer::RemoveText(unsigned OrigOffset, unsigned Size) { assert(RealOffset+Size < Buffer.size() && "Invalid location"); // Remove the dead characters. - Buffer.erase(Buffer.begin()+RealOffset, Buffer.begin()+RealOffset+Size); + RewriteRope::iterator I = Buffer.getAtOffset(RealOffset); + Buffer.erase(I, I+Size); // Add a delta so that future changes are offset correctly. AddDelta(OrigOffset, -Size); @@ -106,7 +107,7 @@ void RewriteBuffer::InsertText(unsigned OrigOffset, assert(RealOffset <= Buffer.size() && "Invalid location"); // Insert the new characters. - Buffer.insert(Buffer.begin()+RealOffset, StrData, StrData+StrLen); + Buffer.insert(Buffer.getAtOffset(RealOffset), StrData, StrData+StrLen); // Add a delta so that future changes are offset correctly. AddDelta(OrigOffset, StrLen); @@ -120,14 +121,16 @@ void RewriteBuffer::ReplaceText(unsigned OrigOffset, unsigned OrigLength, unsigned RealOffset = getMappedOffset(OrigOffset, true); assert(RealOffset+OrigLength <= Buffer.size() && "Invalid location"); +#if 0 Buffer.erase(Buffer.begin()+RealOffset, Buffer.begin()+RealOffset+OrigLength); Buffer.insert(Buffer.begin()+RealOffset, NewStr, NewStr+NewLength); AddDelta(OrigOffset, NewLength-OrigLength); return; +#endif // Overwrite the common piece. unsigned CommonLength = std::min(OrigLength, NewLength); - std::copy(NewStr, NewStr+CommonLength, Buffer.begin()+RealOffset); + std::copy(NewStr, NewStr+CommonLength, Buffer.getAtOffset(RealOffset)); // If replacing without shifting around, just overwrite the text. if (OrigLength == NewLength) @@ -135,12 +138,12 @@ void RewriteBuffer::ReplaceText(unsigned OrigOffset, unsigned OrigLength, // If inserting more than existed before, this is like an insertion. if (NewLength > OrigLength) { - Buffer.insert(Buffer.begin()+RealOffset+OrigLength, + Buffer.insert(Buffer.getAtOffset(RealOffset+OrigLength), NewStr+OrigLength, NewStr+NewLength); } else { - // If insertion less than existed before, this is like a removal. - Buffer.erase(Buffer.begin()+RealOffset+NewLength, - Buffer.begin()+RealOffset+OrigLength); + // If inserting less than existed before, this is like a removal. + RewriteRope::iterator I = Buffer.getAtOffset(RealOffset+NewLength); + Buffer.erase(I, I+(OrigLength-NewLength)); } AddDelta(OrigOffset, NewLength-OrigLength); } |