[cfe-commits] r104075 - in /cfe/trunk: include/clang-c/Index.h tools/libclang/CIndex.cpp tools/libclang/libclang.darwin.exports tools/libclang/libclang.exports

Ted Kremenek kremenek at apple.com
Tue May 18 15:32:15 PDT 2010


Author: kremenek
Date: Tue May 18 17:32:15 2010
New Revision: 104075

URL: http://llvm.org/viewvc/llvm-project?rev=104075&view=rev
Log:
Add function 'clang_isTagDeclDefinition()' to allow clients of libclang to distinguish between
forward declarations and definitions of structs/classes/enums.

Modified:
    cfe/trunk/include/clang-c/Index.h
    cfe/trunk/tools/libclang/CIndex.cpp
    cfe/trunk/tools/libclang/libclang.darwin.exports
    cfe/trunk/tools/libclang/libclang.exports

Modified: cfe/trunk/include/clang-c/Index.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang-c/Index.h?rev=104075&r1=104074&r2=104075&view=diff
==============================================================================
--- cfe/trunk/include/clang-c/Index.h (original)
+++ cfe/trunk/include/clang-c/Index.h Tue May 18 17:32:15 2010
@@ -1355,6 +1355,12 @@
 CINDEX_LINKAGE unsigned clang_CXXMethod_isStatic(CXCursor C);
 
 /**
+ * \brief Determine if a given struct/class/enum declaration is a definition
+ *   or just a forward declaration.
+ */
+CINDEX_LINKAGE unsigned clang_isTagDeclDefinition(CXCursor C);
+
+/**
  * @}
  */
 

Modified: cfe/trunk/tools/libclang/CIndex.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/libclang/CIndex.cpp?rev=104075&r1=104074&r2=104075&view=diff
==============================================================================
--- cfe/trunk/tools/libclang/CIndex.cpp (original)
+++ cfe/trunk/tools/libclang/CIndex.cpp Tue May 18 17:32:15 2010
@@ -2809,6 +2809,15 @@
   CXXMethodDecl *D = dyn_cast<CXXMethodDecl>(cxcursor::getCursorDecl(C));
   return (D && D->isStatic()) ? 1 : 0;
 }
+
+unsigned clang_isTagDeclDefinition(CXCursor C) {
+  if (!clang_isDeclaration(C.kind))
+    return 0;
+
+  const TagDecl *D = dyn_cast<TagDecl>(cxcursor::getCursorDecl(C));
+  return D && D->isDefinition() ? 1 : 0;
+}
+
 } // end: extern "C"
 
 //===----------------------------------------------------------------------===//

Modified: cfe/trunk/tools/libclang/libclang.darwin.exports
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/libclang/libclang.darwin.exports?rev=104075&r1=104074&r2=104075&view=diff
==============================================================================
--- cfe/trunk/tools/libclang/libclang.darwin.exports (original)
+++ cfe/trunk/tools/libclang/libclang.darwin.exports Tue May 18 17:32:15 2010
@@ -81,6 +81,7 @@
 _clang_isPreprocessing
 _clang_isReference
 _clang_isStatement
+_clang_isTagDeclDefinition
 _clang_isTranslationUnit
 _clang_isUnexposed
 _clang_setUseExternalASTGeneration

Modified: cfe/trunk/tools/libclang/libclang.exports
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/libclang/libclang.exports?rev=104075&r1=104074&r2=104075&view=diff
==============================================================================
--- cfe/trunk/tools/libclang/libclang.exports (original)
+++ cfe/trunk/tools/libclang/libclang.exports Tue May 18 17:32:15 2010
@@ -81,8 +81,10 @@
 clang_isPreprocessing
 clang_isReference
 clang_isStatement
+clang_isTagDeclDefinition
 clang_isTranslationUnit
 clang_isUnexposed
 clang_setUseExternalASTGeneration
 clang_tokenize
 clang_visitChildren
+





More information about the cfe-commits mailing list