[clang.py] Implement Type.__eq__ and Type.__ne__

llvm-svn: 150969
This commit is contained in:
Gregory Szorc 2012-02-20 17:44:49 +00:00
parent a4fd70ea77
commit 8a840febac
2 changed files with 38 additions and 0 deletions

View File

@ -1245,6 +1245,15 @@ class Type(Structure):
"""
return Type_get_array_size(self)
def __eq__(self, other):
if type(other) != type(self):
return False
return Type_equal(self, other)
def __ne__(self, other):
return not self.__eq__(other)
## CIndex Objects ##
# CIndex objects (derived from ClangObject) are essentially lightweight
@ -1936,6 +1945,10 @@ Type_get_array_size = lib.clang_getArraySize
Type_get_array_size.argtype = [Type]
Type_get_array_size.restype = c_longlong
Type_equal = lib.clang_equalTypes
Type_equal.argtypes = [Type, Type]
Type_equal.restype = bool
# Index Functions
Index_create = lib.clang_createIndex
Index_create.argtypes = [c_int, c_int]

View File

@ -109,6 +109,31 @@ def testConstantArray():
else:
assert False, "Didn't find teststruct??"
def test_equal():
"""Ensure equivalence operators work on Type."""
source = 'int a; int b; void *v;'
tu = get_tu(source)
a, b, v = None, None, None
for cursor in tu.cursor.get_children():
if cursor.spelling == 'a':
a = cursor
elif cursor.spelling == 'b':
b = cursor
elif cursor.spelling == 'v':
v = cursor
assert a is not None
assert b is not None
assert v is not None
assert a.type == b.type
assert a.type != v.type
assert a.type != None
assert a.type != 'foo'
def test_is_pod():
tu = get_tu('int i; void f();')
i, f = None, None