Add clang_CXXMethod_isVirtual() to libclang, from Erik Verbruggen!

llvm-svn: 131230
This commit is contained in:
Douglas Gregor 2011-05-12 15:17:24 +00:00
parent a4445d6a51
commit 9519d92ef6
4 changed files with 22 additions and 0 deletions

View File

@ -2266,6 +2266,13 @@ CINDEX_LINKAGE CXCursor clang_getCanonicalCursor(CXCursor);
*/
CINDEX_LINKAGE unsigned clang_CXXMethod_isStatic(CXCursor C);
/**
* \brief Determine if a C++ member function or member function template is
* explicitly declared 'virtual' or if it overrides a virtual method from
* one of the base classes.
*/
CINDEX_LINKAGE unsigned clang_CXXMethod_isVirtual(CXCursor C);
/**
* \brief Given a cursor that represents a template, determine
* the cursor kind of the specializations would be generated by instantiating

View File

@ -5192,6 +5192,19 @@ unsigned clang_CXXMethod_isStatic(CXCursor C) {
return (Method && Method->isStatic()) ? 1 : 0;
}
unsigned clang_CXXMethod_isVirtual(CXCursor C) {
if (!clang_isDeclaration(C.kind))
return 0;
CXXMethodDecl *Method = 0;
Decl *D = cxcursor::getCursorDecl(C);
if (FunctionTemplateDecl *FunTmpl = dyn_cast_or_null<FunctionTemplateDecl>(D))
Method = dyn_cast<CXXMethodDecl>(FunTmpl->getTemplatedDecl());
else
Method = dyn_cast_or_null<CXXMethodDecl>(D);
return (Method && Method->isVirtual()) ? 1 : 0;
}
} // end: extern "C"
//===----------------------------------------------------------------------===//

View File

@ -1,6 +1,7 @@
_clang_CXCursorSet_contains
_clang_CXCursorSet_insert
_clang_CXXMethod_isStatic
_clang_CXXMethod_isVirtual
_clang_annotateTokens
_clang_codeCompleteAt
_clang_codeCompleteGetDiagnostic

View File

@ -1,6 +1,7 @@
clang_CXCursorSet_contains
clang_CXCursorSet_insert
clang_CXXMethod_isStatic
clang_CXXMethod_isVirtual
clang_annotateTokens
clang_codeCompleteAt
clang_codeCompleteGetDiagnostic