Add support for constant arrays, from Anders Waldenborg!.

llvm-svn: 142477
This commit is contained in:
Douglas Gregor 2011-10-19 05:51:43 +00:00
parent 89861066ed
commit 5fdc4de718
2 changed files with 24 additions and 0 deletions

View File

@ -1091,6 +1091,18 @@ class Type(Structure):
"""
return Type_get_result(self)
def get_array_element_type(self):
"""
Retrieve the type of the elements of the array type.
"""
return Type_get_array_element(self)
def get_array_size(self):
"""
Retrieve the size of the constant array.
"""
return Type_get_array_size(self)
## CIndex Objects ##
# CIndex objects (derived from ClangObject) are essentially lightweight
@ -1688,6 +1700,14 @@ Type_get_result.argtypes = [Type]
Type_get_result.restype = Type
Type_get_result.errcheck = Type.from_result
Type_get_array_element = lib.clang_getArrayElementType
Type_get_array_element.argtypes = [Type]
Type_get_array_element.restype = Type
Type_get_array_element.errcheck = Type.from_result
Type_get_array_size = lib.clang_getArraySize
Type_get_array_size.argtype = [Type]
Type_get_array_size.restype = c_longlong
# Index Functions
Index_create = lib.clang_createIndex

View File

@ -90,6 +90,10 @@ def testConstantArray():
fields = list(n.get_children())
assert fields[0].spelling == 'A'
assert fields[0].type.kind == TypeKind.CONSTANTARRAY
assert fields[0].type.get_array_element_type() is not None
assert fields[0].type.get_array_element_type().kind == TypeKind.POINTER
assert fields[0].type.get_array_size() == 2
break
else:
assert False, "Didn't find teststruct??"