From 0df1499b87688d3e9ff6132617dac1631b7733f4 Mon Sep 17 00:00:00 2001 From: Justus Winter <4winter@informatik.uni-hamburg.de> Date: Sat, 23 May 2015 10:42:36 +0200 Subject: console-client: avoid nested function * console-client/xkb/kstoucs.c (find_ucs): Previously, this function was a nested function for no reason at all. Turn it into a normal function. --- console-client/xkb/kstoucs.c | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) (limited to 'console-client/xkb') diff --git a/console-client/xkb/kstoucs.c b/console-client/xkb/kstoucs.c index 0211e9e3..81e71b9b 100644 --- a/console-client/xkb/kstoucs.c +++ b/console-client/xkb/kstoucs.c @@ -5,6 +5,24 @@ struct ksmap { #include "kstoucs_map.c" +/* Binary search through `kstoucs_map'. */ +static unsigned int +find_ucs (int keysym, struct ksmap *first, struct ksmap *last) +{ + struct ksmap *middle = first + (last - first) / 2; + + if (middle->keysym == keysym) + return middle->ucs; /* base case: needle found. */ + else if (middle == first && middle == last) + return 0; /* base case: empty search space. */ + /* recursive cases: halve search space. */ + else if (middle->keysym < keysym) + return find_ucs (keysym, middle+1, last); + else if (middle->keysym > keysym) + return find_ucs (keysym, first, middle-1); + return 0; +} + unsigned int KeySymToUcs4 (int keysym) { @@ -23,23 +41,6 @@ unsigned int doit (int keysym) if ((keysym & 0xff000000) == 0x01000000) return (keysym & 0x00ffffff); - unsigned int - find_ucs (int keysym, struct ksmap *first, struct ksmap *last) - { - struct ksmap *middle = first + (last - first) / 2; - - if (middle->keysym == keysym) - return middle->ucs; /* base case: needle found. */ - else if (middle == first && middle == last) - return 0; /* base case: empty search space. */ - /* recursive cases: halve search space. */ - else if (middle->keysym < keysym) - return find_ucs (keysym, middle+1, last); - else if (middle->keysym > keysym) - return find_ucs (keysym, first, middle-1); - return 0; - } - #define NUM_KEYSYMS (sizeof kstoucs_map / sizeof(struct ksmap)) return find_ucs(keysym, &kstoucs_map[0], &kstoucs_map[NUM_KEYSYMS - 1]); #ifdef XKB_DEBUG -- cgit v1.2.3