#ifndef sh_enums_h #define sh_enums_h #define shader_type_xmacro() \ x(fragment) \ x(vertex) typedef enum { #define x(n) shader_type_ ## n, shader_type_xmacro() #undef x shader_type_count } Shader_Type; #define sprogram_type_xmacro() \ x(graphics) typedef enum { #define x(n) sprogram_type_ ## n, sprogram_type_xmacro() #undef x sprogram_type_count } SProgram_Type; #define svariable_type_xmacro() \ x(float) \ x(vec2) \ x(vec3) \ x(vec4) \ x(mat2) \ x(mat3) \ x(mat4) typedef enum { #define x(n) svariable_type_ ## n, svariable_type_xmacro() #undef x svariable_type_count } SVariable_Type; #endif