llvmbot wrote:

<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-clang

Author: Martin Rodriguez Reboredo (YakoYakoYokuYoku)

<details>
<summary>Changes</summary>

These methods are notoriously absent in the Python API. I really need these for 
a project of mine. If testing is needed, it can be added on demand.


---
Full diff: https://github.com/llvm/llvm-project/pull/175534.diff


1 Files Affected:

- (modified) clang/bindings/python/clang/cindex.py (+21) 


``````````diff
diff --git a/clang/bindings/python/clang/cindex.py 
b/clang/bindings/python/clang/cindex.py
index 2b6ab00c88219..98c15a04ff627 100644
--- a/clang/bindings/python/clang/cindex.py
+++ b/clang/bindings/python/clang/cindex.py
@@ -2803,6 +2803,25 @@ def get_canonical(self) -> Type:
         """
         return Type.from_result(conf.lib.clang_getCanonicalType(self), self)
 
+    def get_non_reference(self) -> Type:
+        """
+        Return the type stripped of references from a Type.
+
+        If a type is either an l-value or an r-value reference then those
+        are going to be removed. It returns the type unchanged otherwise.
+        """
+        return Type.from_result(conf.lib.clang_getNonReferenceType(self), self)
+
+    def get_unqualified(self) -> Type:
+        """
+        Return the type without any qualifiers from a Type.
+
+        A type can be qualified with const, volatile or restrict. This method
+        removes the qualifier of a type. In the absence of any of these, the
+        type is returned unchanged.
+        """
+        return Type.from_result(conf.lib.clang_getUnqualifiedType(self), self)
+
     def get_fully_qualified_name(
         self, policy: PrintingPolicy, with_global_ns_prefix: bool = False
     ) -> str:
@@ -4246,6 +4265,7 @@ def set_property(self, property, value):
     ),
     ("clang_getLocation", [TranslationUnit, File, c_uint, c_uint], 
SourceLocation),
     ("clang_getLocationForOffset", [TranslationUnit, File, c_uint], 
SourceLocation),
+    ("clang_getNonReferenceType", [Type], Type),
     ("clang_getNullCursor", None, Cursor),
     ("clang_getNumArgTypes", [Type], c_uint),
     ("clang_getNumCompletionChunks", [c_void_p], c_int),
@@ -4275,6 +4295,7 @@ def set_property(self, property, value):
     ("clang_getTypeKindSpelling", [c_uint], _CXString),
     ("clang_getTypePrettyPrinted", [Type, PrintingPolicy], _CXString),
     ("clang_getTypeSpelling", [Type], _CXString),
+    ("clang_getUnqualifiedType", [Type], Type),
     ("clang_hashCursor", [Cursor], c_uint),
     ("clang_isAttribute", [CursorKind], c_uint),
     ("clang_getFullyQualifiedName", [Type, PrintingPolicy, c_uint], _CXString),

``````````

</details>


https://github.com/llvm/llvm-project/pull/175534
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to