From ea7cd94f7aeb177618db3907a6c86b7252e018f0 Mon Sep 17 00:00:00 2001 From: quou Date: Sat, 1 Jun 2024 12:19:16 +1000 Subject: Initial commit. --- cfgparse.h | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 cfgparse.h (limited to 'cfgparse.h') diff --git a/cfgparse.h b/cfgparse.h new file mode 100644 index 0000000..f8eeedb --- /dev/null +++ b/cfgparse.h @@ -0,0 +1,58 @@ +#ifndef cfgparse_h +#define cfgparse_h + +#include "memory.h" + +typedef enum { + cfg_type_int, + cfg_type_string, + cfg_type_data, + cfg_type_none +} cfg_Type; + +typedef struct { + int size; + char* data; +} cfg_Data; + +typedef struct cfg_Prop { + char name[28]; + cfg_Type type; + union { + int num; + cfg_Data data; + char* str; + } as; + struct cfg_Prop* next; +} cfg_Prop; + +typedef struct cfg_Object { + char name[28]; + int prop_count; + cfg_Prop* props; + struct cfg_Object* next; +} cfg_Object; + +cfg_Object* cfg_parse(const char* src, Arena* arena); +const cfg_Prop* find_prop( + const cfg_Object* obj, + const char* name +); +const cfg_Prop* find_prop_of( + const cfg_Object* obj, + const char* name, + cfg_Type type +); + +int find_int_default( + const cfg_Object* obj, + const char* name, + int def +); +const char* find_string_default( + const cfg_Object* obj, + const char* name, + const char* def +); + +#endif -- cgit v1.2.3-54-g00ecf