diff options
author | Chris Lattner <sabre@nondot.org> | 2007-10-13 00:21:23 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2007-10-13 00:21:23 +0000 |
commit | 03b071043593590b01fdf61df3e29c0ae7c067d3 (patch) | |
tree | f9f657bbe0bad39c39c8378a6ae51d9aafb2c986 | |
parent | 88d0ed0c589c564ac090219156359136badeb901 (diff) |
With this I can now insert stuff before tabs, woo.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42942 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | Rewrite/Rewriter.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/Rewrite/Rewriter.cpp b/Rewrite/Rewriter.cpp index 94fbe6e211..41c5c6ff3f 100644 --- a/Rewrite/Rewriter.cpp +++ b/Rewrite/Rewriter.cpp @@ -96,8 +96,17 @@ void RewriteBuffer::RemoveText(unsigned OrigOffset, unsigned Size) { void RewriteBuffer::InsertText(unsigned OrigOffset, const char *StrData, unsigned StrLen) { + // Nothing to insert, exit early. if (StrLen == 0) return; - // FIXME: + + unsigned RealOffset = getMappedOffset(OrigOffset, true); + assert(RealOffset <= Buffer.size() && "Invalid location"); + + // Remove the dead characters. + Buffer.insert(Buffer.begin()+RealOffset, StrData, StrData+StrLen); + + // Add a delta so that future changes are offset correctly. + AddDelta(OrigOffset, StrLen); } /// ReplaceText - This method replaces a range of characters in the input @@ -105,7 +114,7 @@ void RewriteBuffer::InsertText(unsigned OrigOffset, /// operation. void RewriteBuffer::ReplaceText(unsigned OrigOffset, unsigned OrigLength, const char *NewStr, unsigned NewLength) { - RemoveText(OrigOffset, OrigLength); + InsertText(OrigOffset, NewStr, NewLength); return; unsigned MappedOffs = getMappedOffset(OrigOffset); |