X-Git-Url: http://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=ccan%2Ftalloc%2Ftalloc.h;h=59c132edc3a90021745f3be92a7807593cb38e65;hp=58b406e54b8002b47fce9305725b07491868174e;hb=e70eae05572ae0e7ae119ad02b278f73d4c583dc;hpb=6b694061a5f84ab19eb4db46d2463d673941da62 diff --git a/ccan/talloc/talloc.h b/ccan/talloc/talloc.h index 58b406e5..59c132ed 100644 --- a/ccan/talloc/talloc.h +++ b/ccan/talloc/talloc.h @@ -252,7 +252,7 @@ int talloc_free(const void *ptr); * b = talloc_array(a, unsigned int, 100); * * See Also: - * talloc, talloc_zero_array + * talloc, talloc_zero_array, talloc_array_length */ #define talloc_array(ctx, type, count) (type *)_talloc_array(ctx, sizeof(type), count, #type) @@ -580,7 +580,7 @@ char *talloc_strndup(const void *t, const char *p, size_t n); * * talloc_set_name_const(ptr, ptr) */ -char *talloc_asprintf(const void *t, const char *fmt, ...) PRINTF_ATTRIBUTE(2,3); +char *talloc_asprintf(const void *t, const char *fmt, ...) PRINTF_FMT(2,3); /** * talloc_append_string - concatenate onto a tallocated string @@ -610,7 +610,7 @@ char *WARN_UNUSED_RESULT talloc_append_string(char *orig, const char *append); * talloc_set_name_const(ptr, ptr) */ char *WARN_UNUSED_RESULT talloc_asprintf_append(char *s, const char *fmt, ...) - PRINTF_ATTRIBUTE(2,3); + PRINTF_FMT(2,3); /** * talloc_vasprintf - vsprintf into a talloc buffer. @@ -626,7 +626,8 @@ char *WARN_UNUSED_RESULT talloc_asprintf_append(char *s, const char *fmt, ...) * * talloc_set_name_const(ptr, ptr) */ -char *talloc_vasprintf(const void *t, const char *fmt, va_list ap) PRINTF_ATTRIBUTE(2,0); +char *talloc_vasprintf(const void *t, const char *fmt, va_list ap) + PRINTF_FMT(2,0); /** * talloc_vasprintf_append - sprintf onto the end of a talloc buffer. @@ -638,7 +639,7 @@ char *talloc_vasprintf(const void *t, const char *fmt, va_list ap) PRINTF_ATTRIB * talloc_asprintf_append(), except it takes a va_list. */ char *WARN_UNUSED_RESULT talloc_vasprintf_append(char *s, const char *fmt, va_list ap) - PRINTF_ATTRIBUTE(2,0); + PRINTF_FMT(2,0); /** * talloc_set_type - force the name of a pointer to a particular type @@ -714,7 +715,8 @@ int talloc_increase_ref_count(const void *ptr); * without releasing the name. All of the memory is released when the ptr is * freed using talloc_free(). */ -const char *talloc_set_name(const void *ptr, const char *fmt, ...) PRINTF_ATTRIBUTE(2,3); +const char *talloc_set_name(const void *ptr, const char *fmt, ...) + PRINTF_FMT(2,3); /** * talloc_set_name_const - set a talloc pointer name to a string constant @@ -745,7 +747,7 @@ void talloc_set_name_const(const void *ptr, const char *name); * talloc_set_name(ptr, fmt, ....); */ void *talloc_named(const void *context, size_t size, - const char *fmt, ...) PRINTF_ATTRIBUTE(3,4); + const char *fmt, ...) PRINTF_FMT(3,4); /** * talloc_named_const - create a specifically-named talloc pointer @@ -788,7 +790,7 @@ void *talloc_check_name(const void *ptr, const char *name); * * talloc_named(NULL, 0, fmt, ...); */ -void *talloc_init(const char *fmt, ...) PRINTF_ATTRIBUTE(1,2); +void *talloc_init(const char *fmt, ...) PRINTF_FMT(1,2); /** * talloc_total_size - get the bytes used by the pointer and its children @@ -934,12 +936,25 @@ void talloc_enable_leak_report_full(void); void *talloc_autofree_context(void); /** - * talloc_get_size - get the size of an allocation + * talloc_array_length - get the number of elements in a talloc array + * @p: the talloc pointer whose allocation to measure. + * + * This assumes that @p has been allocated as the same type. NULL returns 0. + * + * See Also: + * talloc_get_size + */ +#define talloc_array_length(p) (talloc_get_size(p) / sizeof((*p))) + +/** + * talloc_get_size - get the requested size of an allocation * @ctx: the talloc pointer whose allocation to measure. * * This function lets you know the amount of memory alloced so far by this - * context. It does NOT account for subcontext memory. This can be used to - * calculate the size of an array. + * context. It does NOT account for subcontext memory. + * + * See Also: + * talloc_array_length */ size_t talloc_get_size(const void *ctx); @@ -955,6 +970,19 @@ size_t talloc_get_size(const void *ctx); */ void *talloc_find_parent_byname(const void *ctx, const char *name); +/** + * talloc_set_allocator - set the allocations function(s) for talloc. + * @malloc: the malloc function + * @free: the free function + * @realloc: the realloc function + * + * Instead of using the standard malloc, free and realloc, talloc will use + * these replacements. @realloc will never be called with size 0 or ptr NULL. + */ +void talloc_set_allocator(void *(*malloc)(size_t size), + void (*free)(void *ptr), + void *(*realloc)(void *ptr, size_t size)); + /** * talloc_add_external - create an externally allocated node * @ctx: the parent