summaryrefslogtreecommitdiff
path: root/css/makeenum
diff options
context:
space:
mode:
authorJames Bursa <james@netsurf-browser.org>2003-04-04 15:19:32 +0000
committerJames Bursa <james@netsurf-browser.org>2003-04-04 15:19:32 +0000
commit4421b2e633179bbd8f5331d2bdc33246aa2f40d9 (patch)
treed8b6e38fbb204c661906a872d112f1550b1653bf /css/makeenum
parenteb256015adc70034e367fe1c564b7fdca964887b (diff)
downloadnetsurf-4421b2e633179bbd8f5331d2bdc33246aa2f40d9.tar.gz
netsurf-4421b2e633179bbd8f5331d2bdc33246aa2f40d9.tar.bz2
[project @ 2003-04-04 15:19:31 by bursa]
New CSS parser. svn path=/import/netsurf/; revision=112
Diffstat (limited to 'css/makeenum')
-rwxr-xr-xcss/makeenum38
1 files changed, 38 insertions, 0 deletions
diff --git a/css/makeenum b/css/makeenum
new file mode 100755
index 000000000..6501d3704
--- /dev/null
+++ b/css/makeenum
@@ -0,0 +1,38 @@
+#!/usr/bin/perl -W
+# $Id: makeenum,v 1.1 2003/04/04 15:19:31 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;
+ s/-/_/g foreach (@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;
+ $ux =~ s/-/_/g;
+ print C " if (strcasecmp(s, \"$x\") == 0) return ${uc_name}_$ux;\n";
+ }
+ print C " return ${uc_name}_UNKNOWN;\n}\n\n";
+}