Commit bd9f861c authored by Olivier Aubert's avatar Olivier Aubert

python-ctypes: accomodate new event type definitions (cf 96a96f60)

Code still works for both old and new versions of includes.
parent 56637aa9
...@@ -88,6 +88,7 @@ python_param_re=re.compile('(@param\s+\S+)(.+)') ...@@ -88,6 +88,7 @@ python_param_re=re.compile('(@param\s+\S+)(.+)')
forward_re=re.compile('.+\(\s*(.+?)\s*\)(\s*\S+)') forward_re=re.compile('.+\(\s*(.+?)\s*\)(\s*\S+)')
enum_re=re.compile('typedef\s+(enum)\s*(\S+\s*)?\{\s*(.+)\s*\}\s*(\S+);') enum_re=re.compile('typedef\s+(enum)\s*(\S+\s*)?\{\s*(.+)\s*\}\s*(\S+);')
special_enum_re=re.compile('^(enum)\s*(\S+\s*)?\{\s*(.+)\s*\};') special_enum_re=re.compile('^(enum)\s*(\S+\s*)?\{\s*(.+)\s*\};')
event_def_re=re.compile('^DEF\(\s*(\w+)\s*\)')
# Definition of parameter passing mode for types. This should not be # Definition of parameter passing mode for types. This should not be
# hardcoded this way, but works alright ATM. # hardcoded this way, but works alright ATM.
...@@ -139,6 +140,8 @@ class Parser(object): ...@@ -139,6 +140,8 @@ class Parser(object):
with type == 'enum' (for the moment) and value_list being a list of (name, value) with type == 'enum' (for the moment) and value_list being a list of (name, value)
Note that values are string, since this is intended for code generation. Note that values are string, since this is intended for code generation.
""" """
event_names=[]
f=open(name, 'r') f=open(name, 'r')
accumulator='' accumulator=''
for l in f: for l in f:
...@@ -185,11 +188,25 @@ class Parser(object): ...@@ -185,11 +188,25 @@ class Parser(object):
comment='' comment=''
continue continue
# Special case, used only for libvlc_events.h
# (version after 96a96f60bb0d1f2506e68b356897ceca6f6b586d)
m=event_def_re.match(l)
if m:
# Event definition.
event_names.append('libvlc_'+m.group(1))
continue
# Special case, used only for libvlc_events.h # Special case, used only for libvlc_events.h
m=special_enum_re.match(l) m=special_enum_re.match(l)
if m: if m:
values=[]
(typ, name, data)=m.groups() (typ, name, data)=m.groups()
if event_names:
# event_names were defined through DEF macro
# (see 96a96f60bb0d1f2506e68b356897ceca6f6b586d)
values=list( (n, str(i)) for i, n in enumerate(event_names))
else:
# Before 96a96f60bb0d1f2506e68b356897ceca6f6b586d
values=[]
for i, l in enumerate(paramlist_re.split(data)): for i, l in enumerate(paramlist_re.split(data)):
l=l.strip() l=l.strip()
if l.startswith('/*') or l.startswith('#'): if l.startswith('/*') or l.startswith('#'):
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment