#!/usr/bin/perl -W

%name = ();

print "#include <stdlib.h>\n";
print "#include \"rufl_internal.h\"\n";
print "const struct rufl_glyph_map_entry rufl_glyph_map[] = {\n";
print "\t{\" \", 0},  /* sentinel */\n";

while (<>) {
	if (/^([0-9A-F]{4});([a-zA-Z0-9]+);/) {
		$name{"$1:$2"} = 1;
	}
}

@glyph = ();
while (($un, ) = each %name) {
	($u, $n) = split ':', $un;
	push @glyph, [$n, $u];
}

foreach $z (sort {$$a[0] cmp $$b[0] or $$a[1] cmp $$b[1]} @glyph) {
	print "\t{\"$$z[0]\", 0x$$z[1]},\n";
}

print "\t{\"~\", 0}  /* sentinel */\n";
print "};\n";
print "const size_t rufl_glyph_map_size = sizeof rufl_glyph_map /\n";
print "		sizeof rufl_glyph_map[0];\n";
