From 49eacae2a312e28b999ae71a2bcb9765ecc546c6 Mon Sep 17 00:00:00 2001 From: Tim Janik Date: Tue, 10 Oct 2006 10:10:43 +0000 Subject: [PATCH] applied patch from David Necas which introduces an underscore_name option Tue Oct 10 12:06:08 2006 Tim Janik * glib-mkenums.in: * glib-mkenums.1: applied patch from David Necas which introduces an underscore_name option and fixes #358734. --- gobject/ChangeLog | 6 ++++ gobject/glib-mkenums.1 | 5 ++-- gobject/glib-mkenums.in | 64 +++++++++++++++++++++++++++-------------- 3 files changed, 51 insertions(+), 24 deletions(-) diff --git a/gobject/ChangeLog b/gobject/ChangeLog index c25b3e229..72444344c 100644 --- a/gobject/ChangeLog +++ b/gobject/ChangeLog @@ -1,3 +1,9 @@ +Tue Oct 10 12:06:08 2006 Tim Janik + + * glib-mkenums.in: + * glib-mkenums.1: applied patch from David Necas which introduces + an underscore_name option and fixes #358734. + Mon Oct 2 15:50:16 2006 Tim Janik * gvalue.c (g_value_peek_pointer): reverted a change to have an diff --git a/gobject/glib-mkenums.1 b/gobject/glib-mkenums.1 index f7d90582c..0837d082c 100644 --- a/gobject/glib-mkenums.1 +++ b/gobject/glib-mkenums.1 @@ -126,8 +126,9 @@ start out with the trigraph sequence "/*<" and end with the trigraph sequence "> Per enum definition, the options "skip" and "flags" can be specified, to indicate this enum definition to be skipped, or for it to be treated as a flags definition, or to specify the common prefix to be stripped from all values to generate value nicknames, -respectively. The "lowercase_name" option can be used to specify the word separation used -in the *_get_type() function. For instance, /*< lowercase_name=gnome_vfs_uri_hide_options >*/. +respectively. The "underscore_name" option can be used to specify the underscorized name +variant used in the *_get_type() function and *_TYPE_* macro. For instance, +/*< underscore_name=gnome_vfs_uri_hide_options >*/. .PP Per value definition, the options "skip" and "nick" are supported. The former causes the value to be skipped, and the latter can be used to specify the otherwise auto-generated diff --git a/gobject/glib-mkenums.in b/gobject/glib-mkenums.in index db7da6824..cabb0f777 100755 --- a/gobject/glib-mkenums.in +++ b/gobject/glib-mkenums.in @@ -3,8 +3,14 @@ # glib-mkenums.pl # Information about the current enumeration my $flags; # Is enumeration a bitmask? -my $option_lowercase_name; # A lower case name to use as part of the *_get_type() function, instead of the one that we guess. - # For instance, when an enum uses abnormal capitalization and we can not guess where to put the underscores. +my $option_underscore_name; # Overriden underscore variant of the enum name + # for example to fix the cases we don't get the + # mixed-case -> underscorized transform right. +my $option_lowercase_name; # DEPRECATED. A lower case name to use as part + # of the *_get_type() function, instead of the + # one that we guess. For instance, when an enum + # uses abnormal capitalization and we can not + # guess where to put the underscores. my $seenbitshift; # Have we seen bitshift operators? my $enum_prefix; # Prefix for this enumeration my $enumname; # Name for this enumeration @@ -184,8 +190,7 @@ sub read_template_file { elsif (($in eq $2) && ($1 eq 'END') && (exists($tmpl{$2}))) { $in = 'junk'; next; - } - else { + } else { die "Malformed template file $file\n"; } } @@ -274,11 +279,21 @@ while (<>) { next if defined $options{skip}; $enum_prefix = $options{prefix}; $flags = $options{flags}; - $option_lowercase_name = $options{lowercase_name}; + $option_lowercase_name = $options{lowercase_name}; + $option_underscore_name = $options{underscore_name}; } else { $enum_prefix = undef; $flags = undef; - $option_lowercase_name = undef; + $option_lowercase_name = undef; + $option_underscore_name = undef; + } + if (defined $option_lowercase_name) { + if (defined $option_underscore_name) { + print STDERR "$0: $ARGV:$.: lowercase_name overriden with underscore_name\n"; + $option_lowercase_name = undef; + } else { + print STDERR "$0: $ARGV:$.: lowercase_name is deprecated, use underscore_name\n"; + } } # Didn't have trailing '{' look on next lines if (!defined $1 && !defined $4) { @@ -340,24 +355,29 @@ while (<>) { # Spit out the output - - # enumname is e.g. GMatchType - $enspace = $enumname; - $enspace =~ s/^([A-Z][a-z]*).*$/$1/; - - $enumshort = $enumname; - $enumshort =~ s/^[A-Z][a-z]*//; - $enumshort =~ s/([^A-Z])([A-Z])/$1_$2/g; - $enumshort =~ s/([A-Z][A-Z])([A-Z][0-9a-z])/$1_$2/g; - $enumshort = uc($enumshort); + if (defined $option_underscore_name) { + $enumlong = uc $option_underscore_name; + $enumsym = lc $option_underscore_name; + $enumshort = $enumlong; + $enumshort =~ s/^[A-Z][A-Z0-9]*_//; + } else { + # enumname is e.g. GMatchType + $enspace = $enumname; + $enspace =~ s/^([A-Z][a-z]*).*$/$1/; - $enumlong = uc($enspace) . "_" . $enumshort; - $enumsym = lc($enspace) . "_" . lc($enumshort); + $enumshort = $enumname; + $enumshort =~ s/^[A-Z][a-z]*//; + $enumshort =~ s/([^A-Z])([A-Z])/$1_$2/g; + $enumshort =~ s/([A-Z][A-Z])([A-Z][0-9a-z])/$1_$2/g; + $enumshort = uc($enumshort); - #The options might override the lower case name if it could not be generated correctly: - if (defined($option_lowercase_name)) { - $enumsym = $option_lowercase_name; - } + $enumlong = uc($enspace) . "_" . $enumshort; + $enumsym = lc($enspace) . "_" . lc($enumshort); + + if (defined($option_lowercase_name)) { + $enumsym = $option_lowercase_name; + } + } if ($firstenum) { $firstenum = 0;