vlc/python | branch: master | Alberto Invernizzi <[email protected]> | Sun 
Mar 29 20:46:08 2020 +0200| [22d42a43f71237268ece761e17ea13d6830e964a] | 
committer: Alberto Invernizzi

extract constness information from pointer params

> http://git.videolan.org/gitweb.cgi/vlc/python.git/?a=commit;h=22d42a43f71237268ece761e17ea13d6830e964a
---

 generator/generate.py | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)

diff --git a/generator/generate.py b/generator/generate.py
index 29124ba..3dbb9e6 100755
--- a/generator/generate.py
+++ b/generator/generate.py
@@ -707,13 +707,27 @@ class Parser(object):
         # is this parameter a pointer?
         split_pointer = param_raw.split('*')
         if len(split_pointer) > 1:
+            param_type = split_pointer[0]
             param_name = split_pointer[-1]
-            # TODO extract constness
+            param_deref_levels = len(split_pointer) - 1
+
+            # it is a pointer, so it should have at least 1 level of 
indirection
+            assert(param_deref_levels > 0)
+
+            # PARAM TYPE
             param_type = split_pointer[0].replace('const', '').strip()
             # remove the struct keyword, this information is currently not used
             param_type = param_type.replace('struct ', '').strip()
 
-            param_type += '*' * (len(split_pointer) - 1 )
+            # POINTER SEMANTIC
+            # add back the information of how many dereference levels there are
+            param_type += '*' * param_deref_levels
+
+            constness = ['const' in deref_level for deref_level in 
split_pointer]
+
+            # ASSUMPTION
+            # just indirection level 0 and 1 can be const
+            for deref_level_constness in constness[2:]: assert(not 
deref_level_constness)
         # ... or is it a simple variable?
         else:
             # WARNING: workaround for "union { struct {"

_______________________________________________
vlc-commits mailing list
[email protected]
https://mailman.videolan.org/listinfo/vlc-commits

Reply via email to