From 8c099d9b04f0b3025e713f76b42a50f3a67d404f Mon Sep 17 00:00:00 2001 From: Argyrios Kyrtzidis Date: Thu, 31 Oct 2013 00:03:33 +0000 Subject: [libclang/python] Add __contains__ to SourceRange class. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Patch by Loïc Jaquemet! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@193725 91177308-0d34-0410-b5e6-96231b3b80d8 --- bindings/python/clang/cindex.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'bindings') diff --git a/bindings/python/clang/cindex.py b/bindings/python/clang/cindex.py index cbce1a2d3f..c103c70780 100644 --- a/bindings/python/clang/cindex.py +++ b/bindings/python/clang/cindex.py @@ -266,6 +266,29 @@ class SourceRange(Structure): def __ne__(self, other): return not self.__eq__(other) + def __contains__(self, other): + """Useful to detect the Token/Lexer bug""" + if not isinstance(other, SourceLocation): + return False + if other.file is None and self.start.file is None: + pass + elif ( self.start.file.name != other.file.name or + other.file.name != self.end.file.name): + # same file name + return False + # same file, in between lines + if self.start.line < other.line < self.end.line: + return True + elif self.start.line == other.line: + # same file first line + if self.start.column <= other.column: + return True + elif other.line == self.end.line: + # same file last line + if other.column <= self.end.column: + return True + return False + def __repr__(self): return "" % (self.start, self.end) -- cgit v1.2.3