From da16febcd7e453e26fc7eba5c33afe27f00d1134 Mon Sep 17 00:00:00 2001 From: John Mark Bell Date: Wed, 30 Jul 2008 19:59:38 +0000 Subject: Make parserutils_dict_entry public. Add basic implementations of a stack and a vector. svn path=/trunk/libparserutils/; revision=4824 --- include/parserutils/utils/dict.h | 9 ++++++++- include/parserutils/utils/stack.h | 29 +++++++++++++++++++++++++++++ include/parserutils/utils/vector.h | 31 +++++++++++++++++++++++++++++++ 3 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 include/parserutils/utils/stack.h create mode 100644 include/parserutils/utils/vector.h (limited to 'include/parserutils') diff --git a/include/parserutils/utils/dict.h b/include/parserutils/utils/dict.h index 43c96cb..7c24a2f 100644 --- a/include/parserutils/utils/dict.h +++ b/include/parserutils/utils/dict.h @@ -11,7 +11,14 @@ #include #include -struct parserutils_dict_entry; +/** + * A dictionary entry + */ +struct parserutils_dict_entry +{ + size_t len; /**< Length of data, in bytes */ + uint8_t *data; /**< Entry data */ +}; typedef struct parserutils_dict_entry parserutils_dict_entry; struct parserutils_dict; diff --git a/include/parserutils/utils/stack.h b/include/parserutils/utils/stack.h new file mode 100644 index 0000000..e9fad5a --- /dev/null +++ b/include/parserutils/utils/stack.h @@ -0,0 +1,29 @@ +/* + * This file is part of LibParserUtils. + * Licensed under the MIT License, + * http://www.opensource.org/licenses/mit-license.php + * Copyright 2008 John-Mark Bell + */ + +#ifndef parserutils_utils_stack_h_ +#define parserutils_utils_stack_h_ + +#include + +#include +#include + +struct parserutils_stack; +typedef struct parserutils_stack parserutils_stack; + +parserutils_stack *parserutils_stack_create(size_t item_size, size_t chunk_size, + parserutils_alloc alloc, void *pw); +void parserutils_stack_destroy(parserutils_stack *stack); + +parserutils_error parserutils_stack_push(parserutils_stack *stack, void *item); +parserutils_error parserutils_stack_pop(parserutils_stack *stack, void *item); + +void *parserutils_stack_get_current(parserutils_stack *stack); + +#endif + diff --git a/include/parserutils/utils/vector.h b/include/parserutils/utils/vector.h new file mode 100644 index 0000000..934ebcd --- /dev/null +++ b/include/parserutils/utils/vector.h @@ -0,0 +1,31 @@ +/* + * This file is part of LibParserUtils. + * Licensed under the MIT License, + * http://www.opensource.org/licenses/mit-license.php + * Copyright 2008 John-Mark Bell + */ + +#ifndef parserutils_utils_vector_h_ +#define parserutils_utils_vector_h_ + +#include + +#include +#include + +struct parserutils_vector; +typedef struct parserutils_vector parserutils_vector; + +parserutils_vector *parserutils_vector_create(size_t item_size, + size_t chunk_size, parserutils_alloc alloc, void *pw); +void parserutils_vector_destroy(parserutils_vector *vector); + +parserutils_error parserutils_vector_append(parserutils_vector *vector, + void *item); +parserutils_error parserutils_vector_clear(parserutils_vector *vector); +parserutils_error parserutils_vector_remove_last(parserutils_vector *vector); + +void *parserutils_vector_iterate(parserutils_vector *vector, int32_t *ctx); + +#endif + -- cgit v1.2.3