Enumerated Types Tutorial

You can use IDA to interactively define and manipulate enumerated types in the disassembly. Consider this simple sample C program:

enum color_t {
    BLACK,          /* dark colors */
    BLUE,
    GREEN,
    CYAN,
    RED,
    MAGENTA,
    BROWN,
    LIGHTGRAY,
    DARKGRAY,           /* light colors */
    LIGHTBLUE,
    LIGHTGREEN,
    LIGHTCYAN,
    LIGHTRED,
    LIGHTMAGENTA,
    YELLOW,
    WHITE
};

enum day_t { MONDAY, TUESDAY, WEDNESDAY, THUSDAY, FRIDAY, SATURDAY, SUNDAY };

enum bool_t { FALSE, TRUE };

int is_suitable_color(day_t day,color_t color) {
  if ( (day == SUNDAY || day == SATURDAY) && color == RED ) return TRUE;
  if ( color == BLACK || color == BLUE ) return TRUE;
  return FALSE;
}
In order to use meaningful names instead of numbers, we open the enums window and press insert to define a new enumerated type.