Add utility functions to create libab instances on the heap.
This commit is contained in:
parent
de0ad13785
commit
0065fe5e65
|
@ -187,5 +187,19 @@ void* libab_unwrap_param(libab_ref_vec* vec, size_t index);
|
|||
* @param buffer_size the size of the to buffer.
|
||||
*/
|
||||
void libab_sanitize(char* to, const char* from, size_t buffer_size);
|
||||
/**
|
||||
* Creates a new instance of libabacus allocated on the heap.
|
||||
* @param into the pointer into which to store the newly allocated libab instance.
|
||||
* @param parse_function the function used to parse numbers.
|
||||
* @param free_function the function used to free parsed numbers.
|
||||
*/
|
||||
libab_result libab_create_instance(libab** into,
|
||||
void* (*parse_function)(const char*),
|
||||
void (*free_function)(void*));
|
||||
/**
|
||||
* Destroys the given libabacus instance allocated on the stack.
|
||||
* @param into the reference to destroy.
|
||||
*/
|
||||
void libab_destroy_instance(libab* into);
|
||||
|
||||
#endif
|
||||
|
|
20
src/util.c
20
src/util.c
|
@ -481,3 +481,23 @@ void libab_sanitize(char* to, const char* from, size_t buffer_size) {
|
|||
}
|
||||
to[index] = '\0';
|
||||
}
|
||||
|
||||
libab_result libab_create_instance(libab** into,
|
||||
void* (*parse_function)(const char*),
|
||||
void (*free_function)(void*)) {
|
||||
libab_result result = LIBAB_SUCCESS;
|
||||
if((*into = malloc(sizeof(**into)))) {
|
||||
result = libab_init(*into, parse_function, free_function);
|
||||
if(result != LIBAB_SUCCESS) {
|
||||
free(*into);
|
||||
*into = NULL;
|
||||
}
|
||||
} else {
|
||||
result = LIBAB_MALLOC;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
void libab_destroy_instance(libab* into) {
|
||||
libab_free(into);
|
||||
free(into);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user