From 38dbad233bfc7906e38e028707ffe5925b9ca46c Mon Sep 17 00:00:00 2001 From: Argyrios Kyrtzidis Date: Thu, 18 Apr 2013 23:29:12 +0000 Subject: [libclang] Introduce clang_Cursor_getObjCDeclQualifiers, to query for 'ObjC Qualifiers' written next to the return and parameter types in an ObjC method declarations. rdar://13676977 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179816 91177308-0d34-0410-b5e6-96231b3b80d8 --- tools/libclang/CIndex.cpp | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'tools/libclang/CIndex.cpp') diff --git a/tools/libclang/CIndex.cpp b/tools/libclang/CIndex.cpp index fd13401173..8a56f4da06 100644 --- a/tools/libclang/CIndex.cpp +++ b/tools/libclang/CIndex.cpp @@ -5948,6 +5948,30 @@ unsigned clang_Cursor_getObjCPropertyAttributes(CXCursor C, unsigned reserved) { return Result; } +unsigned clang_Cursor_getObjCDeclQualifiers(CXCursor C) { + if (!clang_isDeclaration(C.kind)) + return CXObjCDeclQualifier_None; + + Decl::ObjCDeclQualifier QT = Decl::OBJC_TQ_None; + const Decl *D = getCursorDecl(C); + if (const ObjCMethodDecl *MD = dyn_cast(D)) + QT = MD->getObjCDeclQualifier(); + else if (const ParmVarDecl *PD = dyn_cast(D)) + QT = PD->getObjCDeclQualifier(); + if (QT == Decl::OBJC_TQ_None) + return CXObjCDeclQualifier_None; + + unsigned Result = CXObjCDeclQualifier_None; + if (QT & Decl::OBJC_TQ_In) Result |= CXObjCDeclQualifier_In; + if (QT & Decl::OBJC_TQ_Inout) Result |= CXObjCDeclQualifier_Inout; + if (QT & Decl::OBJC_TQ_Out) Result |= CXObjCDeclQualifier_Out; + if (QT & Decl::OBJC_TQ_Bycopy) Result |= CXObjCDeclQualifier_Bycopy; + if (QT & Decl::OBJC_TQ_Byref) Result |= CXObjCDeclQualifier_Byref; + if (QT & Decl::OBJC_TQ_Oneway) Result |= CXObjCDeclQualifier_Oneway; + + return Result; +} + CXSourceRange clang_Cursor_getCommentRange(CXCursor C) { if (!clang_isDeclaration(C.kind)) return clang_getNullRange(); -- cgit v1.2.3-70-g09d2