// types.h #ifdef TYPES_SUBINCLUDE #undef TYPES_SUBINCLUDE /* * Idea i had would be to have user data point to a key-value store based on struct meta data of * our state, we would then encode into that before unloading, when we reload we check to see * what's been serialised and pull it back out in to gur new potentially changed struct, this * would in theory be more straight forward to understand than having 2 copies, or alternatively * copying them in place like i was doing before */ struct(Sdfps, field(SDL_Window *, window, NULL) field(SDL_GLContext, context, NULL) field(GLuint, vert_shader, 0) field(GLuint, frag_shader, 0) field(GLuint, shader_program, 0) ) #else #include typedef int8_t s8; typedef uint8_t u8; typedef int16_t s16; typedef uint16_t u16; typedef int32_t s32; typedef uint32_t u32; typedef int64_t s64; typedef uint64_t u64; typedef float f32; typedef double f64; /* initial struct definitions */ #define struct(TN, ...) typedef struct TN TN; struct TN { __VA_ARGS__ }; #define field(T, N, D) T N; #define TYPES_SUBINCLUDE #include __FILE__ #undef struct #undef field #endif