[libclang] Change clang_findReferencesInFile and clang_findIncludesInFile to return an enum,
as suggested by Jordan. llvm-svn: 176732
This commit is contained in:
parent
f9b76cd8b5
commit
51c3318b01
|
@ -5006,6 +5006,23 @@ typedef struct {
|
|||
enum CXVisitorResult (*visit)(void *context, CXCursor, CXSourceRange);
|
||||
} CXCursorAndRangeVisitor;
|
||||
|
||||
typedef enum {
|
||||
/**
|
||||
* \brief Function returned successfully.
|
||||
*/
|
||||
CXResult_Success = 0,
|
||||
/**
|
||||
* \brief One of the parameters was invalid for the function.
|
||||
*/
|
||||
CXResult_Invalid = 1,
|
||||
/**
|
||||
* \brief The function was terminated by a callback (e.g. it returned
|
||||
* CXVisit_Break)
|
||||
*/
|
||||
CXResult_VisitBreak = 2
|
||||
|
||||
} CXResult;
|
||||
|
||||
/**
|
||||
* \brief Find references of a declaration in a specific file.
|
||||
*
|
||||
|
@ -5018,13 +5035,10 @@ typedef struct {
|
|||
* The CXSourceRange will point inside the file; if the reference is inside
|
||||
* a macro (and not a macro argument) the CXSourceRange will be invalid.
|
||||
*
|
||||
* \returns
|
||||
* 1 : if a parameter was invalid
|
||||
* -1 : if the callback returned CXVisit_Break,
|
||||
* otherwise returns 0.
|
||||
* \returns one of the CXResult enumerators.
|
||||
*/
|
||||
CINDEX_LINKAGE int clang_findReferencesInFile(CXCursor cursor, CXFile file,
|
||||
CXCursorAndRangeVisitor visitor);
|
||||
CINDEX_LINKAGE CXResult clang_findReferencesInFile(CXCursor cursor, CXFile file,
|
||||
CXCursorAndRangeVisitor visitor);
|
||||
|
||||
/**
|
||||
* \brief Find #import/#include directives in a specific file.
|
||||
|
@ -5036,13 +5050,11 @@ CINDEX_LINKAGE int clang_findReferencesInFile(CXCursor cursor, CXFile file,
|
|||
* \param visitor callback that will receive pairs of CXCursor/CXSourceRange for
|
||||
* each directive found.
|
||||
*
|
||||
* \returns
|
||||
* 1 : if a parameter was invalid
|
||||
* -1 : if the callback returned CXVisit_Break,
|
||||
* otherwise returns 0.
|
||||
* \returns one of the CXResult enumerators.
|
||||
*/
|
||||
CINDEX_LINKAGE int clang_findIncludesInFile(CXTranslationUnit TU, CXFile file,
|
||||
CXCursorAndRangeVisitor visitor);
|
||||
CINDEX_LINKAGE CXResult clang_findIncludesInFile(CXTranslationUnit TU,
|
||||
CXFile file,
|
||||
CXCursorAndRangeVisitor visitor);
|
||||
|
||||
#ifdef __has_feature
|
||||
# if __has_feature(blocks)
|
||||
|
@ -5051,12 +5063,12 @@ typedef enum CXVisitorResult
|
|||
(^CXCursorAndRangeVisitorBlock)(CXCursor, CXSourceRange);
|
||||
|
||||
CINDEX_LINKAGE
|
||||
int clang_findReferencesInFileWithBlock(CXCursor, CXFile,
|
||||
CXCursorAndRangeVisitorBlock);
|
||||
CXResult clang_findReferencesInFileWithBlock(CXCursor, CXFile,
|
||||
CXCursorAndRangeVisitorBlock);
|
||||
|
||||
CINDEX_LINKAGE
|
||||
int clang_findIncludesInFileWithBlock(CXTranslationUnit, CXFile,
|
||||
CXCursorAndRangeVisitorBlock);
|
||||
CXResult clang_findIncludesInFileWithBlock(CXTranslationUnit, CXFile,
|
||||
CXCursorAndRangeVisitorBlock);
|
||||
|
||||
# endif
|
||||
#endif
|
||||
|
|
|
@ -409,29 +409,29 @@ static bool findIncludesInFile(CXTranslationUnit TU, const FileEntry *File,
|
|||
|
||||
extern "C" {
|
||||
|
||||
int clang_findReferencesInFile(CXCursor cursor, CXFile file,
|
||||
CXCursorAndRangeVisitor visitor) {
|
||||
CXResult clang_findReferencesInFile(CXCursor cursor, CXFile file,
|
||||
CXCursorAndRangeVisitor visitor) {
|
||||
LogRef Log = Logger::make(LLVM_FUNCTION_NAME);
|
||||
|
||||
if (clang_Cursor_isNull(cursor)) {
|
||||
if (Log)
|
||||
*Log << "Null cursor";
|
||||
return 1;
|
||||
return CXResult_Invalid;
|
||||
}
|
||||
if (cursor.kind == CXCursor_NoDeclFound) {
|
||||
if (Log)
|
||||
*Log << "Got CXCursor_NoDeclFound";
|
||||
return 1;
|
||||
return CXResult_Invalid;
|
||||
}
|
||||
if (!file) {
|
||||
if (Log)
|
||||
*Log << "Null file";
|
||||
return 1;
|
||||
return CXResult_Invalid;
|
||||
}
|
||||
if (!visitor.visit) {
|
||||
if (Log)
|
||||
*Log << "Null visitor";
|
||||
return 1;
|
||||
return CXResult_Invalid;
|
||||
}
|
||||
|
||||
if (Log)
|
||||
|
@ -439,7 +439,7 @@ int clang_findReferencesInFile(CXCursor cursor, CXFile file,
|
|||
|
||||
ASTUnit *CXXUnit = cxcursor::getCursorASTUnit(cursor);
|
||||
if (!CXXUnit)
|
||||
return 1;
|
||||
return CXResult_Invalid;
|
||||
|
||||
ASTUnit::ConcurrencyCheck Check(*CXXUnit);
|
||||
|
||||
|
@ -449,8 +449,8 @@ int clang_findReferencesInFile(CXCursor cursor, CXFile file,
|
|||
cursor,
|
||||
static_cast<const FileEntry *>(file),
|
||||
visitor))
|
||||
return -1; // visitation break;
|
||||
return 0;
|
||||
return CXResult_VisitBreak;
|
||||
return CXResult_Success;
|
||||
}
|
||||
|
||||
// We are interested in semantics of identifiers so for C++ constructor exprs
|
||||
|
@ -467,35 +467,35 @@ int clang_findReferencesInFile(CXCursor cursor, CXFile file,
|
|||
if (!clang_isDeclaration(refCursor.kind)) {
|
||||
if (Log)
|
||||
*Log << "cursor is not referencing a declaration";
|
||||
return 1;
|
||||
return CXResult_Invalid;
|
||||
}
|
||||
|
||||
if (findIdRefsInFile(cxcursor::getCursorTU(cursor),
|
||||
refCursor,
|
||||
static_cast<const FileEntry *>(file),
|
||||
visitor))
|
||||
return -1; //visitation break;
|
||||
return 0;
|
||||
return CXResult_VisitBreak;
|
||||
return CXResult_Success;
|
||||
}
|
||||
|
||||
int clang_findIncludesInFile(CXTranslationUnit TU, CXFile file,
|
||||
CXResult clang_findIncludesInFile(CXTranslationUnit TU, CXFile file,
|
||||
CXCursorAndRangeVisitor visitor) {
|
||||
LogRef Log = Logger::make(LLVM_FUNCTION_NAME);
|
||||
|
||||
if (!TU) {
|
||||
if (Log)
|
||||
*Log << "Null CXTranslationUnit";
|
||||
return 1;
|
||||
return CXResult_Invalid;
|
||||
}
|
||||
if (!file) {
|
||||
if (Log)
|
||||
*Log << "Null file";
|
||||
return 1;
|
||||
return CXResult_Invalid;
|
||||
}
|
||||
if (!visitor.visit) {
|
||||
if (Log)
|
||||
*Log << "Null visitor";
|
||||
return 1;
|
||||
return CXResult_Invalid;
|
||||
}
|
||||
|
||||
if (Log)
|
||||
|
@ -503,13 +503,13 @@ int clang_findIncludesInFile(CXTranslationUnit TU, CXFile file,
|
|||
|
||||
ASTUnit *CXXUnit = cxtu::getASTUnit(TU);
|
||||
if (!CXXUnit)
|
||||
return 1;
|
||||
return CXResult_Invalid;
|
||||
|
||||
ASTUnit::ConcurrencyCheck Check(*CXXUnit);
|
||||
|
||||
if (findIncludesInFile(TU, static_cast<const FileEntry *>(file), visitor))
|
||||
return -1; //visitation break;
|
||||
return 0;
|
||||
return CXResult_VisitBreak;
|
||||
return CXResult_Success;
|
||||
}
|
||||
|
||||
static enum CXVisitorResult _visitCursorAndRange(void *context,
|
||||
|
@ -519,17 +519,17 @@ static enum CXVisitorResult _visitCursorAndRange(void *context,
|
|||
return INVOKE_BLOCK2(block, cursor, range);
|
||||
}
|
||||
|
||||
int clang_findReferencesInFileWithBlock(CXCursor cursor,
|
||||
CXFile file,
|
||||
CXCursorAndRangeVisitorBlock block) {
|
||||
CXResult clang_findReferencesInFileWithBlock(CXCursor cursor,
|
||||
CXFile file,
|
||||
CXCursorAndRangeVisitorBlock block) {
|
||||
CXCursorAndRangeVisitor visitor = { block,
|
||||
block ? _visitCursorAndRange : 0 };
|
||||
return clang_findReferencesInFile(cursor, file, visitor);
|
||||
}
|
||||
|
||||
int clang_findIncludesInFileWithBlock(CXTranslationUnit TU,
|
||||
CXFile file,
|
||||
CXCursorAndRangeVisitorBlock block) {
|
||||
CXResult clang_findIncludesInFileWithBlock(CXTranslationUnit TU,
|
||||
CXFile file,
|
||||
CXCursorAndRangeVisitorBlock block) {
|
||||
CXCursorAndRangeVisitor visitor = { block,
|
||||
block ? _visitCursorAndRange : 0 };
|
||||
return clang_findIncludesInFile(TU, file, visitor);
|
||||
|
|
Loading…
Reference in New Issue