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.
|
* @param buffer_size the size of the to buffer.
|
||||||
*/
|
*/
|
||||||
void libab_sanitize(char* to, const char* from, size_t buffer_size);
|
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
|
#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';
|
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