[glib/wip/mak/mkenums-priv-trigraph: 2/2] mkenums: Support public/private trigraph again
- From: Matthias Klumpp <mak src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib/wip/mak/mkenums-priv-trigraph: 2/2] mkenums: Support public/private trigraph again
- Date: Sun, 10 Jan 2021 18:41:27 +0000 (UTC)
commit 7c84d8ef377208f770c4c063a2da5d9b472bca8f
Author: Matthias Klumpp <matthias tenstral net>
Date: Sun Jan 10 19:41:07 2021 +0100
mkenums: Support public/private trigraph again
This change was previously implemented in
9ba17d511e325eec1e0c1c27cb4d37de4f12ac1e but got dropped during the
Python conversion of the Perl script.
See the commit message of this commit as well as
https://bugzilla.gnome.org/show_bug.cgi?id=782162
for more information.
gobject/glib-mkenums.in | 29 ++++++++++++++++++++++++-----
1 file changed, 24 insertions(+), 5 deletions(-)
---
diff --git a/gobject/glib-mkenums.in b/gobject/glib-mkenums.in
index c4242ad13..199868039 100755
--- a/gobject/glib-mkenums.in
+++ b/gobject/glib-mkenums.in
@@ -132,6 +132,7 @@ option_lowercase_name = '' # DEPRECATED. A lower case name to use as part
# guess where to put the underscores.
option_since = '' # User provided version info for the enum.
seenbitshift = 0 # Have we seen bitshift operators?
+seenprivate = False # Have we seen a private option?
enum_prefix = None # Prefix for this enumeration
enumname = '' # Name for this enumeration
enumshort = '' # $enumname without prefix
@@ -161,7 +162,7 @@ def parse_trigraph(opts):
return result
def parse_entries(file, file_name):
- global entries, enumindex, enumname, seenbitshift, flags
+ global entries, enumindex, enumname, seenbitshift, seenprivate, flags
looking_for_name = False
while True:
@@ -239,16 +240,33 @@ def parse_entries(file, file_name):
if flags is None and value is not None and '<<' in value:
seenbitshift = 1
+ if seenprivate:
+ continue
+
if options is not None:
options = parse_trigraph(options)
if 'skip' not in options:
entries.append((name, value, options.get('nick')))
else:
entries.append((name, value))
- elif re.match(r's*\#', line):
- pass
else:
- print_warning('Failed to parse "{}" in {}'.format(line, file_name))
+ m = re.match(r'''\s*
+ /\*< (([^*]|\*(?!/))*) >\s*\*/
+ \s*$''', line, flags=re.X)
+ if m:
+ options = m.groups()[0]
+ if options is not None:
+ options = parse_trigraph(options)
+ if 'private' in options:
+ seenprivate = True
+ continue
+ if 'public' in options:
+ seenprivate = False
+ continue
+ if re.match(r's*\#', line):
+ pass
+ else:
+ print_warning('Failed to parse "{}" in {}'.format(line, file_name))
return False
help_epilog = '''Production text substitutions:
@@ -464,7 +482,7 @@ if len(fhead) > 0:
write_output(prod)
def process_file(curfilename):
- global entries, flags, seenbitshift, enum_prefix
+ global entries, flags, seenbitshift, seenprivate, enum_prefix
firstenum = True
try:
@@ -542,6 +560,7 @@ def process_file(curfilename):
break
seenbitshift = 0
+ seenprivate = False
entries = []
# Now parse the entries
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]