3 type_name = ""; # GtkEnumType
4 type_macro = ""; # GTK_TYPE_ENUM_TYPE
5 type_ident = ""; # _gtk_enum_type
13 for (i = 2; i < ARGC; i++)
15 if (ARGV[i] == "macros")
17 else if (ARGV[i] == "entries")
19 else if (ARGV[i] == "variables")
26 printf ("/* type macros, generated by maketypes.awk */\n");
28 printf ("#ifdef G_OS_WIN32\n");
29 printf ("# ifdef GTK_COMPILATION\n");
30 printf ("# define GTKTYPEBUILTINS_VAR __declspec(dllexport)\n");
32 printf ("# define GTKTYPEBUILTINS_VAR extern __declspec(dllimport)\n");
35 printf ("# define GTKTYPEBUILTINS_VAR extern\n");
40 printf ("/* type entries, generated by maketypes.awk */\n\n");
42 printf ("/* type variables, generated by maketypes.awk */\n\n");
45 printf ("hm? what do you want me to do?\n") > "/dev/stderr";
50 function set_type (set_type_1)
53 type_name = set_type_1;
54 type_macro = "GTK_TYPE_";
57 # OK, the following is ridiculous, and sed s///g would be far easier
58 gsub ("[A-Z]", "@&", tmp);
59 gsub ("[^A-Z]@", "&_", tmp);
61 gsub ("[A-Z][A-Z][A-Z][0-9a-z]", "@&", tmp);
62 gsub ("@..", "&_", tmp);
64 type_macro = type_macro toupper (tmp);
65 type_ident = "_" tolower (tmp);
67 sub ("^GTK_TYPE_GTK_", "GTK_TYPE_", type_macro);
70 function generate (generate_what)
74 printf ("GTKTYPEBUILTINS_VAR GtkType %s;\n", type_macro);
78 printf (" { \"%s\", &%s,\n", type_name, type_macro);
79 if (generate_what == "BOXED")
80 printf (" GTK_TYPE_%s, %s, %s, },\n", generate_what, boxed_copy, boxed_free);
82 printf (" GTK_TYPE_%s, %s_values },\n", generate_what, type_ident);
86 printf ("GTKTYPEBUILTINS_VAR GtkType %s = 0;\n", type_macro);
90 # skip scheme comments
99 printf ("huh? define-enum keyword without arg?\n") > "/dev/stderr";
109 printf ("huh? define-flags keyword without arg?\n") > "/dev/stderr";
119 printf ("huh? define-boxed keyword without arg?\n") > "/dev/stderr";
128 } while ($0 ~ /^[ \t]*$/);
130 if ($0 ~ /\)/) { generate("BOXED"); next; }
134 } while ($0 ~ /^[ \t]*$/);
136 sub (/\).*/, "", tmp_var2);
137 if (tmp_var1 ~ /^[_A-Za-z][_A-Za-z0-9]*$/ &&
138 tmp_var2 ~ /^[_A-Za-z][_A-Za-z0-9]*$/)
140 boxed_copy = tmp_var1;
141 boxed_free = tmp_var2;
142 # printf ("read boxed funcs: %s %s\n", boxed_copy, boxed_free) > "/dev/stderr";
150 printf("\n#define\tGTK_TYPE_N_BUILTINS\t(%u)\n", type_counter);