diff options
| author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2013-07-05 20:44:37 +0000 |
|---|---|---|
| committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2013-07-05 20:44:37 +0000 |
| commit | 7b50fc520f67f8c4bec0a2a0fb7054676cf839bc (patch) | |
| tree | 2597bc6fc93345c9c3c2bf0960f06a60a4c9c14b /clang/tools/libclang | |
| parent | eecc09a99c34526ab5afb8e8d870bd8870425feb (diff) | |
| download | bcm5719-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.cpp | 13 |
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; |

