#ifndef INC_UTIL_H
#define INC_UTIL_H

// This is wacky preprocessor magic that allows us to count the number of
// members of an enum. Unfortunately, it doesn't work with enum classes, so we
// have to use C-style enums.
#define CountedEnum(NAME, TYPE, ...)                                           \
  typedef enum { __VA_ARGS__ } NAME;                                           \
  static const size_t NAME##_COUNT = sizeof((int[]){__VA_ARGS__}) / sizeof(int);

#endif // INC_UTIL_H