diff options
-rw-r--r-- | include/clang/Rewrite/Rewriter.h | 47 | ||||
-rw-r--r-- | lib/Rewrite/HTMLRewrite.cpp | 68 |
2 files changed, 52 insertions, 63 deletions
diff --git a/include/clang/Rewrite/Rewriter.h b/include/clang/Rewrite/Rewriter.h index b3b53882c5..6176cfb2dd 100644 --- a/include/clang/Rewrite/Rewriter.h +++ b/include/clang/Rewrite/Rewriter.h @@ -51,30 +51,6 @@ public: iterator end() const { return Buffer.end(); } unsigned size() const { return Buffer.size(); } -private: // Methods only usable by Rewriter. - - /// Initialize - Start this rewrite buffer out with a copy of the unmodified - /// input buffer. - void Initialize(const char *BufStart, const char *BufEnd) { - Buffer.assign(BufStart, BufEnd); - } - - /// getMappedOffset - Given an offset into the original SourceBuffer that this - /// RewriteBuffer is based on, map it into the offset space of the - /// RewriteBuffer. If AfterInserts is true and if the OrigOffset indicates a - /// position where text is inserted, the location returned will be after any - /// inserted text at the position. - unsigned getMappedOffset(unsigned OrigOffset, - bool AfterInserts = false) const{ - return Deltas.getDeltaAt(OrigOffset+AfterInserts)+OrigOffset; - } - - /// AddDelta - When a change is made that shifts around the text buffer, this - /// method is used to record that info. - void AddDelta(unsigned OrigOffset, int Change) { - return Deltas.AddDelta(OrigOffset, Change); - } - /// RemoveText - Remove the specified text. void RemoveText(unsigned OrigOffset, unsigned Size); @@ -110,6 +86,29 @@ private: // Methods only usable by Rewriter. void ReplaceText(unsigned OrigOffset, unsigned OrigLength, const char *NewStr, unsigned NewLength); +private: // Methods only usable by Rewriter. + + /// Initialize - Start this rewrite buffer out with a copy of the unmodified + /// input buffer. + void Initialize(const char *BufStart, const char *BufEnd) { + Buffer.assign(BufStart, BufEnd); + } + + /// getMappedOffset - Given an offset into the original SourceBuffer that this + /// RewriteBuffer is based on, map it into the offset space of the + /// RewriteBuffer. If AfterInserts is true and if the OrigOffset indicates a + /// position where text is inserted, the location returned will be after any + /// inserted text at the position. + unsigned getMappedOffset(unsigned OrigOffset, + bool AfterInserts = false) const{ + return Deltas.getDeltaAt(OrigOffset+AfterInserts)+OrigOffset; + } + + /// AddDelta - When a change is made that shifts around the text buffer, this + /// method is used to record that info. + void AddDelta(unsigned OrigOffset, int Change) { + return Deltas.AddDelta(OrigOffset, Change); + } }; diff --git a/lib/Rewrite/HTMLRewrite.cpp b/lib/Rewrite/HTMLRewrite.cpp index fc1627af02..b4dbb44431 100644 --- a/lib/Rewrite/HTMLRewrite.cpp +++ b/lib/Rewrite/HTMLRewrite.cpp @@ -30,49 +30,38 @@ void html::EscapeText(Rewriter& R, unsigned FileID, assert (C <= FileEnd); + RewriteBuffer &RB = R.getEditBuffer(FileID); + for (unsigned FilePos = 0; C != FileEnd ; ++C, ++FilePos) { switch (*C) { - default: break; - - case ' ': - if (EscapeSpaces) { - SourceLocation Loc = SourceLocation::getFileLoc(FileID, FilePos); - R.ReplaceText(Loc, 1, " ", 6); - } - break; + default: break; + + case ' ': + if (EscapeSpaces) + RB.ReplaceText(FilePos, 1, " ", 6); + break; - case '\t': { - if (!ReplaceTabs) - break; - - SourceLocation Loc = SourceLocation::getFileLoc(FileID, FilePos); - - if (EscapeSpaces) - R.ReplaceText(Loc, 1, " ", 6*4); - else - R.ReplaceText(Loc, 1, " ", 4); - - break; - } - - case '<': { - SourceLocation Loc = SourceLocation::getFileLoc(FileID, FilePos); - R.ReplaceText(Loc, 1, "<", 4); - break; - } - - case '>': { - SourceLocation Loc = SourceLocation::getFileLoc(FileID, FilePos); - R.ReplaceText(Loc, 1, ">", 4); + case '\t': + if (!ReplaceTabs) break; - } - - case '&': { - SourceLocation Loc = SourceLocation::getFileLoc(FileID, FilePos); - R.ReplaceText(Loc, 1, "&", 5); - break; - } + if (EscapeSpaces) + RB.ReplaceText(FilePos, 1, " ", 6*4); + else + RB.ReplaceText(FilePos, 1, " ", 4); + break; + + case '<': + RB.ReplaceText(FilePos, 1, "<", 4); + break; + + case '>': + RB.ReplaceText(FilePos, 1, ">", 4); + break; + + case '&': + RB.ReplaceText(FilePos, 1, "&", 5); + break; } } } @@ -98,7 +87,8 @@ std::string html::EscapeText(const std::string& s, bool EscapeSpaces, case '\t': if (ReplaceTabs) - for (unsigned i = 0; i < 4; ++i) os << " "; + for (unsigned i = 0; i < 4; ++i) + os << " "; else os << c; break; |