X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Ftal%2Ftal.h;h=865a696713c88d9243f64515200b49c7c164e554;hb=a8722345053b7cd860499aa31fd6bb414c120cc8;hp=a4c69f405f297421f34882d05a208c6253a772b4;hpb=ed39cbbd5460f9e630c5679bddeb3353033a6878;p=ccan diff --git a/ccan/tal/tal.h b/ccan/tal/tal.h index a4c69f40..865a6967 100644 --- a/ccan/tal/tal.h +++ b/ccan/tal/tal.h @@ -28,6 +28,8 @@ typedef void tal_t; * of the object is a string of the type, but if CCAN_TAL_DEBUG is * defined it also contains the file and line which allocated it. * + * tal_count() of the return will be 1. + * * Example: * int *p = tal(NULL, int); * *p = 1; @@ -71,8 +73,7 @@ void *tal_free(const tal_t *p); * @type: the type to allocate. * @count: the number to allocate. * - * Note that an object allocated with tal_arr() has a length property; - * see tal_count(). + * tal_count() of the returned pointer will be @count. * * Example: * p = tal_arr(NULL, int, 2); @@ -88,8 +89,7 @@ void *tal_free(const tal_t *p); * @type: the type to allocate. * @count: the number to allocate. * - * Note that an object allocated with tal_arrz() has a length property; - * see tal_count(). + * Equivalent to tal_arr() followed by memset() to zero. * * Example: * p = tal_arrz(NULL, int, 2); @@ -99,12 +99,12 @@ void *tal_free(const tal_t *p); tal_arrz_label(ctx, type, count, TAL_LABEL(type, "[]")) /** - * tal_resize - enlarge or reduce a tal_arr[z]. + * tal_resize - enlarge or reduce a tal object. * @p: A pointer to the tal allocated array to resize. * @count: the number to allocate. * * This returns true on success (and may move *@p), or false on failure. - * If @p has a length property, it is updated on success. + * On success, tal_count() of *@p will be @count. * * Example: * tal_resize(&p, 100); @@ -113,13 +113,11 @@ void *tal_free(const tal_t *p); tal_resize_((void **)(p), sizeof**(p), (count), false) /** - * tal_resizez - enlarge or reduce a tal_arr[z]; zero out extra. + * tal_resizez - enlarge or reduce a tal object; zero out extra. * @p: A pointer to the tal allocated array to resize. * @count: the number to allocate. * * This returns true on success (and may move *@p), or false on failure. - * If @p has a length property, it is updated on success. - * On expand, new elements are memset to 0 bytes. * * Example: * tal_resizez(&p, 200); @@ -229,7 +227,7 @@ enum tal_notify_type { /** * tal_add_notifier - add a callback function when this context changes. - * @ptr: The tal allocated object. + * @ptr: The tal allocated object, or NULL. * @types: Bitwise OR of the types the callback is interested in. * @callback: the function to call. * @@ -302,20 +300,20 @@ enum tal_notify_type { const char *tal_name(const tal_t *ptr); /** - * tal_count - get the count of objects in a tal_arr. - * @ptr: The tal allocated object array (or NULL) + * tal_count - get the count of objects in a tal object. + * @ptr: The tal allocated object (or NULL) * - * Returns 0 if @ptr has no length property or is NULL, but be aware - * that that is also a valid size! + * Returns 0 if @ptr is NULL. Note that if the allocation was done as a + * different type to @ptr, the result may not match the @count argument + * (or implied 1) of that allocation! */ #define tal_count(p) (tal_bytelen(p) / sizeof(*p)) /** - * tal_bytelen - get the count of bytes in a tal_arr. - * @ptr: The tal allocated object array (or NULL) + * tal_bytelen - get the count of bytes in a tal object. + * @ptr: The tal allocated object (or NULL) * - * Returns 0 if @ptr has no length property or NULL, but be aware that that is - * also a valid size! + * Returns 0 if @ptr is NULL. */ size_t tal_bytelen(const tal_t *ptr); @@ -368,21 +366,21 @@ tal_t *tal_parent(const tal_t *ctx); /* Lower-level interfaces, where you want to supply your own label string. */ #define tal_label(ctx, type, label) \ - ((type *)tal_alloc_((ctx), sizeof(type), false, false, label)) + ((type *)tal_alloc_((ctx), sizeof(type), false, label)) #define talz_label(ctx, type, label) \ - ((type *)tal_alloc_((ctx), sizeof(type), true, false, label)) + ((type *)tal_alloc_((ctx), sizeof(type), true, label)) #define tal_arr_label(ctx, type, count, label) \ - ((type *)tal_alloc_arr_((ctx), sizeof(type), (count), false, true, label)) + ((type *)tal_alloc_arr_((ctx), sizeof(type), (count), false, label)) #define tal_arrz_label(ctx, type, count, label) \ - ((type *)tal_alloc_arr_((ctx), sizeof(type), (count), true, true, label)) + ((type *)tal_alloc_arr_((ctx), sizeof(type), (count), true, label)) #define tal_dup_label(ctx, type, p, label) \ ((type *)tal_dup_((ctx), tal_typechk_(p, type *), \ sizeof(type), 1, 0, \ - false, label)) + label)) #define tal_dup_arr_label(ctx, type, p, n, extra, label) \ ((type *)tal_dup_((ctx), tal_typechk_(p, type *), \ sizeof(type), (n), (extra), \ - true, label)) + label)) /** * tal_set_backend - set the allocation or error functions to use @@ -496,14 +494,12 @@ bool tal_set_name_(tal_t *ctx, const char *name, bool literal); #define tal_typechk_(ptr, ptype) (ptr) #endif -void *tal_alloc_(const tal_t *ctx, size_t bytes, bool clear, - bool add_length, const char *label); +void *tal_alloc_(const tal_t *ctx, size_t bytes, bool clear, const char *label); void *tal_alloc_arr_(const tal_t *ctx, size_t bytes, size_t count, bool clear, - bool add_length, const char *label); + const char *label); void *tal_dup_(const tal_t *ctx, const void *p TAKES, size_t size, - size_t n, size_t extra, bool add_length, - const char *label); + size_t n, size_t extra, const char *label); tal_t *tal_steal_(const tal_t *new_parent, const tal_t *t);