minor speedup to lookup keynames.

just compare the string if input size matches.



SVN revision: 72420
This commit is contained in:
Gustavo Sverzut Barbieri 2012-06-18 21:36:42 +00:00
parent 40a519c8d9
commit a68eeeca8f
1 changed files with 6 additions and 3 deletions

View File

@ -8,10 +8,11 @@ struct _Keyout
{ {
const char *in; const char *in;
const char *out; const char *out;
int inlen;
int outlen; int outlen;
}; };
#define KEY(in, out) {in, out, sizeof(out) - 1} #define KEY(in, out) {in, out, sizeof(in) - 1, sizeof(out) - 1}
static const Keyout crlf_keyout[] = static const Keyout crlf_keyout[] =
{ {
@ -175,12 +176,14 @@ static const Keyout kps_keyout[] =
static Eina_Bool static Eina_Bool
_key_try(Termpty *ty, const Keyout *map, Evas_Event_Key_Down *ev) _key_try(Termpty *ty, const Keyout *map, Evas_Event_Key_Down *ev)
{ {
int i; int i, inlen;
if (!ev->keyname) return EINA_FALSE; if (!ev->keyname) return EINA_FALSE;
inlen = strlen(ev->keyname);
for (i = 0; map[i].in; i++) for (i = 0; map[i].in; i++)
{ {
if (!strcmp(ev->keyname, map[i].in)) if ((inlen == map[i].inlen) && (!memcmp(ev->keyname, map[i].in, inlen)))
{ {
termpty_write(ty, map[i].out, map[i].outlen); termpty_write(ty, map[i].out, map[i].outlen);
return EINA_TRUE; return EINA_TRUE;