[cfe-commits] r84873 - in /cfe/trunk: include/clang-c/Index.h tools/CIndex/CIndex.cpp tools/CIndex/CIndex.exports tools/c-index-test/c-index-test.c
Ted Kremenek
kremenek at apple.com
Thu Oct 22 10:22:54 PDT 2009
Author: kremenek
Date: Thu Oct 22 12:22:53 2009
New Revision: 84873
URL: http://llvm.org/viewvc/llvm-project?rev=84873&view=rev
Log:
Split clang_getCursor() into clang_getCursor() and clang_getCursorWithHint().
Modified:
cfe/trunk/include/clang-c/Index.h
cfe/trunk/tools/CIndex/CIndex.cpp
cfe/trunk/tools/CIndex/CIndex.exports
cfe/trunk/tools/c-index-test/c-index-test.c
Modified: cfe/trunk/include/clang-c/Index.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang-c/Index.h?rev=84873&r1=84872&r2=84873&view=diff
==============================================================================
--- cfe/trunk/include/clang-c/Index.h (original)
+++ cfe/trunk/include/clang-c/Index.h Thu Oct 22 12:22:53 2009
@@ -251,13 +251,24 @@
/**
Usage: clang_getCursor() will translate a source/line/column position
into an AST cursor (to derive semantic information from the source code).
- If 'RelativeToDecl' is NULL, the entire translation unit will be searched.
- Note that searching the entire translation unit can be slow.
- Otherwise, the "search" for the AST cursor will start at 'RelativeToDecl'.
*/
CXCursor clang_getCursor(CXTranslationUnit, const char *source_name,
- unsigned line, unsigned column,
- CXDecl RelativeToDecl);
+ unsigned line, unsigned column);
+
+/**
+ Usage: clang_getCursorWithHint() provides the same functionality as
+ clang_getCursor() except that it takes an option 'hint' argument.
+ The 'hint' is a temporary CXLookupHint object (whose lifetime is managed by
+ the caller) that should be initialized with clang_initCXLookupHint().
+
+ FIXME: Add a better comment once getCursorWithHint() has more functionality.
+ */
+typedef CXCursor CXLookupHint;
+CXCursor clang_getCursorWithHint(CXTranslationUnit, const char *source_name,
+ unsigned line, unsigned column,
+ CXLookupHint *hint);
+
+void clang_initCXLookupHint(CXLookupHint *hint);
enum CXCursorKind clang_getCursorKind(CXCursor);
unsigned clang_isDeclaration(enum CXCursorKind);
Modified: cfe/trunk/tools/CIndex/CIndex.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/CIndex/CIndex.cpp?rev=84873&r1=84872&r2=84873&view=diff
==============================================================================
--- cfe/trunk/tools/CIndex/CIndex.cpp (original)
+++ cfe/trunk/tools/CIndex/CIndex.cpp Thu Oct 22 12:22:53 2009
@@ -695,13 +695,26 @@
//
// CXCursor Operations.
//
+void clang_initCXLookupHint(CXLookupHint *hint) {
+ memset(hint, 0, sizeof(*hint));
+}
+
CXCursor clang_getCursor(CXTranslationUnit CTUnit, const char *source_name,
- unsigned line, unsigned column,
- CXDecl RelativeToDecl)
+ unsigned line, unsigned column) {
+ return clang_getCursorWithHint(CTUnit, source_name, line, column, NULL);
+}
+
+CXCursor clang_getCursorWithHint(CXTranslationUnit CTUnit,
+ const char *source_name,
+ unsigned line, unsigned column,
+ CXLookupHint *hint)
{
assert(CTUnit && "Passed null CXTranslationUnit");
ASTUnit *CXXUnit = static_cast<ASTUnit *>(CTUnit);
+ // FIXME: Make this better.
+ CXDecl RelativeToDecl = hint ? hint->decl : NULL;
+
FileManager &FMgr = CXXUnit->getFileManager();
const FileEntry *File = FMgr.getFile(source_name,
source_name+strlen(source_name));
Modified: cfe/trunk/tools/CIndex/CIndex.exports
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/CIndex/CIndex.exports?rev=84873&r1=84872&r2=84873&view=diff
==============================================================================
--- cfe/trunk/tools/CIndex/CIndex.exports (original)
+++ cfe/trunk/tools/CIndex/CIndex.exports Thu Oct 22 12:22:53 2009
@@ -7,6 +7,7 @@
_clang_getCursorKind
_clang_getCursorLine
_clang_getCursorSource
+_clang_getCursorWithHint
_clang_getDeclarationName
_clang_getDeclSpelling
_clang_getDeclLine
@@ -20,6 +21,7 @@
_clang_createTranslationUnit
_clang_createTranslationUnitFromSourceFile
_clang_disposeTranslationUnit
+_clang_initCXLookupHint
_clang_isDeclaration
_clang_isReference
_clang_isDefinition
Modified: cfe/trunk/tools/c-index-test/c-index-test.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/c-index-test/c-index-test.c?rev=84873&r1=84872&r2=84873&view=diff
==============================================================================
--- cfe/trunk/tools/c-index-test/c-index-test.c (original)
+++ cfe/trunk/tools/c-index-test/c-index-test.c Thu Oct 22 12:22:53 2009
@@ -60,9 +60,13 @@
curColumn = 1;
} else if (*startBuf != '\t')
curColumn++;
+
+ CXLookupHint hint;
+ clang_initCXLookupHint(&hint);
+ hint.decl = Cursor.decl;
- Ref = clang_getCursor(Unit, clang_getCursorSource(Cursor),
- curLine, curColumn, Cursor.decl);
+ Ref = clang_getCursorWithHint(Unit, clang_getCursorSource(Cursor),
+ curLine, curColumn, &hint);
if (Ref.kind == CXCursor_NoDeclFound) {
/* Nothing found here; that's fine. */
} else if (Ref.kind != CXCursor_FunctionDecl) {
More information about the cfe-commits
mailing list