[PATCH] D51299: [python bindings] Expose template argument API for Type
This revision was automatically updated to reflect the committed changes. Closed by commit rL341930: [python bindings] Expose getNumTemplateArguments (authored by jbcoe, committed by ). Herald added a subscriber: llvm-commits. Repository: rL LLVM https://reviews.llvm.org/D51299 Files: cfe/trunk/bindings/python/clang/cindex.py cfe/trunk/bindings/python/tests/cindex/test_type.py Index: cfe/trunk/bindings/python/clang/cindex.py === --- cfe/trunk/bindings/python/clang/cindex.py +++ cfe/trunk/bindings/python/clang/cindex.py @@ -2254,6 +2254,12 @@ return res +def get_num_template_arguments(self): +return conf.lib.clang_Type_getNumTemplateArguments(self) + +def get_template_argument_type(self, num): +return conf.lib.clang_Type_getTemplateArgumentAsType(self, num) + def get_canonical(self): """ Return the canonical type for a Type. @@ -3999,6 +4005,15 @@ Type, Type.from_result), + ("clang_Type_getNumTemplateArguments", + [Type], + c_int), + + ("clang_Type_getTemplateArgumentAsType", + [Type, c_uint], + Type, + Type.from_result), + ("clang_Type_getOffsetOf", [Type, c_interop_string], c_longlong), Index: cfe/trunk/bindings/python/tests/cindex/test_type.py === --- cfe/trunk/bindings/python/tests/cindex/test_type.py +++ cfe/trunk/bindings/python/tests/cindex/test_type.py @@ -436,3 +436,28 @@ self.assertIsNotNone(testInteger, "Could not find testInteger.") self.assertEqual(testInteger.type.get_address_space(), 2) + +def test_template_arguments(self): +source = """ +class Foo { +}; +template +class Template { +}; +Template instance; +int bar; +""" +tu = get_tu(source, lang='cpp') + +# Varible with a template argument. +cursor = get_cursor(tu, 'instance') +cursor_type = cursor.type +self.assertEqual(cursor.kind, CursorKind.VAR_DECL) +self.assertEqual(cursor_type.spelling, 'Template') +self.assertEqual(cursor_type.get_num_template_arguments(), 1) +template_type = cursor_type.get_template_argument_type(0) +self.assertEqual(template_type.spelling, 'Foo') + +# Variable without a template argument. +cursor = get_cursor(tu, 'bar') +self.assertEqual(cursor.get_num_template_arguments(), -1) Index: cfe/trunk/bindings/python/clang/cindex.py === --- cfe/trunk/bindings/python/clang/cindex.py +++ cfe/trunk/bindings/python/clang/cindex.py @@ -2254,6 +2254,12 @@ return res +def get_num_template_arguments(self): +return conf.lib.clang_Type_getNumTemplateArguments(self) + +def get_template_argument_type(self, num): +return conf.lib.clang_Type_getTemplateArgumentAsType(self, num) + def get_canonical(self): """ Return the canonical type for a Type. @@ -3999,6 +4005,15 @@ Type, Type.from_result), + ("clang_Type_getNumTemplateArguments", + [Type], + c_int), + + ("clang_Type_getTemplateArgumentAsType", + [Type, c_uint], + Type, + Type.from_result), + ("clang_Type_getOffsetOf", [Type, c_interop_string], c_longlong), Index: cfe/trunk/bindings/python/tests/cindex/test_type.py === --- cfe/trunk/bindings/python/tests/cindex/test_type.py +++ cfe/trunk/bindings/python/tests/cindex/test_type.py @@ -436,3 +436,28 @@ self.assertIsNotNone(testInteger, "Could not find testInteger.") self.assertEqual(testInteger.type.get_address_space(), 2) + +def test_template_arguments(self): +source = """ +class Foo { +}; +template +class Template { +}; +Template instance; +int bar; +""" +tu = get_tu(source, lang='cpp') + +# Varible with a template argument. +cursor = get_cursor(tu, 'instance') +cursor_type = cursor.type +self.assertEqual(cursor.kind, CursorKind.VAR_DECL) +self.assertEqual(cursor_type.spelling, 'Template') +self.assertEqual(cursor_type.get_num_template_arguments(), 1) +template_type = cursor_type.get_template_argument_type(0) +self.assertEqual(template_type.spelling, 'Foo') + +# Variable without a template argument. +cursor = get_cursor(tu, 'bar') +self.assertEqual(cursor.get_num_template_arguments(), -1) ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D51299: [python bindings] Expose template argument API for Type
This revision was automatically updated to reflect the committed changes. Closed by commit rC341930: [python bindings] Expose getNumTemplateArguments (authored by jbcoe, committed by ). Changed prior to commit: https://reviews.llvm.org/D51299?vs=162667=164854#toc Repository: rL LLVM https://reviews.llvm.org/D51299 Files: bindings/python/clang/cindex.py bindings/python/tests/cindex/test_type.py Index: bindings/python/clang/cindex.py === --- bindings/python/clang/cindex.py +++ bindings/python/clang/cindex.py @@ -2254,6 +2254,12 @@ return res +def get_num_template_arguments(self): +return conf.lib.clang_Type_getNumTemplateArguments(self) + +def get_template_argument_type(self, num): +return conf.lib.clang_Type_getTemplateArgumentAsType(self, num) + def get_canonical(self): """ Return the canonical type for a Type. @@ -3999,6 +4005,15 @@ Type, Type.from_result), + ("clang_Type_getNumTemplateArguments", + [Type], + c_int), + + ("clang_Type_getTemplateArgumentAsType", + [Type, c_uint], + Type, + Type.from_result), + ("clang_Type_getOffsetOf", [Type, c_interop_string], c_longlong), Index: bindings/python/tests/cindex/test_type.py === --- bindings/python/tests/cindex/test_type.py +++ bindings/python/tests/cindex/test_type.py @@ -436,3 +436,28 @@ self.assertIsNotNone(testInteger, "Could not find testInteger.") self.assertEqual(testInteger.type.get_address_space(), 2) + +def test_template_arguments(self): +source = """ +class Foo { +}; +template +class Template { +}; +Template instance; +int bar; +""" +tu = get_tu(source, lang='cpp') + +# Varible with a template argument. +cursor = get_cursor(tu, 'instance') +cursor_type = cursor.type +self.assertEqual(cursor.kind, CursorKind.VAR_DECL) +self.assertEqual(cursor_type.spelling, 'Template') +self.assertEqual(cursor_type.get_num_template_arguments(), 1) +template_type = cursor_type.get_template_argument_type(0) +self.assertEqual(template_type.spelling, 'Foo') + +# Variable without a template argument. +cursor = get_cursor(tu, 'bar') +self.assertEqual(cursor.get_num_template_arguments(), -1) Index: bindings/python/clang/cindex.py === --- bindings/python/clang/cindex.py +++ bindings/python/clang/cindex.py @@ -2254,6 +2254,12 @@ return res +def get_num_template_arguments(self): +return conf.lib.clang_Type_getNumTemplateArguments(self) + +def get_template_argument_type(self, num): +return conf.lib.clang_Type_getTemplateArgumentAsType(self, num) + def get_canonical(self): """ Return the canonical type for a Type. @@ -3999,6 +4005,15 @@ Type, Type.from_result), + ("clang_Type_getNumTemplateArguments", + [Type], + c_int), + + ("clang_Type_getTemplateArgumentAsType", + [Type, c_uint], + Type, + Type.from_result), + ("clang_Type_getOffsetOf", [Type, c_interop_string], c_longlong), Index: bindings/python/tests/cindex/test_type.py === --- bindings/python/tests/cindex/test_type.py +++ bindings/python/tests/cindex/test_type.py @@ -436,3 +436,28 @@ self.assertIsNotNone(testInteger, "Could not find testInteger.") self.assertEqual(testInteger.type.get_address_space(), 2) + +def test_template_arguments(self): +source = """ +class Foo { +}; +template +class Template { +}; +Template instance; +int bar; +""" +tu = get_tu(source, lang='cpp') + +# Varible with a template argument. +cursor = get_cursor(tu, 'instance') +cursor_type = cursor.type +self.assertEqual(cursor.kind, CursorKind.VAR_DECL) +self.assertEqual(cursor_type.spelling, 'Template') +self.assertEqual(cursor_type.get_num_template_arguments(), 1) +template_type = cursor_type.get_template_argument_type(0) +self.assertEqual(template_type.spelling, 'Foo') + +# Variable without a template argument. +cursor = get_cursor(tu, 'bar') +self.assertEqual(cursor.get_num_template_arguments(), -1) ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D51299: [python bindings] Expose template argument API for Type
jbcoe added a comment. I can commit this. Thanks for the great work! Repository: rC Clang https://reviews.llvm.org/D51299 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D51299: [python bindings] Expose template argument API for Type
kjteske added a comment. Thanks for the review @jbcoe , could you commit this for me? Repository: rC Clang https://reviews.llvm.org/D51299 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D51299: [python bindings] Expose template argument API for Type
kjteske created this revision. Herald added a subscriber: cfe-commits. Expose the C bindings for clang_Type_getNumTemplateArguments() and clang_Type_getTemplateArgumentAsType() in the python API. Repository: rC Clang https://reviews.llvm.org/D51299 Files: bindings/python/clang/cindex.py bindings/python/tests/cindex/test_type.py Index: bindings/python/tests/cindex/test_type.py === --- bindings/python/tests/cindex/test_type.py +++ bindings/python/tests/cindex/test_type.py @@ -436,3 +436,28 @@ self.assertIsNotNone(testInteger, "Could not find testInteger.") self.assertEqual(testInteger.type.get_address_space(), 2) + +def test_template_arguments(self): +source = """ +class Foo { +}; +template +class Template { +}; +Template instance; +int bar; +""" +tu = get_tu(source, lang='cpp') + +# Varible with a template argument. +cursor = get_cursor(tu, 'instance') +cursor_type = cursor.type +self.assertEqual(cursor.kind, CursorKind.VAR_DECL) +self.assertEqual(cursor_type.spelling, 'Template') +self.assertEqual(cursor_type.get_num_template_arguments(), 1) +template_type = cursor_type.get_template_argument_type(0) +self.assertEqual(template_type.spelling, 'Foo') + +# Variable without a template argument. +cursor = get_cursor(tu, 'bar') +self.assertEqual(cursor.get_num_template_arguments(), -1) Index: bindings/python/clang/cindex.py === --- bindings/python/clang/cindex.py +++ bindings/python/clang/cindex.py @@ -2248,6 +2248,12 @@ return res +def get_num_template_arguments(self): +return conf.lib.clang_Type_getNumTemplateArguments(self) + +def get_template_argument_type(self, num): +return conf.lib.clang_Type_getTemplateArgumentAsType(self, num) + def get_canonical(self): """ Return the canonical type for a Type. @@ -3992,6 +3998,15 @@ Type, Type.from_result), + ("clang_Type_getNumTemplateArguments", + [Type], + c_int), + + ("clang_Type_getTemplateArgumentAsType", + [Type, c_uint], + Type, + Type.from_result), + ("clang_Type_getOffsetOf", [Type, c_interop_string], c_longlong), Index: bindings/python/tests/cindex/test_type.py === --- bindings/python/tests/cindex/test_type.py +++ bindings/python/tests/cindex/test_type.py @@ -436,3 +436,28 @@ self.assertIsNotNone(testInteger, "Could not find testInteger.") self.assertEqual(testInteger.type.get_address_space(), 2) + +def test_template_arguments(self): +source = """ +class Foo { +}; +template +class Template { +}; +Template instance; +int bar; +""" +tu = get_tu(source, lang='cpp') + +# Varible with a template argument. +cursor = get_cursor(tu, 'instance') +cursor_type = cursor.type +self.assertEqual(cursor.kind, CursorKind.VAR_DECL) +self.assertEqual(cursor_type.spelling, 'Template') +self.assertEqual(cursor_type.get_num_template_arguments(), 1) +template_type = cursor_type.get_template_argument_type(0) +self.assertEqual(template_type.spelling, 'Foo') + +# Variable without a template argument. +cursor = get_cursor(tu, 'bar') +self.assertEqual(cursor.get_num_template_arguments(), -1) Index: bindings/python/clang/cindex.py === --- bindings/python/clang/cindex.py +++ bindings/python/clang/cindex.py @@ -2248,6 +2248,12 @@ return res +def get_num_template_arguments(self): +return conf.lib.clang_Type_getNumTemplateArguments(self) + +def get_template_argument_type(self, num): +return conf.lib.clang_Type_getTemplateArgumentAsType(self, num) + def get_canonical(self): """ Return the canonical type for a Type. @@ -3992,6 +3998,15 @@ Type, Type.from_result), + ("clang_Type_getNumTemplateArguments", + [Type], + c_int), + + ("clang_Type_getTemplateArgumentAsType", + [Type, c_uint], + Type, + Type.from_result), + ("clang_Type_getOffsetOf", [Type, c_interop_string], c_longlong), ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits