diff options
| author | Chris Lattner <sabre@nondot.org> | 2007-10-16 22:36:42 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2007-10-16 22:36:42 +0000 |
| commit | a7c19feca2823d2c8431c7c35d83298dad070285 (patch) | |
| tree | 9b86d55476cd24ad4b8c98b08650ff6f238065c5 /clang/Rewrite/Rewriter.cpp | |
| parent | ebac2cb23561a933f9572a06b0a901c9221f086e (diff) | |
| download | bcm5719-llvm-a7c19feca2823d2c8431c7c35d83298dad070285.tar.gz bcm5719-llvm-a7c19feca2823d2c8431c7c35d83298dad070285.zip | |
Add a new Rewriter::getRangeSize method.
Rename SourceRange::Begin()/End() to getBegin()/getEnd() for
consistency with other code.
Start building the rewriter towards handling @encode.
llvm-svn: 43047
Diffstat (limited to 'clang/Rewrite/Rewriter.cpp')
| -rw-r--r-- | clang/Rewrite/Rewriter.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/clang/Rewrite/Rewriter.cpp b/clang/Rewrite/Rewriter.cpp index 3c618de585b..0c50b4b4e4d 100644 --- a/clang/Rewrite/Rewriter.cpp +++ b/clang/Rewrite/Rewriter.cpp @@ -141,6 +141,25 @@ void RewriteBuffer::ReplaceText(unsigned OrigOffset, unsigned OrigLength, // Rewriter class //===----------------------------------------------------------------------===// +/// getRangeSize - Return the size in bytes of the specified range if they +/// are in the same file. If not, this returns -1. +int Rewriter::getRangeSize(SourceRange Range) const { + if (!isRewritable(Range.getBegin()) || + !isRewritable(Range.getEnd())) return -1; + + unsigned StartOff, StartFileID; + unsigned EndOff , EndFileID; + + StartOff = getLocationOffsetAndFileID(Range.getBegin(), StartFileID); + EndOff = getLocationOffsetAndFileID(Range.getEnd(), EndFileID); + + if (StartFileID != EndFileID) + return -1; + + return EndOff-StartOff; +} + + unsigned Rewriter::getLocationOffsetAndFileID(SourceLocation Loc, unsigned &FileID) const { std::pair<unsigned,unsigned> V = SourceMgr->getDecomposedFileLoc(Loc); |

