diff options
author | Gregory Szorc <gregory.szorc@gmail.com> | 2012-06-11 11:11:48 +0000 |
---|---|---|
committer | Gregory Szorc <gregory.szorc@gmail.com> | 2012-06-11 11:11:48 +0000 |
commit | 1162fa0a978c9eb86b702341d9dd85cd5d830ddf (patch) | |
tree | b41742070de4f395b2cd517cde247dc8a8ba076c /clang | |
parent | 96682025c74d1815c29c9c23937e99228026d05f (diff) | |
download | bcm5719-llvm-1162fa0a978c9eb86b702341d9dd85cd5d830ddf.tar.gz bcm5719-llvm-1162fa0a978c9eb86b702341d9dd85cd5d830ddf.zip |
[clang.py] Implement SourceLocation.from_offset
llvm-svn: 158307
Diffstat (limited to 'clang')
-rw-r--r-- | clang/bindings/python/clang/cindex.py | 14 | ||||
-rw-r--r-- | clang/bindings/python/tests/cindex/test_location.py | 9 |
2 files changed, 23 insertions, 0 deletions
diff --git a/clang/bindings/python/clang/cindex.py b/clang/bindings/python/clang/cindex.py index 7a637112a25..02cec2d796e 100644 --- a/clang/bindings/python/clang/cindex.py +++ b/clang/bindings/python/clang/cindex.py @@ -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] diff --git a/clang/bindings/python/tests/cindex/test_location.py b/clang/bindings/python/tests/cindex/test_location.py index 528676ef14b..9e9ef487af1 100644 --- a/clang/bindings/python/tests/cindex/test_location.py +++ b/clang/bindings/python/tests/cindex/test_location.py @@ -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') |