clang
8.0.0
|
RewriteBuffer - As code is rewritten, SourceBuffer's from the original input with modifications get a new RewriteBuffer associated with them. More...
#include "clang/Rewrite/Core/RewriteBuffer.h"
Public Types | |
using | iterator = RewriteRope::const_iterator |
Public Member Functions | |
iterator | begin () const |
iterator | end () const |
unsigned | size () const |
void | Initialize (const char *BufStart, const char *BufEnd) |
Initialize - Start this rewrite buffer out with a copy of the unmodified input buffer. More... | |
void | Initialize (StringRef Input) |
raw_ostream & | write (raw_ostream &Stream) const |
Write to Stream the result of applying all changes to the original buffer. More... | |
void | RemoveText (unsigned OrigOffset, unsigned Size, bool removeLineIfEmpty=false) |
RemoveText - Remove the specified text. More... | |
void | InsertText (unsigned OrigOffset, StringRef Str, bool InsertAfter=true) |
InsertText - Insert some text at the specified point, where the offset in the buffer is specified relative to the original SourceBuffer. More... | |
void | InsertTextBefore (unsigned OrigOffset, StringRef Str) |
InsertTextBefore - Insert some text before the specified point, where the offset in the buffer is specified relative to the original SourceBuffer. More... | |
void | InsertTextAfter (unsigned OrigOffset, StringRef Str) |
InsertTextAfter - Insert some text at the specified point, where the offset in the buffer is specified relative to the original SourceBuffer. More... | |
void | ReplaceText (unsigned OrigOffset, unsigned OrigLength, StringRef NewStr) |
ReplaceText - This method replaces a range of characters in the input buffer with a new string. More... | |
Friends | |
class | Rewriter |
RewriteBuffer - As code is rewritten, SourceBuffer's from the original input with modifications get a new RewriteBuffer associated with them.
The RewriteBuffer captures the modified text itself as well as information used to map between SourceLocation's in the original input and offsets in the RewriteBuffer. For example, if text is inserted into the buffer, any locations after the insertion point have to be mapped.
Definition at line 26 of file RewriteBuffer.h.
Definition at line 36 of file RewriteBuffer.h.
|
inline |
Definition at line 38 of file RewriteBuffer.h.
References clang::RewriteRope::begin().
Referenced by clang::Rewriter::getRewrittenText(), RemoveText(), and write().
|
inline |
Definition at line 39 of file RewriteBuffer.h.
References clang::RewriteRope::end().
Referenced by clang::Rewriter::getRewriteBufferFor(), RemoveText(), and write().
|
inline |
Initialize - Start this rewrite buffer out with a copy of the unmodified input buffer.
Definition at line 44 of file RewriteBuffer.h.
References clang::RewriteRope::assign().
Referenced by clang::Rewriter::getEditBuffer(), and Initialize().
|
inline |
Definition at line 47 of file RewriteBuffer.h.
References Initialize(), InsertText(), RemoveText(), and write().
InsertText - Insert some text at the specified point, where the offset in the buffer is specified relative to the original SourceBuffer.
The text is inserted after the specified location.
Definition at line 105 of file Rewriter.cpp.
References clang::RewriteRope::insert().
Referenced by clang::Rewriter::IncreaseIndentation(), Initialize(), InsertTextAfter(), and InsertTextBefore().
|
inline |
InsertTextAfter - Insert some text at the specified point, where the offset in the buffer is specified relative to the original SourceBuffer.
The text is inserted after the specified location.
Definition at line 82 of file RewriteBuffer.h.
References clang::DeltaTree::AddDelta(), clang::DeltaTree::getDeltaAt(), InsertText(), and ReplaceText().
Referenced by clang::html::AddLineNumbers(), clang::html::HighlightRange(), and clang::RewriteMacrosInInput().
|
inline |
InsertTextBefore - Insert some text before the specified point, where the offset in the buffer is specified relative to the original SourceBuffer.
The text is inserted before the specified location. This is method is the same as InsertText with "InsertAfter == false".
Definition at line 75 of file RewriteBuffer.h.
References InsertText().
Referenced by AddLineNumber(), clang::html::AddLineNumbers(), clang::html::HighlightRange(), and clang::RewriteMacrosInInput().
void RewriteBuffer::RemoveText | ( | unsigned | OrigOffset, |
unsigned | Size, | ||
bool | removeLineIfEmpty = false |
||
) |
RemoveText - Remove the specified text.
Definition at line 62 of file Rewriter.cpp.
References begin(), end(), clang::RewriteRope::erase(), isWhitespaceExceptNL(), and clang::RewriteRope::size().
Referenced by Initialize().
void RewriteBuffer::ReplaceText | ( | unsigned | OrigOffset, |
unsigned | OrigLength, | ||
StringRef | NewStr | ||
) |
ReplaceText - This method replaces a range of characters in the input buffer with a new string.
This is effectively a combined "remove/insert" operation.
This is effectively a combined "remove+insert" operation.
Definition at line 120 of file Rewriter.cpp.
References clang::RewriteRope::erase(), and clang::RewriteRope::insert().
Referenced by clang::html::EscapeText(), InsertTextAfter(), and clang::Rewriter::ReplaceText().
|
inline |
Definition at line 40 of file RewriteBuffer.h.
References clang::RewriteRope::size().
raw_ostream & RewriteBuffer::write | ( | raw_ostream & | Stream | ) | const |
Write to Stream
the result of applying all changes to the original buffer.
Note that it isn't safe to use this function to overwrite memory mapped files in-place (PR17960). Consider using a higher-level utility such as Rewriter::overwriteChangedFiles() instead.
The original buffer is not actually changed.
Definition at line 38 of file Rewriter.cpp.
References begin(), end(), and clang::RopePieceBTreeIterator::MoveToNextPiece().
Referenced by clang::tooling::applyAllReplacements(), applyEditsToTemp(), clang::arcmt::MigrationProcess::applyTransform(), clang::index::SimpleFormatContext::getRewrittenText(), hasSuperInitCall(), Initialize(), clang::FixItRewriter::WriteFixedFile(), and clang::FixItRewriter::WriteFixedFiles().
|
friend |
Definition at line 27 of file RewriteBuffer.h.