[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