python: fix typedef regexp
authorOlivier Aubert <contact@olivieraubert.net>
Sat, 6 Oct 2018 18:15:58 +0000 (20:15 +0200)
committerOlivier Aubert <contact@olivieraubert.net>
Sat, 6 Oct 2018 18:15:58 +0000 (20:15 +0200)
To correctly handle both
typedef void *(*libvlc_video_lock_cb)(void *opaque, void **planes)
and
typedef void* (*libvlc_gl_getProcAddress_cb)(void* opaque, const char* fct_name)

generator/generate.py

index 595c595..3c11d5b 100755 (executable)
@@ -145,7 +145,7 @@ def_re       = re.compile('^\s+def\s+(\w+)', re.MULTILINE)
 enum_type_re = re.compile('^(?:typedef\s+)?enum')
 enum_re      = re.compile('(?:typedef\s+)?(enum)\s*(\S+)\s*\{\s*(.+)\s*\}\s*(?:\S+)?;')
 enum_pair_re = re.compile('\s*=\s*')
-callback_type_re = re.compile('^typedef\s+\w+(\s+\*)?\s*\(\s*\*')
+callback_type_re = re.compile('^typedef\s+\w+(\s*\*)?\s*\(\s*\*')
 callback_re  = re.compile('typedef\s+\*?(\w+\s*\*?)\s*\(\s*\*\s*(\w+)\s*\)\s*\((.+)\);')
 struct_type_re = re.compile('^typedef\s+struct\s*(\S+)\s*$')
 struct_re    = re.compile('typedef\s+(struct)\s*(\S+)?\s*\{\s*(.+)\s*\}\s*(?:\S+)?\s*;')
@@ -926,6 +926,7 @@ class PythonGenerator(_Generator):
         'va_list':   'ctypes.c_void_p',
         'char*':     'ctypes.c_char_p',
         'bool':      'ctypes.c_bool',
+        'bool*':      'ctypes.POINTER(ctypes.c_bool)',
         'char**':    'ListPOINTER(ctypes.c_char_p)',
         'float':     'ctypes.c_float',
         'int':       'ctypes.c_int',