[clang.py] Implement Cursor.is_static_method

llvm-svn: 158277
This commit is contained in:
Gregory Szorc 2012-06-09 16:21:34 +00:00
parent df97aa1628
commit 531880af77
2 changed files with 26 additions and 0 deletions

View File

@ -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

View File

@ -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')