From 4421b2e633179bbd8f5331d2bdc33246aa2f40d9 Mon Sep 17 00:00:00 2001 From: James Bursa Date: Fri, 4 Apr 2003 15:19:32 +0000 Subject: [project @ 2003-04-04 15:19:31 by bursa] New CSS parser. svn path=/import/netsurf/; revision=112 --- css/makeenum | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100755 css/makeenum (limited to 'css/makeenum') 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"; +} -- cgit v1.2.3