Hi Clint, On Mar 18, 2012, at 1:18 PM, Clint Caywood wrote:
> Ping. > > I apologize for the poorly named subject of this submission, but rather than > resubmit, I figured it would be better to continue the thread. > > This patch fixes clang_getCursorExtent() when called with a CXCursor of kind > CXCursor_TranslationUnit. > > Currently, the following snippet (using libclang) will return an empty range: > > CXCursor Cursor = clang_getTranslationUnitCursor(TranslationUnit); > CXSourceRange Range = clang_getCursorExtent(Cursor); > > This patch will cause the range to include the entire file from which the > translation unit was created. I have a attached the fresh patch. > > Thanks, > Clint > > On Sat, Mar 10, 2012 at 8:40 PM, Clint Caywood <[email protected]> wrote: > Hi folks, > > I'm new to this, but I've made a patch to libclang that allows it to properly > get the range for a translation unit cursor (which I needed for a project I'm > working on). It's pretty straightforward. > > Thanks, > Clint > > Index: tools/libclang/CIndex.cpp > =================================================================== > --- tools/libclang/CIndex.cpp (revision 152526) > +++ tools/libclang/CIndex.cpp (working copy) > @@ -3869,6 +3869,15 @@ > return TU->mapRangeFromPreamble(Range); > } > > + if (C.kind == CXCursor_TranslationUnit) { > + ASTUnit *TU = getCursorASTUnit(C); > + FileID MainID = TU->getSourceManager().getMainFileID(); > + SourceLocation Start = > TU->getSourceManager().getLocForStartOfFile(MainID); > + SourceLocation End = TU->getSourceManager().getLocForEndOfFile(MainID); > + SourceRange Range(Start, End); > + return TU->mapRangeFromPreamble(Range); The mapRangeFromPreamble() call is not necessary, since the range comes from the main FileID, not the preamble FileID. Can you elaborate on how you are using the this extent range later on your application ? Would it be useful to be able to get the extent of any file, not just the main one ? -Argyrios > + } > + > if (C.kind >= CXCursor_FirstDecl && C.kind <= CXCursor_LastDecl) { > Decl *D = cxcursor::getCursorDecl(C); > if (!D) > > <tUnitExtents.patch>_______________________________________________ > cfe-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
