summaryrefslogtreecommitdiffstats
path: root/clang/tools/libclang
diff options
context:
space:
mode:
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>2013-07-05 20:44:37 +0000
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>2013-07-05 20:44:37 +0000
commit7b50fc520f67f8c4bec0a2a0fb7054676cf839bc (patch)
tree2597bc6fc93345c9c3c2bf0960f06a60a4c9c14b /clang/tools/libclang
parenteecc09a99c34526ab5afb8e8d870bd8870425feb (diff)
downloadbcm5719-llvm-7b50fc520f67f8c4bec0a2a0fb7054676cf839bc.tar.gz
bcm5719-llvm-7b50fc520f67f8c4bec0a2a0fb7054676cf839bc.zip
[libclang] Introduce clang_Cursor_isObjCOptional, which returns whether the declaration was affected by "@optional"
rdar://14348525. llvm-svn: 185722
Diffstat (limited to 'clang/tools/libclang')
-rw-r--r--clang/tools/libclang/CIndex.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/clang/tools/libclang/CIndex.cpp b/clang/tools/libclang/CIndex.cpp
index eecb16a17ee..ae131af3335 100644
--- a/clang/tools/libclang/CIndex.cpp
+++ b/clang/tools/libclang/CIndex.cpp
@@ -5992,6 +5992,19 @@ unsigned clang_Cursor_getObjCDeclQualifiers(CXCursor C) {
return Result;
}
+unsigned clang_Cursor_isObjCOptional(CXCursor C) {
+ if (!clang_isDeclaration(C.kind))
+ return 0;
+
+ const Decl *D = getCursorDecl(C);
+ if (const ObjCPropertyDecl *PD = dyn_cast<ObjCPropertyDecl>(D))
+ return PD->getPropertyImplementation() == ObjCPropertyDecl::Optional;
+ if (const ObjCMethodDecl *MD = dyn_cast<ObjCMethodDecl>(D))
+ return MD->getImplementationControl() == ObjCMethodDecl::Optional;
+
+ return 0;
+}
+
unsigned clang_Cursor_isVariadic(CXCursor C) {
if (!clang_isDeclaration(C.kind))
return 0;
OpenPOWER on IntegriCloud