List all waffle_enum items in a big #define to avoid duplicating the list when a case is needed for each item, e.g. enum to string.
Signed-off-by: Frank Henigman <fjhenig...@google.com> --- include/waffle/waffle.h | 150 ++++++++++++++++++++++++++---------------------- 1 file changed, 81 insertions(+), 69 deletions(-) diff --git a/include/waffle/waffle.h b/include/waffle/waffle.h index 297a487..dd39f2c 100644 --- a/include/waffle/waffle.h +++ b/include/waffle/waffle.h @@ -98,80 +98,92 @@ waffle_error_to_string(enum waffle_error e); // waffle_enum // --------------------------------------------------------------------------- -enum waffle_enum { - // ------------------------------------------------------------------ - // Generic - // ------------------------------------------------------------------ - - WAFFLE_DONT_CARE = -1, - WAFFLE_NONE = 0, - - // ------------------------------------------------------------------ - // For waffle_init() - // ------------------------------------------------------------------ - - WAFFLE_PLATFORM = 0x0010, - WAFFLE_PLATFORM_ANDROID = 0x0011, - WAFFLE_PLATFORM_CGL = 0x0012, - WAFFLE_PLATFORM_GLX = 0x0013, - WAFFLE_PLATFORM_WAYLAND = 0x0014, - WAFFLE_PLATFORM_X11_EGL = 0x0015, - WAFFLE_PLATFORM_GBM = 0x0016, - WAFFLE_PLATFORM_WGL = 0x0017, - WAFFLE_PLATFORM_NACL = 0x0018, - - // ------------------------------------------------------------------ - // For waffle_config_choose() - // ------------------------------------------------------------------ - - WAFFLE_CONTEXT_API = 0x020a, - WAFFLE_CONTEXT_OPENGL = 0x020b, - WAFFLE_CONTEXT_OPENGL_ES1 = 0x020c, - WAFFLE_CONTEXT_OPENGL_ES2 = 0x020d, - WAFFLE_CONTEXT_OPENGL_ES3 = 0x0214, - - WAFFLE_CONTEXT_MAJOR_VERSION = 0x020e, - WAFFLE_CONTEXT_MINOR_VERSION = 0x020f, - - WAFFLE_CONTEXT_PROFILE = 0x0210, - WAFFLE_CONTEXT_CORE_PROFILE = 0x0211, - WAFFLE_CONTEXT_COMPATIBILITY_PROFILE = 0x0212, +#define WAFFLE_ENUM_LIST_ANY(f) \ + /* ----------------------------------------------------------------*/ \ + /* Generic */ \ + /* ----------------------------------------------------------------*/ \ + \ + f(WAFFLE_DONT_CARE , -1) \ + f(WAFFLE_NONE , 0) \ + \ + /* ----------------------------------------------------------------*/ \ + /* For waffle_init() */ \ + /* ----------------------------------------------------------------*/ \ + \ + f(WAFFLE_PLATFORM , 0x0010) \ + f(WAFFLE_PLATFORM_ANDROID , 0x0011) \ + f(WAFFLE_PLATFORM_CGL , 0x0012) \ + f(WAFFLE_PLATFORM_GLX , 0x0013) \ + f(WAFFLE_PLATFORM_WAYLAND , 0x0014) \ + f(WAFFLE_PLATFORM_X11_EGL , 0x0015) \ + f(WAFFLE_PLATFORM_GBM , 0x0016) \ + f(WAFFLE_PLATFORM_WGL , 0x0017) \ + f(WAFFLE_PLATFORM_NACL , 0x0018) \ + \ + /* ----------------------------------------------------------------*/ \ + /* For waffle_config_choose() */ \ + /* ----------------------------------------------------------------*/ \ + \ + f(WAFFLE_CONTEXT_API , 0x020a) \ + f(WAFFLE_CONTEXT_OPENGL , 0x020b) \ + f(WAFFLE_CONTEXT_OPENGL_ES1 , 0x020c) \ + f(WAFFLE_CONTEXT_OPENGL_ES2 , 0x020d) \ + f(WAFFLE_CONTEXT_OPENGL_ES3 , 0x0214) \ + \ + f(WAFFLE_CONTEXT_MAJOR_VERSION , 0x020e) \ + f(WAFFLE_CONTEXT_MINOR_VERSION , 0x020f) \ + \ + f(WAFFLE_CONTEXT_PROFILE , 0x0210) \ + f(WAFFLE_CONTEXT_CORE_PROFILE , 0x0211) \ + f(WAFFLE_CONTEXT_COMPATIBILITY_PROFILE , 0x0212) \ + \ + f(WAFFLE_RED_SIZE , 0x0201) \ + f(WAFFLE_GREEN_SIZE , 0x0202) \ + f(WAFFLE_BLUE_SIZE , 0x0203) \ + f(WAFFLE_ALPHA_SIZE , 0x0204) \ + \ + f(WAFFLE_DEPTH_SIZE , 0x0205) \ + f(WAFFLE_STENCIL_SIZE , 0x0206) \ + \ + f(WAFFLE_SAMPLE_BUFFERS , 0x0207) \ + f(WAFFLE_SAMPLES , 0x0208) \ + \ + f(WAFFLE_DOUBLE_BUFFERED , 0x0209) \ + \ + f(WAFFLE_ACCUM_BUFFER , 0x0213) \ + \ + /* ----------------------------------------------------------------*/ \ + /* For waffle_dl_sym() */ \ + /* ----------------------------------------------------------------*/ \ + \ + f(WAFFLE_DL_OPENGL , 0x0301) \ + f(WAFFLE_DL_OPENGL_ES1 , 0x0302) \ + f(WAFFLE_DL_OPENGL_ES2 , 0x0303) \ + f(WAFFLE_DL_OPENGL_ES3 , 0x0304) \ + \ + /* ----------------------------------------------------------------*/ \ + /* For waffle_window */ \ + /* ----------------------------------------------------------------*/ \ + \ + f(WAFFLE_WINDOW_WIDTH , 0x0310) \ + f(WAFFLE_WINDOW_HEIGHT , 0x0311) #if WAFFLE_API_VERSION >= 0x0103 - WAFFLE_CONTEXT_FORWARD_COMPATIBLE = 0x0215, - WAFFLE_CONTEXT_DEBUG = 0x0216, +#define WAFFLE_ENUM_LIST_0103(f) \ + f(WAFFLE_CONTEXT_FORWARD_COMPATIBLE , 0x0215) \ + f(WAFFLE_CONTEXT_DEBUG , 0x0216) +#else +#define WAFFLE_ENUM_LIST_0103(f) #endif - WAFFLE_RED_SIZE = 0x0201, - WAFFLE_GREEN_SIZE = 0x0202, - WAFFLE_BLUE_SIZE = 0x0203, - WAFFLE_ALPHA_SIZE = 0x0204, - - WAFFLE_DEPTH_SIZE = 0x0205, - WAFFLE_STENCIL_SIZE = 0x0206, - - WAFFLE_SAMPLE_BUFFERS = 0x0207, - WAFFLE_SAMPLES = 0x0208, - - WAFFLE_DOUBLE_BUFFERED = 0x0209, +#define WAFFLE_ENUM_LIST(f) \ + WAFFLE_ENUM_LIST_ANY(f) \ + WAFFLE_ENUM_LIST_0103(f) - WAFFLE_ACCUM_BUFFER = 0x0213, - - // ------------------------------------------------------------------ - // For waffle_dl_sym() - // ------------------------------------------------------------------ - - WAFFLE_DL_OPENGL = 0x0301, - WAFFLE_DL_OPENGL_ES1 = 0x0302, - WAFFLE_DL_OPENGL_ES2 = 0x0303, - WAFFLE_DL_OPENGL_ES3 = 0x0304, - - // ------------------------------------------------------------------ - // For waffle_window - // ------------------------------------------------------------------ - - WAFFLE_WINDOW_WIDTH = 0x0310, - WAFFLE_WINDOW_HEIGHT = 0x0311, +enum waffle_enum { +#define ENUM_ITEM(name, value) name = value, +WAFFLE_ENUM_LIST(ENUM_ITEM) +#undef ENUM_ITEM }; const char* -- 2.2.0.rc0.207.ga3a616c _______________________________________________ waffle mailing list waffle@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/waffle