summaryrefslogtreecommitdiff
path: root/render/makeenum
diff options
context:
space:
mode:
authorJames Bursa <james@netsurf-browser.org>2002-04-22 09:24:35 +0000
committerJames Bursa <james@netsurf-browser.org>2002-04-22 09:24:35 +0000
commit6d48b29c2bc7ce93eb6ac30f594bdcfb3aa97e11 (patch)
tree9d60d5b341264d7d7db555865b2583e0f6b7c19d /render/makeenum
downloadnetsurf-6d48b29c2bc7ce93eb6ac30f594bdcfb3aa97e11.tar.gz
netsurf-6d48b29c2bc7ce93eb6ac30f594bdcfb3aa97e11.tar.bz2
[project @ 2002-04-22 09:24:35 by bursa]
Initial revision svn path=/import/netsurf/; revision=2
Diffstat (limited to 'render/makeenum')
-rw-r--r--render/makeenum36
1 files changed, 36 insertions, 0 deletions
diff --git a/render/makeenum b/render/makeenum
new file mode 100644
index 000000000..57f3375d1
--- /dev/null
+++ b/render/makeenum
@@ -0,0 +1,36 @@
+#!/usr/bin/perl -W
+# $Id: makeenum,v 1.1.1.1 2002/04/22 09:24:34 bursa Exp $
+
+$out = shift or die "usage: makeenum leafname";
+
+open H, ">$out.h" or die "open 'enum.h' failed";
+open C, ">$out.c" or die "open 'enum.c' failed";
+
+print C "#include \"$out.h\"\n\n";
+
+while (<>) {
+ chomp;
+ @enum = split;
+ $name = shift @enum;
+
+ @uc_enum = map uc, @enum;
+ $uc_name = uc $name;
+
+ print H "extern const char * const ${name}_name[];\n";
+ print H "typedef enum {\n ${uc_name}_";
+ print H join ",\n ${uc_name}_", @uc_enum;
+ print H ",\n ${uc_name}_UNKNOWN\n";
+ print H "} $name;\n";
+ print H "$name ${name}_parse(const char * const s);\n\n";
+
+ print C "/**\n * $name\n */\n\n";
+ print C "const char * const ${name}_name[] = {\n \"";
+ print C join "\",\n \"", @enum;
+ print C "\"\n};\n\n";
+ print C "$name ${name}_parse(const char * const s)\n{\n";
+ foreach $x (@enum) {
+ $ux = uc $x;
+ print C " if (strcmp(s, \"$x\") == 0) return ${uc_name}_$ux;\n";
+ }
+ print C " return ${uc_name}_UNKNOWN;\n}\n\n";
+}