"""
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
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]
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