[cfe-commits] r42942 - /cfe/trunk/Rewrite/Rewriter.cpp

Chris Lattner sabre at nondot.org
Fri Oct 12 17:21:23 PDT 2007


Author: lattner
Date: Fri Oct 12 19:21:23 2007
New Revision: 42942

URL: http://llvm.org/viewvc/llvm-project?rev=42942&view=rev
Log:
With this I can now insert stuff before tabs, woo.

Modified:
    cfe/trunk/Rewrite/Rewriter.cpp

Modified: cfe/trunk/Rewrite/Rewriter.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/Rewrite/Rewriter.cpp?rev=42942&r1=42941&r2=42942&view=diff

==============================================================================
--- cfe/trunk/Rewrite/Rewriter.cpp (original)
+++ cfe/trunk/Rewrite/Rewriter.cpp Fri Oct 12 19:21:23 2007
@@ -96,8 +96,17 @@
 
 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 @@
 /// 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);





More information about the cfe-commits mailing list