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 | 311ff02fae0392bee6abe7723cdf5a69b2899a47 (patch) | |
tree | d5ad955ebc02cca2d55aec58847593b73ffa340a /Rewrite/Rewriter.cpp | |
parent | 3e7fd152aa8f13da75cd91a96ef78cc823c5f32d (diff) |
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.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43047 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'Rewrite/Rewriter.cpp')
-rw-r--r-- | Rewrite/Rewriter.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/Rewrite/Rewriter.cpp b/Rewrite/Rewriter.cpp index 3c618de585..0c50b4b4e4 100644 --- a/Rewrite/Rewriter.cpp +++ b/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); |