diff options
Diffstat (limited to 'cudl.h')
| -rw-r--r-- | cudl.h | 49 | 
1 files changed, 49 insertions, 0 deletions
| @@ -0,0 +1,49 @@ +#ifndef cudl_h_INCLUDED +#define cudl_h_INCLUDED + +struct cudl_array_value { +	struct cudl_value *values; +	size_t length; +}; + +struct cudl_map_value { +	struct cudl_map_field { +		char *key; +		struct cudl_value value; +	} *fields; +	size_t length; +}; + +struct cudl_value { +	union { +		char *string; +		double number; +		int boolean; +		struct array_value array; +		struct map_value map; +	} data; +	int tag; +}; + +enum { +	CUDL_TAG_NULL; +	CUDL_TAG_BOOL; +	CUDL_TAG_ARRAY; +} + +enum { +	CUDL_OK = 0; +	CUDL_ERR_OUT_OF_MEMORY; +	CUDL_ERR_EXPECTED_VALUE; +	CUDL_ERR_READING; +	CUDL_ERR_EXPECTED_BOOL_OR_NULL; +}; + +extern int cudl_err; + +void cudl_debug(struct cudl_value value); +void cudl_deinit_value(struct cudl_value value); +void cudl_parse_from_file(FILE *file, struct cudl_value *value); +size_t cudl_parse(char *input, struct cudl_value *value); + +#endif // cudl_h_INCLUDED | 
