[clang.py] Implement SourceLocation.from_offset

llvm-svn: 158307
This commit is contained in:
Gregory Szorc 2012-06-11 11:11:48 +00:00
parent 96682025c7
commit 1162fa0a97
2 changed files with 23 additions and 0 deletions

View File

@ -169,6 +169,16 @@ class SourceLocation(Structure):
"""
return SourceLocation_getLocation(tu, file, line, column)
@staticmethod
def from_offset(tu, file, offset):
"""Retrieve a SourceLocation from a given character offset.
tu -- TranslationUnit file belongs to
file -- File instance to obtain offset from
offset -- Integer character offset within file
"""
return SourceLocation_getLocationForOffset(tu, file, offset)
@property
def file(self):
"""Get the file represented by this source location."""
@ -2110,6 +2120,10 @@ SourceLocation_equalLocations = lib.clang_equalLocations
SourceLocation_equalLocations.argtypes = [SourceLocation, SourceLocation]
SourceLocation_equalLocations.restype = bool
SourceLocation_getLocationForOffset = lib.clang_getLocationForOffset
SourceLocation_getLocationForOffset.argtypes = [TranslationUnit, File, c_uint]
SourceLocation_getLocationForOffset.restype = SourceLocation
# Source Range Functions
SourceRange_getRange = lib.clang_getRange
SourceRange_getRange.argtypes = [SourceLocation, SourceLocation]

View File

@ -60,6 +60,15 @@ def test_location():
location3 = SourceLocation.from_position(tu, file, 1, 4)
assert location2 != location3
offset_location = SourceLocation.from_offset(tu, file, 5)
cursor = Cursor.from_location(tu, offset_location)
verified = False
for n in [n for n in tu.cursor.get_children() if n.spelling == 'one']:
assert n == cursor
verified = True
assert verified
def test_extent():
tu = get_tu(baseInput)
one = get_cursor(tu, 'one')