[PATCH] D37573: [bindings] add Cursor.linkage
compnerd added a comment. Sure, Ill get this merged shortly. https://reviews.llvm.org/D37573 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D37573: [bindings] add Cursor.linkage
compnerd closed this revision. compnerd added a comment. SVN r314009 https://reviews.llvm.org/D37573 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D37573: [bindings] add Cursor.linkage
frutiger updated this revision to Diff 114257. frutiger added a comment. Export 'LinkageKind' in '__all__'. Use consistent quotes in test drivers. https://reviews.llvm.org/D37573 Files: bindings/python/clang/cindex.py bindings/python/tests/cindex/test_linkage.py Index: bindings/python/tests/cindex/test_linkage.py === --- /dev/null +++ bindings/python/tests/cindex/test_linkage.py @@ -0,0 +1,30 @@ + +from clang.cindex import LinkageKind +from clang.cindex import Cursor +from clang.cindex import TranslationUnit + +from .util import get_cursor +from .util import get_tu + +def test_linkage(): +"""Ensure that linkage specifers are available on cursors""" + +tu = get_tu(""" +void foo() { int no_linkage; } +static int internal; +namespace { extern int unique_external; } +extern int external; +""", lang = 'cpp') + +no_linkage = get_cursor(tu.cursor, 'no_linkage') +assert no_linkage.linkage == LinkageKind.NO_LINKAGE; + +internal = get_cursor(tu.cursor, 'internal') +assert internal.linkage == LinkageKind.INTERNAL + +unique_external = get_cursor(tu.cursor, 'unique_external') +assert unique_external.linkage == LinkageKind.UNIQUE_EXTERNAL + +external = get_cursor(tu.cursor, 'external') +assert external.linkage == LinkageKind.EXTERNAL + Index: bindings/python/clang/cindex.py === --- bindings/python/clang/cindex.py +++ bindings/python/clang/cindex.py @@ -1548,6 +1548,14 @@ return self._loc +@property +def linkage(self): +"""Return the linkage of this cursor.""" +if not hasattr(self, '_linkage'): +self._linkage = conf.lib.clang_getCursorLinkage(self) + +return LinkageKind.from_id(self._linkage) + @property def extent(self): """ @@ -2061,6 +2069,25 @@ RefQualifierKind.LVALUE = RefQualifierKind(1) RefQualifierKind.RVALUE = RefQualifierKind(2) +class LinkageKind(BaseEnumeration): +"""Describes the kind of linkage of a cursor.""" + +# The unique kind objects, indexed by id. +_kinds = [] +_name_map = None + +def from_param(self): +return self.value + +def __repr__(self): +return 'LinkageKind.%s' % (self.name,) + +LinkageKind.INVALID = LinkageKind(0) +LinkageKind.NO_LINKAGE = LinkageKind(1) +LinkageKind.INTERNAL = LinkageKind(2) +LinkageKind.UNIQUE_EXTERNAL = LinkageKind(3) +LinkageKind.EXTERNAL = LinkageKind(4) + class Type(Structure): """ The type of an element in the abstract syntax tree. @@ -4064,6 +4091,7 @@ 'File', 'FixIt', 'Index', +'LinkageKind', 'SourceLocation', 'SourceRange', 'TokenKind', Index: bindings/python/tests/cindex/test_linkage.py === --- /dev/null +++ bindings/python/tests/cindex/test_linkage.py @@ -0,0 +1,30 @@ + +from clang.cindex import LinkageKind +from clang.cindex import Cursor +from clang.cindex import TranslationUnit + +from .util import get_cursor +from .util import get_tu + +def test_linkage(): +"""Ensure that linkage specifers are available on cursors""" + +tu = get_tu(""" +void foo() { int no_linkage; } +static int internal; +namespace { extern int unique_external; } +extern int external; +""", lang = 'cpp') + +no_linkage = get_cursor(tu.cursor, 'no_linkage') +assert no_linkage.linkage == LinkageKind.NO_LINKAGE; + +internal = get_cursor(tu.cursor, 'internal') +assert internal.linkage == LinkageKind.INTERNAL + +unique_external = get_cursor(tu.cursor, 'unique_external') +assert unique_external.linkage == LinkageKind.UNIQUE_EXTERNAL + +external = get_cursor(tu.cursor, 'external') +assert external.linkage == LinkageKind.EXTERNAL + Index: bindings/python/clang/cindex.py === --- bindings/python/clang/cindex.py +++ bindings/python/clang/cindex.py @@ -1548,6 +1548,14 @@ return self._loc +@property +def linkage(self): +"""Return the linkage of this cursor.""" +if not hasattr(self, '_linkage'): +self._linkage = conf.lib.clang_getCursorLinkage(self) + +return LinkageKind.from_id(self._linkage) + @property def extent(self): """ @@ -2061,6 +2069,25 @@ RefQualifierKind.LVALUE = RefQualifierKind(1) RefQualifierKind.RVALUE = RefQualifierKind(2) +class LinkageKind(BaseEnumeration): +"""Describes the kind of linkage of a cursor.""" + +# The unique kind objects, indexed by id. +_kinds = [] +_name_map = None + +def from_param(self): +return self.value + +def __repr__(self): +return 'LinkageKind.%s' % (self.name,) + +LinkageKind.INVALID = LinkageKind(0) +LinkageKind.NO_LINKAGE = LinkageKind(1) +LinkageKind.INTERNAL = LinkageKind(2) +LinkageKind.UNIQUE_EXTERNAL = LinkageKind(3) +LinkageKind.EXTER
[PATCH] D37573: [bindings] add Cursor.linkage
frutiger updated this revision to Diff 115246. frutiger added a comment. Rebased on top of the latest master. https://reviews.llvm.org/D37573 Files: bindings/python/clang/cindex.py bindings/python/tests/cindex/test_linkage.py Index: bindings/python/tests/cindex/test_linkage.py === --- /dev/null +++ bindings/python/tests/cindex/test_linkage.py @@ -0,0 +1,30 @@ + +from clang.cindex import LinkageKind +from clang.cindex import Cursor +from clang.cindex import TranslationUnit + +from .util import get_cursor +from .util import get_tu + +def test_linkage(): +"""Ensure that linkage specifers are available on cursors""" + +tu = get_tu(""" +void foo() { int no_linkage; } +static int internal; +namespace { extern int unique_external; } +extern int external; +""", lang = 'cpp') + +no_linkage = get_cursor(tu.cursor, 'no_linkage') +assert no_linkage.linkage == LinkageKind.NO_LINKAGE; + +internal = get_cursor(tu.cursor, 'internal') +assert internal.linkage == LinkageKind.INTERNAL + +unique_external = get_cursor(tu.cursor, 'unique_external') +assert unique_external.linkage == LinkageKind.UNIQUE_EXTERNAL + +external = get_cursor(tu.cursor, 'external') +assert external.linkage == LinkageKind.EXTERNAL + Index: bindings/python/clang/cindex.py === --- bindings/python/clang/cindex.py +++ bindings/python/clang/cindex.py @@ -1548,6 +1548,14 @@ return self._loc +@property +def linkage(self): +"""Return the linkage of this cursor.""" +if not hasattr(self, '_linkage'): +self._linkage = conf.lib.clang_getCursorLinkage(self) + +return LinkageKind.from_id(self._linkage) + @property def tls_kind(self): """Return the thread-local storage (TLS) kind of this cursor.""" @@ -2069,6 +2077,25 @@ RefQualifierKind.LVALUE = RefQualifierKind(1) RefQualifierKind.RVALUE = RefQualifierKind(2) +class LinkageKind(BaseEnumeration): +"""Describes the kind of linkage of a cursor.""" + +# The unique kind objects, indexed by id. +_kinds = [] +_name_map = None + +def from_param(self): +return self.value + +def __repr__(self): +return 'LinkageKind.%s' % (self.name,) + +LinkageKind.INVALID = LinkageKind(0) +LinkageKind.NO_LINKAGE = LinkageKind(1) +LinkageKind.INTERNAL = LinkageKind(2) +LinkageKind.UNIQUE_EXTERNAL = LinkageKind(3) +LinkageKind.EXTERNAL = LinkageKind(4) + class TLSKind(BaseEnumeration): """Describes the kind of thread-local storage (TLS) of a cursor.""" @@ -4089,6 +4116,7 @@ 'File', 'FixIt', 'Index', +'LinkageKind', 'SourceLocation', 'SourceRange', 'TLSKind', Index: bindings/python/tests/cindex/test_linkage.py === --- /dev/null +++ bindings/python/tests/cindex/test_linkage.py @@ -0,0 +1,30 @@ + +from clang.cindex import LinkageKind +from clang.cindex import Cursor +from clang.cindex import TranslationUnit + +from .util import get_cursor +from .util import get_tu + +def test_linkage(): +"""Ensure that linkage specifers are available on cursors""" + +tu = get_tu(""" +void foo() { int no_linkage; } +static int internal; +namespace { extern int unique_external; } +extern int external; +""", lang = 'cpp') + +no_linkage = get_cursor(tu.cursor, 'no_linkage') +assert no_linkage.linkage == LinkageKind.NO_LINKAGE; + +internal = get_cursor(tu.cursor, 'internal') +assert internal.linkage == LinkageKind.INTERNAL + +unique_external = get_cursor(tu.cursor, 'unique_external') +assert unique_external.linkage == LinkageKind.UNIQUE_EXTERNAL + +external = get_cursor(tu.cursor, 'external') +assert external.linkage == LinkageKind.EXTERNAL + Index: bindings/python/clang/cindex.py === --- bindings/python/clang/cindex.py +++ bindings/python/clang/cindex.py @@ -1548,6 +1548,14 @@ return self._loc +@property +def linkage(self): +"""Return the linkage of this cursor.""" +if not hasattr(self, '_linkage'): +self._linkage = conf.lib.clang_getCursorLinkage(self) + +return LinkageKind.from_id(self._linkage) + @property def tls_kind(self): """Return the thread-local storage (TLS) kind of this cursor.""" @@ -2069,6 +2077,25 @@ RefQualifierKind.LVALUE = RefQualifierKind(1) RefQualifierKind.RVALUE = RefQualifierKind(2) +class LinkageKind(BaseEnumeration): +"""Describes the kind of linkage of a cursor.""" + +# The unique kind objects, indexed by id. +_kinds = [] +_name_map = None + +def from_param(self): +return self.value + +def __repr__(self): +return 'LinkageKind.%s' % (self.name,) + +LinkageKind.INVALID = LinkageKind(0) +LinkageKind.NO_LINKAGE = LinkageKind(1)
[PATCH] D37573: [bindings] add Cursor.linkage
frutiger added a comment. @compnerd if nothing else remains here, I would also appreciate it if you could merge this. Thanks! https://reviews.llvm.org/D37573 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits