From e65b34deb1f8f7c80765f1c00476e7609bb9eada Mon Sep 17 00:00:00 2001 From: Gregory Szorc Date: Sat, 9 Jun 2012 16:21:34 +0000 Subject: [PATCH] [clang.py] Implement Cursor.is_static_method git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158277 91177308-0d34-0410-b5e6-96231b3b80d8 --- bindings/python/clang/cindex.py | 10 ++++++++++ bindings/python/tests/cindex/test_cursor.py | 16 ++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/bindings/python/clang/cindex.py b/bindings/python/clang/cindex.py index 257b7aeb19..7a637112a2 100644 --- a/bindings/python/clang/cindex.py +++ b/bindings/python/clang/cindex.py @@ -949,6 +949,12 @@ class Cursor(Structure): """ return Cursor_is_def(self) + def is_static_method(self): + """Returns True if the cursor refers to a C++ member function or member + function template that is declared 'static'. + """ + return Cursor_is_static_method(self) + def get_definition(self): """ If the cursor is a reference to a declaration or a declaration of @@ -2176,6 +2182,10 @@ Cursor_is_def = lib.clang_isCursorDefinition Cursor_is_def.argtypes = [Cursor] Cursor_is_def.restype = bool +Cursor_is_static_method = lib.clang_CXXMethod_isStatic +Cursor_is_static_method.argtypes = [Cursor] +Cursor_is_static_method.restype = bool + Cursor_def = lib.clang_getCursorDefinition Cursor_def.argtypes = [Cursor] Cursor_def.restype = Cursor diff --git a/bindings/python/tests/cindex/test_cursor.py b/bindings/python/tests/cindex/test_cursor.py index 9a37d2ff1b..979838b21c 100644 --- a/bindings/python/tests/cindex/test_cursor.py +++ b/bindings/python/tests/cindex/test_cursor.py @@ -102,6 +102,22 @@ def test_canonical(): assert len(cursors) == 3 assert cursors[1].canonical == cursors[2].canonical +def test_is_static_method(): + """Ensure Cursor.is_static_method works.""" + + source = 'class X { static void foo(); void bar(); };' + tu = get_tu(source, lang='cpp') + + cls = get_cursor(tu, 'X') + foo = get_cursor(tu, 'foo') + bar = get_cursor(tu, 'bar') + assert cls is not None + assert foo is not None + assert bar is not None + + assert foo.is_static_method() + assert not bar.is_static_method() + def test_underlying_type(): tu = get_tu('typedef int foo;') typedef = get_cursor(tu, 'foo') -- 2.40.0