From 09ebd9843614d4147715bde1e7d7f8f13af37916 Mon Sep 17 00:00:00 2001 From: Steve Langasek
Date: Fri, 27 Aug 2010 18:03:14 -0700 Subject: [PATCH] Make grKey enum comprehensive for gcc 4.5 compatibility Avoid the situation of trying to compare an enum variable with a value not included in that enum in a case statement. An enum needs to be declared to include the list of all possible values (which in the case of keypresses is quite a few), not just the most convenient ones. Signed-off-by: Steve Langasek --- graph/grevents.h | 133 +++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 96 insertions(+), 37 deletions(-) diff --git a/graph/grevents.h b/graph/grevents.h index 36dd52d..a8f44fe 100644 --- a/graph/grevents.h +++ b/graph/grevents.h @@ -21,7 +21,6 @@ #define gr_event_type (gr_event_mouse | gr_event_key) - typedef enum grKey_ { grKeyNone = 0, @@ -56,53 +55,113 @@ grKeyBackSpace, grKeyReturn, - grKeyMax, - grKeyForceShort = 0x7FFF /* this forces the grKey to be stored */ + grKeySpace = ' ', + grKey0 = '0', + grKey1 = '1', + grKey2 = '2', + grKey3 = '3', + grKey4 = '4', + grKey5 = '5', + grKey6 = '6', + grKey7 = '7', + grKey8 = '8', + grKey9 = '9', + + grKeyPlus = '+', + grKeyLess = '-', + grKeyEqual = '=', + grKeyMult = '*', + grKeyDollar = '$', + grKeySmaller = '<', + grKeyGreater = '>', + grKeyQuestion = '?', + grKeyComma = ',', + grKeyDot = '.', + grKeySemiColon = ';', + grKeyColon = ':', + grKeyDiv = '/', + grKeyExclam = '!', + grKeyPercent = '%', + grKeyLeftParen = '(', + grKeyRightParen = '(', + grKeyAt = '@', + + grKey_A = 'A', + grKey_B = 'B', + grKey_C = 'C', + grKey_D = 'D', + grKey_E = 'E', + grKey_F = 'F', + grKey_G = 'G', + grKey_H = 'H', + grKey_I = 'I', + grKey_J = 'J', + grKey_K = 'K', + grKey_L = 'L', + grKey_M = 'M', + grKey_N = 'N', + grKey_O = 'O', + grKey_P = 'P', + grKey_Q = 'Q', + grKey_R = 'R', + grKey_S = 'S', + grKey_T = 'T', + grKey_U = 'U', + grKey_V = 'V', + grKey_W = 'W', + grKey_X = 'X', + grKey_Y = 'Y', + grKey_Z = 'Z', + + grKeyLeftB = '[', + grKeyBackSlash = '\\', + grKeyRightB = ']', + grKeyCircumflex = '^', + grKeyUnder = '_', + grKeyBackTick = '`', + grKey_a = 'a', + grKey_b = 'b', + grKey_c = 'c', + grKey_d = 'd', + grKey_e = 'e', + grKey_f = 'f', + grKey_g = 'g', + grKey_h = 'h', + grKey_i = 'i', + grKey_j = 'j', + grKey_k = 'k', + grKey_l = 'l', + grKey_m = 'm', + grKey_n = 'n', + grKey_o = 'o', + grKey_p = 'p', + grKey_q = 'q', + grKey_r = 'r', + grKey_s = 's', + grKey_t = 't', + grKey_u = 'u', + grKey_v = 'v', + grKey_w = 'w', + grKey_x = 'x', + grKey_y = 'y', + grKey_z = 'z', + + grKeyForceShort = 0x7FFF, /* this forces the grKey to be stored */ /* on at least one short ! */ + grKeyMax } grKey; #define grKEY(c) ((grKey)(c)) - +/* + * Masks - to be used as enums they would have to be included in the grKey enum + */ #define grKeyAlt ((grKey)0x8000) #define grKeyCtrl ((grKey)0x4000) #define grKeyShift ((grKey)0x2000) #define grKeyModifiers ((grKey)0xE000) -#define grKey0 grKEY('0') -#define grKey1 grKEY('1') -#define grKey2 grKEY('2') -#define grKey3 grKEY('3') -#define grKey4 grKEY('4') -#define grKey5 grKEY('5') -#define grKey6 grKEY('6') -#define grKey7 grKEY('7') -#define grKey8 grKEY('8') -#define grKey9 grKEY('9') - - -#define grKeyPlus grKEY('+') -#define grKeyLess grKEY('-') -#define grKeyEqual grKEY('=') -#define grKeyMult grKEY('*') -#define grKeyDollar grKEY('$') -#define grKeySmaller grKEY('<') -#define grKeyGreater grKEY('>') -#define grKeyQuestion grKEY('?') -#define grKeyComma grKEY(',') -#define grKeyDot grKEY('.') -#define grKeySemiColumn grKEY(';') -#define grKeyColumn grKEY(':') -#define grKeyDiv grKEY('/') -#define grKeyExclam grKEY('!') -#define grKeyPercent grKEY('%') -#define grKeyLeftParen grKEY('(') -#define grKeyRightParen grKEY('(') -#define grKeyAt grKEY('@') -#define grKeyUnder grKEY('_') - - typedef struct grEvent_ { int type; -- 1.7.1