2010-09-13 1 views
0

Есть ли способ получить строковое представление для констант и перечислений, определенных в IOKit?Получить строковое представление константы или Enum в IOKit, возможно?

Я делаю корм в IOKit и пытаюсь отключить какой-то параметр, который USB-устройства возвращаются. Но я заканчиваю списками чисел. Есть ли другой способ перечислить, что это значит?

Например, в IOHIDKeys.h

enum IOHIDElementType { 
    kIOHIDElementTypeInput_Misc  = 1, 
    kIOHIDElementTypeInput_Button  = 2, 
    kIOHIDElementTypeInput_Axis  = 3, 
    kIOHIDElementTypeInput_ScanCodes = 4, 
    kIOHIDElementTypeOutput   = 129, 
    kIOHIDElementTypeFeature   = 257, 
    kIOHIDElementTypeCollection  = 513 
}; 
typedef enum IOHIDElementType IOHIDElementType; 

или даже хуже (для меня) в IOHIDUsageTables.h я имею смотреть вверх шестнадцатеричное значение и найти его в заголовке ... например:

kHIDUsage_GD_Joystick = 0x04, /* Application Collection */ 
kHIDUsage_GD_GamePad = 0x05, /* Application Collection */ 
kHIDUsage_GD_Keyboard = 0x06, /* Application Collection */ 
kHIDUsage_GD_Keypad = 0x07, /* Application Collection */ 

ответ

1

Вы можете использовать классический способ переключения, например.

const char *IOHIDElemtType2str(IOHIDElementType type) 
{ 
    switch(type) 
    { 
     case kIOHIDElementTypeInput_Misc: 
      return "kIOHidElementTypeInput_Misc"; 
    } 
} 

и так далее.

+0

да. Я надеялся, что было что-то готовое, это займет много времени ... – Ross

+3

Я бы определенно использовал '#define ENTRY (e_) case e_: return #e_;' вместо повторения строки ... –