open(REZ,">$ARGV[0].strn") || die "$rez";
open(H,">:include:$ARGV[0].h") || die "$h";
open(DOC,">$ARGV[0].doc") || die "$doc";

print H "#ifndef STRNDEFS_H\n#define STRNDEFS_H\n\n";
while (<>)
{
	if (/^#/) {print REZ; print H; next;}
	chop;
	if (/^$/) {next;}
	if (/^R\t/)
	{
		if ($resName ne "") {&finish;}
		($r,$resName,$id,$comment) = split("\t");
		#
		# resource declaration
		#
		print REZ "resource 'STR#' ($id,purgeable) {{\n";
		#
		# include file
		#
		print H "#define $resName"."Strn $id\n";
		print H "typedef enum {\n";
		#
		# doc file
		#
		if ($comment ne "") {print DOC "$id - $comment\n";}
		#
		# we've got a definition going
		#
		$num = 1;
	}
	else
	{
		($name,$value,$comment) = split("\t");
		#
		# resource declaration
		#
		print REZ qq?\t"$value",\n?;
		#
		# include file
		#
		if ($name ne "")
		{
			print H "\t$name";
			if ($num==1) {print H "=1";}
			print H ",";
			if ($num>1) {print H " /*$num*/ ";}
			if ($comment ne "") {print H "/* $comment */";}
			print H "\n";
		}
		#
		# doc file
		#
		if ($comment ne "")
		{
			printf DOC "%5d - %s\n",$comment;
		}
		$num++;
	}
}
&finish;
print H "\n#endif\n";

sub finish
{
	print REZ "}};\n";
	print H "\t$resName"."Limit,\n\t$resName"."MakeLong=-1000000\n} $resName"."Enum;\n";
}