summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
authorGregory Szorc <gregory.szorc@gmail.com>2012-06-11 11:11:48 +0000
committerGregory Szorc <gregory.szorc@gmail.com>2012-06-11 11:11:48 +0000
commit1162fa0a978c9eb86b702341d9dd85cd5d830ddf (patch)
treeb41742070de4f395b2cd517cde247dc8a8ba076c /clang
parent96682025c74d1815c29c9c23937e99228026d05f (diff)
downloadbcm5719-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.py14
-rw-r--r--clang/bindings/python/tests/cindex/test_location.py9
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')
OpenPOWER on IntegriCloud