r176732 - [libclang] Change clang_findReferencesInFile and clang_findIncludesInFile to return an enum,

Argyrios Kyrtzidis akyrtzi at gmail.com
Fri Mar 8 14:47:41 PST 2013


Author: akirtzidis
Date: Fri Mar  8 16:47:41 2013
New Revision: 176732

URL: http://llvm.org/viewvc/llvm-project?rev=176732&view=rev
Log:
[libclang] Change clang_findReferencesInFile and clang_findIncludesInFile to return an enum,
as suggested by Jordan.

Modified:
    cfe/trunk/include/clang-c/Index.h
    cfe/trunk/tools/libclang/CIndexHigh.cpp

Modified: cfe/trunk/include/clang-c/Index.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang-c/Index.h?rev=176732&r1=176731&r2=176732&view=diff
==============================================================================
--- cfe/trunk/include/clang-c/Index.h (original)
+++ cfe/trunk/include/clang-c/Index.h Fri Mar  8 16:47:41 2013
@@ -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_findReferencesI
  * \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

Modified: cfe/trunk/tools/libclang/CIndexHigh.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/libclang/CIndexHigh.cpp?rev=176732&r1=176731&r2=176732&view=diff
==============================================================================
--- cfe/trunk/tools/libclang/CIndexHigh.cpp (original)
+++ cfe/trunk/tools/libclang/CIndexHigh.cpp Fri Mar  8 16:47:41 2013
@@ -409,29 +409,29 @@ static bool findIncludesInFile(CXTransla
 
 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
 
   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,
                             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
   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(CXTranslati
 
   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 _visitCursor
   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);





More information about the cfe-commits mailing list