[PATCH] D20127: [libclang] Expose cursors for alias/weak attributes

Cameron via cfe-commits cfe-commits at lists.llvm.org
Tue May 10 13:17:19 PDT 2016


cameron314 created this revision.
cameron314 added a reviewer: rsmith.
cameron314 added a subscriber: cfe-commits.

This patch introduces `CXCursor_AliasAttr`/`CXCursor_WeakAttr` and `clang_getAliasTargetSpelling()` for inspecting alias attributes via libclang.

http://reviews.llvm.org/D20127

Files:
  include/clang-c/Index.h
  tools/libclang/CIndex.cpp
  tools/libclang/CXCursor.cpp

Index: tools/libclang/CXCursor.cpp
===================================================================
--- tools/libclang/CXCursor.cpp
+++ tools/libclang/CXCursor.cpp
@@ -61,6 +61,8 @@
     case attr::Visibility: return CXCursor_VisibilityAttr;
     case attr::DLLExport: return CXCursor_DLLExport;
     case attr::DLLImport: return CXCursor_DLLImport;
+    case attr::Weak: return CXCursor_WeakAttr;
+    case attr::Alias: return CXCursor_AliasAttr;
   }
 
   return CXCursor_UnexposedAttr;
Index: tools/libclang/CIndex.cpp
===================================================================
--- tools/libclang/CIndex.cpp
+++ tools/libclang/CIndex.cpp
@@ -4698,6 +4698,10 @@
     return cxstring::createRef("attribute(dllexport)");
   case CXCursor_DLLImport:
     return cxstring::createRef("attribute(dllimport)");
+  case CXCursor_WeakAttr:
+    return cxstring::createRef("attribute(weak)");
+  case CXCursor_AliasAttr:
+    return cxstring::createRef("attribute(alias)");
   case CXCursor_PreprocessingDirective:
     return cxstring::createRef("preprocessing directive");
   case CXCursor_MacroDefinition:
@@ -5861,6 +5865,16 @@
   return clang_getNullRange();
 }
 
+CXString clang_getAliasTargetSpelling(CXCursor C) {
+  if (C.kind != CXCursor_AliasAttr)
+    return cxstring::createEmpty();
+
+  const AliasAttr *A =
+    cast<AliasAttr>(cxcursor::getCursorAttr(C));
+
+  return cxstring::createDup(A->getAliasee());
+}
+
 void clang_enableStackTraces(void) {
   llvm::sys::PrintStackTraceOnErrorSignal();
 }
Index: include/clang-c/Index.h
===================================================================
--- include/clang-c/Index.h
+++ include/clang-c/Index.h
@@ -2338,7 +2338,9 @@
   CXCursor_VisibilityAttr                = 417,
   CXCursor_DLLExport                     = 418,
   CXCursor_DLLImport                     = 419,
-  CXCursor_LastAttr                      = CXCursor_DLLImport,
+  CXCursor_WeakAttr                      = 420,
+  CXCursor_AliasAttr                     = 421,
+  CXCursor_LastAttr                      = CXCursor_AliasAttr,
 
   /* Preprocessing */
   CXCursor_PreprocessingDirective        = 500,
@@ -3589,6 +3591,12 @@
 CINDEX_LINKAGE CXType clang_getIBOutletCollectionType(CXCursor);
 
 /**
+ * \brief For cursors representing an alias attribute,
+ *  this function returns the aliased symbol name as written.
+ */
+CINDEX_LINKAGE CXString clang_getAliasTargetSpelling(CXCursor);
+
+/**
  * @}
  */
 


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D20127.56792.patch
Type: text/x-patch
Size: 2448 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20160510/a03128ee/attachment-0001.bin>


More information about the cfe-commits mailing list