From 35f7d3daf1658ee780e9b23e4d9c2c1dd36a2575 Mon Sep 17 00:00:00 2001 From: Allen Webster Date: Sat, 25 Sep 2021 17:44:23 -0700 Subject: [PATCH] [examples] get type info final program fully building --- examples/type_metadata/generated/meta_types.h | 4 ++-- .../type_metadata/type_info_final_program.c | 17 +++++++++++++++++ examples/type_metadata/type_metadata.c | 4 ++-- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/examples/type_metadata/generated/meta_types.h b/examples/type_metadata/generated/meta_types.h index 010e3a0..8fa2dd0 100644 --- a/examples/type_metadata/generated/meta_types.h +++ b/examples/type_metadata/generated/meta_types.h @@ -20,12 +20,12 @@ F32 r; U32 count; V2F32 *p; }; -enum Shape +typedef enum Shape { Shape_Circle = 1, Shape_Segment = 2, Shape_Polygon = 3, -}; +} Shape; TypeInfo* type_info_from_shape(Shape v); U32 max_slot_from_shape(Shape v); #endif // META_TYEPS_H diff --git a/examples/type_metadata/type_info_final_program.c b/examples/type_metadata/type_info_final_program.c index 96912f2..27708bc 100644 --- a/examples/type_metadata/type_info_final_program.c +++ b/examples/type_metadata/type_info_final_program.c @@ -6,9 +6,26 @@ ** */ +//~ setup base types ////////////////////////////////////////////////////////// +#include +typedef uint32_t U32; +typedef float F32; +typedef struct V2F32 V2F32; +struct V2F32 +{ + F32 x; + F32 y; +}; + +//~ include types for type info /////////////////////////////////////////////// +#include "type_info.h" + +//~ include generated type info /////////////////////////////////////////////// #include "generated/meta_types.h" #include "generated/meta_types.c" +//~ main ////////////////////////////////////////////////////////////////////// + #include int diff --git a/examples/type_metadata/type_metadata.c b/examples/type_metadata/type_metadata.c index 67e0c44..07010d9 100644 --- a/examples/type_metadata/type_metadata.c +++ b/examples/type_metadata/type_metadata.c @@ -126,7 +126,7 @@ generate_type_definitions(FILE *out, TypeInfo *first_type) case TypeKind_Enum: { MD_String8 enum_name = type->node->string; - fprintf(out, "enum %.*s\n", MD_S8VArg(enum_name)); + fprintf(out, "typedef enum %.*s\n", MD_S8VArg(enum_name)); fprintf(out, "{\n"); for (TypeEnumerant *enumerant = type->first_enumerant; enumerant != 0; @@ -136,7 +136,7 @@ generate_type_definitions(FILE *out, TypeInfo *first_type) fprintf(out, "%.*s_%.*s = %d,\n", MD_S8VArg(enum_name), MD_S8VArg(member_name), enumerant->value); } - fprintf(out, "};\n"); + fprintf(out, "} %.*s;\n", MD_S8VArg(enum_name)); }break; } }