Mercurial > hg > th-libs
diff th_config.h @ 0:bd61a80a6c54
Initial import into Mercurial repository. Discarding old cvs/svn history
here, because it's cluttered and commit messages are mostly crap.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Wed, 26 Mar 2008 04:41:58 +0200 |
parents | |
children | 5a327a2988fa |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/th_config.h Wed Mar 26 04:41:58 2008 +0200 @@ -0,0 +1,62 @@ +/* + * Very simple configuration file parsing functions + * Programmed and designed by Matti 'ccr' Hamalainen + * (C) Copyright 2004-2007 Tecnic Software productions (TNSP) + * + * Please read file 'COPYING' for information on license and distribution. + */ +#ifndef _TH_CONFIG_H +#define _TH_CONFIG_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include "th_util.h" +#include <stdio.h> + +/* + * Type definations + */ +enum ITEM_TYPE { + ITEM_BLOCK = 1, + ITEM_STRING, + ITEM_INT, + ITEM_UINT, + ITEM_BOOL +}; + + +typedef struct tconfignode { + char *itemName; /* Config item name */ + int itemType; /* Type of the item */ + void *itemData; /* Data / value */ + + BOOL (*itemValidate)(struct tconfignode *); + + struct tconfignode *pNext, *pPrev; +} t_config_item; + + +typedef struct { + t_config_item *pItems; +} t_config; + + +/* + * Functions + */ +t_config * th_config_new(void); +int th_config_read(char *, t_config *); +void th_config_free(t_config *); +int th_config_write(FILE *, t_config *); + +int th_config_add_int(t_config *cfg, char *itemName, BOOL (*itemValidate)(t_config_item *), int *itemData, int itemDef); +int th_config_add_uint(t_config *cfg, char *itemName, BOOL (*itemValidate)(t_config_item *), unsigned int *itemData, unsigned int itemDef); +int th_config_add_str(t_config *cfg, char *itemName, BOOL (*itemValidate)(t_config_item *), char **itemData, char *itemDef); +int th_config_add_bool(t_config *cfg, char *itemName, BOOL (*itemValidate)(t_config_item *), BOOL *itemData, BOOL itemDef); + +#ifdef __cplusplus +} +#endif +#endif /* _TH_CONFIG_H */