netsurf/css/makeenum
James Bursa 017fc4eb4b [project @ 2003-06-30 12:44:02 by bursa]
New file headers.

svn path=/import/netsurf/; revision=190
2003-06-30 12:44:03 +00:00

44 lines
1.3 KiB
Perl
Executable File

#!/usr/bin/perl -W
#
# This file is part of NetSurf, http://netsurf.sourceforge.net/
# Licensed under the GNU General Public License,
# http://www.opensource.org/licenses/gpl-license
# Copyright 2003 James Bursa <bursa@users.sourceforge.net>
#
$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";
}