diff options
author | Tim Janik <timj@gtk.org> | 1998-06-08 03:38:24 +0000 |
---|---|---|
committer | Tim Janik <timj@src.gnome.org> | 1998-06-08 03:38:24 +0000 |
commit | 207eecc4240b2b296ad2f88c6377d19765135b84 (patch) | |
tree | da3c726c0d2fe1fc400fe0458b56708353bd213e /gtk/makeenums.awk | |
parent | 1e32cc3d6370b72add69c4a3c0ee4ecb8ca5b712 (diff) | |
download | gtk+-207eecc4240b2b296ad2f88c6377d19765135b84.tar.gz |
wrapped enum definitions with glib macros.
Mon Jun 8 02:52:37 1998 Tim Janik <timj@gtk.org>
* gdk/gdkprivate.h:
* gdk/gdktypes.h:
* gtk/gtkprivate.h:
* gtk/gtkwidget.h:
* gtk/gtkobject.h: wrapped enum definitions with glib macros.
* reworked enum value array generation code. gtk.defs is a generated
file now.
Diffstat (limited to 'gtk/makeenums.awk')
-rw-r--r-- | gtk/makeenums.awk | 185 |
1 files changed, 105 insertions, 80 deletions
diff --git a/gtk/makeenums.awk b/gtk/makeenums.awk index be9df4076b..0e90e18eea 100644 --- a/gtk/makeenums.awk +++ b/gtk/makeenums.awk @@ -1,105 +1,130 @@ BEGIN { - in_def=0; - TI=0; - delete type_names; - delete type_nicks; - delete type_flags; - n_defs = 0; -} - -(init == 0) { - printf ("/* generated by makeenums.awk from \"%s\" */\n\n", FILENAME); - init=1; -} - -";" { - sub (";.*", ""); -} - -/\(/ { - if (in_def == 0) + type_name = ""; # GtkEnumType + type_macro = ""; # GTK_TYPE_ENUM_TYPE + type_ident = ""; # _gtk_enum_type + type_flags = 0; + type_counter = 0; + delete value_names; # GTK_ENUM_VALUE + delete value_nicks; # enum-value + VI = 0; + gen_arrays = 0; + gen_defs = 0; + + for (i = 1; i < ARGC; i++) { - if ($1 == "(define-enum") - { - in_def = 1; - type_flags[TI]=0; - } - else if ($1 == "(define-flags") - { - in_def = 1; - type_flags[TI]=1; - } + if (ARGV[i] == "arrays") + gen_arrays = 1; + else if (ARGV[i] == "defs") + gen_defs = 1; + ARGV[i] = ""; } + + if (gen_arrays) + printf ("/* generated by makeenums.awk */\n\n"); + else if (gen_defs) + printf (";; generated by makeenums.awk ; -*- scheme -*-\n\n"); else - in_def += 1; + { + printf ("hm? what do you want me to do?\n") > "/dev/stderr"; + exit 1; + } } -(in_def == 1) { - VI = 0; - delete value_names; - delete value_nicks; - - type_nicks[TI] = $2; - type_names[TI] = "GTK_TYPE"; - for (i = 0; i < length(type_nicks[TI]); i++) +function set_type (set_type_1) +{ + type_name = set_type_1; + type_macro = "GTK_TYPE"; + type_ident = ""; + for (i = 0; i < length (type_name); i++) { - ch = substr(type_nicks[TI], i + 1, 1); - Ch = toupper(ch); + ch = substr (type_name, i + 1, 1); + Ch = toupper (ch); if (Ch == ch) - type_names[TI] = type_names[TI] "_" Ch; + { + type_macro = type_macro "_" Ch; + type_ident = type_ident "_" tolower (ch); + } else - type_names[TI] = type_names[TI] Ch; + { + type_macro = type_macro Ch; + type_ident = type_ident ch; + } } } -(in_def == 2) { - value_nicks[VI] = tolower ($1); - value_names[VI] = $2; - kill_pat="[^-A-z0123456789_]+"; - while (match (value_nicks[VI],kill_pat)) - sub(kill_pat,"",value_nicks[VI]); - while (match (value_names[VI],kill_pat)) - sub(kill_pat,"",value_names[VI]); +function set_value (set_value_1, set_value_2) +{ + value_names[VI] = set_value_1; + value_nicks[VI] = tolower (set_value_2); + while (match (value_nicks[VI], "_")) + sub ("_", "-", value_nicks[VI]); } -/\)/ { - if (in_def > 0) +function generate_arrays () +{ + if (gen_arrays) { - while (match($0,")")) + printf ("static GtkEnumValue enum_values_%s[] = {\n", type_name); + for (i = 0; i < VI; i++) { - sub(")",""); - if (in_def == 2) - VI += 1; - if (in_def == 1) - { - TI += 1; - } - in_def -= 1; + printf (" { %s, \"%s\", \"%s\" },\n", + value_names[i], value_names[i], value_nicks[i]); } - - if (in_def == 0) + printf ("};\n"); + } +} + +function generate_defs () +{ + if (gen_defs) + { + printf ("\n(define-%s %s", + type_flags ? "flags" : "enum", + type_name); + for (i = 0; i < VI; i++) { - printf ("static GtkEnumValue enum_values_%s[] = {\n", type_nicks[TI-1]); - for (j = 0; value_names[j] != ""; j++) - { - printf (" { %s, \"%s\", \"%s\" },\n", - value_names[j], value_names[j], value_nicks[j]); - } - printf (" { 0, NULL, NULL },\n"); - printf ("};\n"); + printf ("\n (%s %s)", + value_nicks[i], value_names[i]); } + printf (")\n"); } } +# parse keywords + +/G_ENUM_E/ { + if ($3 != "+" || $5 != "+") + printf ("huh? G_ENUM_E keyword without arg?\n") > "/dev/stderr"; + else + set_type($4); + type_flags = 0; + + generate_defs(); + generate_arrays(); + VI = 0; +} + +/G_ENUM_F/ { + if ($3 != "+" || $5 != "+") + printf ("huh? G_ENUM_F keyword without arg?\n") > "/dev/stderr"; + else + set_type($4); + type_flags = 1; + + generate_defs(); + generate_arrays(); + VI = 0; +} + +/G_ENUM_V/ { + if ($2 != "+" || $4 != "+" || $6 != "+") + printf ("huh? G_ENUM_V keyword without arg?\n") > "/dev/stderr"; + else + set_value($3, $5); + VI += 1; +} + END { -# printf("%u{\n", TI); - for (i = 0; i < TI; i++) - { -# printf(" { %s, \"%s\", %s, %s_values },\n", -# type_names[i], type_nicks[i], -# type_flags[i] ? "TRUE" : "FALSE", -# tolower(type_nicks[i])); - } -# printf("};\n"); + printf("\n"); } |