Convert the gdk keyval-keyname tables to a big string + offsets. (#168901)

2005-03-07  Matthias Clasen  <mclasen@redhat.com>

	Convert the gdk keyval-keyname tables to a big string
	+ offsets. (#168901)

	* gdk/gen-keyname-table.pl: Perl script inspired by
	pango/tools/gen-color-table.pl to create the
	gdk_keys_by_keyval and gdk_keys_by_name tables as lists
	of offsets pointing into a big const string.

	* gdk/keynames.txt: List of keyval-keyname pairs.
	* gdk/keyname-table.h: Generated tables.

	* gdk/gdkkeynames.c: Include keyname-table.h and don't
	generate the inverse table at runtime.
This commit is contained in:
Matthias Clasen 2005-03-08 04:35:29 +00:00 committed by Matthias Clasen
parent f0175e1ff6
commit 3c8b5b490c
7 changed files with 5386 additions and 1332 deletions

View File

@ -1,3 +1,19 @@
2005-03-07 Matthias Clasen <mclasen@redhat.com>
Convert the gdk keyval-keyname tables to a big string
+ offsets. (#168901)
* gdk/gen-keyname-table.pl: Perl script inspired by
pango/tools/gen-color-table.pl to create the
gdk_keys_by_keyval and gdk_keys_by_name tables as lists
of offsets pointing into a big const string.
* gdk/keynames.txt: List of keyval-keyname pairs.
* gdk/keyname-table.h: Generated tables.
* gdk/gdkkeynames.c: Include keyname-table.h and don't
generate the inverse table at runtime.
2005-03-07 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkstyle.c: Document which parameters may be NULL.

View File

@ -1,3 +1,19 @@
2005-03-07 Matthias Clasen <mclasen@redhat.com>
Convert the gdk keyval-keyname tables to a big string
+ offsets. (#168901)
* gdk/gen-keyname-table.pl: Perl script inspired by
pango/tools/gen-color-table.pl to create the
gdk_keys_by_keyval and gdk_keys_by_name tables as lists
of offsets pointing into a big const string.
* gdk/keynames.txt: List of keyval-keyname pairs.
* gdk/keyname-table.h: Generated tables.
* gdk/gdkkeynames.c: Include keyname-table.h and don't
generate the inverse table at runtime.
2005-03-07 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkstyle.c: Document which parameters may be NULL.

View File

@ -1,3 +1,19 @@
2005-03-07 Matthias Clasen <mclasen@redhat.com>
Convert the gdk keyval-keyname tables to a big string
+ offsets. (#168901)
* gdk/gen-keyname-table.pl: Perl script inspired by
pango/tools/gen-color-table.pl to create the
gdk_keys_by_keyval and gdk_keys_by_name tables as lists
of offsets pointing into a big const string.
* gdk/keynames.txt: List of keyval-keyname pairs.
* gdk/keyname-table.h: Generated tables.
* gdk/gdkkeynames.c: Include keyname-table.h and don't
generate the inverse table at runtime.
2005-03-07 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkstyle.c: Document which parameters may be NULL.

File diff suppressed because it is too large Load Diff

92
gdk/gen-keyname-table.pl Executable file
View File

@ -0,0 +1,92 @@
#!/usr/bin/perl -w
if (@ARGV != 1) {
die "Usage: gen-keyname-table.pl keynames.txt > keyname-table.h\n";
}
open IN, $ARGV[0] || die "Cannot open $ARGV[0]: $!\n";
@keys = ();
while (defined($_ = <IN>)) {
next if /^!/;
if (!/^\s*(0x[0-9a-f]+)\s+(.*\S)\s+$/) {
die "Cannot parse line $_";
}
push @keys, [$1, $2];
}
$offset = 0;
$date = gmtime;
print <<EOT;
/* keyname-table.h: Generated by gen-keyname-table.pl from keynames.txt
*
* Date: $date
*
* Do not edit.
*/
static const char keynames[] =
EOT
for $key (@keys) {
$name = $key->[1];
if ($offset != 0) {
print qq(\n);
}
print qq( "$name\\0");
$key->[3] = $offset;
$offset += length($name) + 1;
}
print ";\n\n";
print <<EOT;
typedef struct {
guint keyval;
guint offset;
} gdk_key;
static const gdk_key gdk_keys_by_keyval[] = {
EOT
$i = 0;
for $key (@keys) {
$keyval = $key->[0];
$name = $key->[1];
$offset = $key->[3];
if ($i != 0) {
print ",\n";
}
print " { $keyval, $offset }";
$i++;
}
print "\n};\n\n";
@keys = sort { $a->[1] cmp $b->[1] } @keys;
print <<EOT;
static const gdk_key gdk_keys_by_name[] = {
EOT
$i = 0;
for $key (@keys) {
$keyval = $key->[0];
$name = $key->[1];
$offset = $key->[3];
if ($i != 0) {
print ",\n";
}
print " { $keyval, $offset }";
$i++;
}
print "\n};\n";

3936
gdk/keyname-table.h Normal file

File diff suppressed because it is too large Load Diff

1306
gdk/keynames.txt Normal file

File diff suppressed because it is too large Load Diff