keymap, symbols: improve xkb_key memory layout
authorRan Benita <ran234@gmail.com>
Mon, 24 Sep 2012 10:11:31 +0000 (12:11 +0200)
committerRan Benita <ran234@gmail.com>
Mon, 24 Sep 2012 10:46:51 +0000 (12:46 +0200)
commit01b00d75400fefc6f63e249b89b94d3a47368c96
treecc26df90ced0052083b773c47a154588d4b8e0a0
parente44cd2e93b608617bb8b9bfc3aaa1b5e738e9c6a
keymap, symbols: improve xkb_key memory layout

Add struct xkb_group and xkb_level for use in xkb_key, to mirror how
it's done in KeyInfo, GroupInfo, LevelInfo in symbols.c. This
corresponds more nicely to the logical data layout (i.e. a key has
groups which have levels), and also removes a lot of copying and ugly
code due to the index indirections and separate arrays which were used
before.

This uses more memory in some places (e.g. we alloc an action for every
level even if the key doesn't have any) but less in other places (e.g.
we no longer have to pad each group to ->width levels). The numbers say
we use less overall.

Signed-off-by: Ran Benita <ran234@gmail.com>
src/keymap-dump.c
src/keymap.c
src/keymap.h
src/state.c
src/xkbcomp/keymap.c
src/xkbcomp/symbols.c