1.2 KiB
1.2 KiB
cmeta
Warning
Work in progress. This is not finished at all, I'm just experimenting.
Single Heaer Meta Programming Header Library for C. The same header for both codegen and runtime.
Current limitations
- Only parses
typedef struct { ... } type_name; - Will generate colliding definitions in case of types with the same name
Quick start
- Create
main.c
typedef struct {
int int_field;
const char *const_char_star_field;
} My_Struct;
int main(void) {
return 0;
}
- Create
cmeta.c
You only have to call process_file with a file to generate type infos etc in cmeta.h.
#define CMETA_COMPTIME
#include "cmeta.h"
int main(void) {
if (!process_file("./main.c")) return 1;
return 0;
}
- Build and cmeta
$ gcc cmeta.c -o cmeta
$ ./cmeta
- Enjoy!
You can now inspect your types!
#include "cmeta.h"
typedef struct {
int int_field;
const char* const_char_star_field;
} My_Struct;
int main(void) {
printf("My_Struct.name = %s\n", my_struct_info.name);
printf("My_Struct.fields_count = %zu\n", my_struct_info.fields_count);
return 0;
}
It runs gcc -E, so it process everything your code uses, including structs from cmeta itself.