* talloc, talloc_free
*/
#define talloc_set_destructor(ptr, function) \
- _talloc_set_destructor((ptr), typesafe_cb_def(int, (function), (ptr)))
+ _talloc_set_destructor((ptr), typesafe_cb(int, void *, (function), (ptr)))
/**
* talloc_zero - allocate zeroed dynamic memory for a type
* 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)
*/
#define talloc_size(ctx, size) talloc_named_const(ctx, size, __location__)
-#ifdef HAVE_TYPEOF
+#if HAVE_TYPEOF
/**
* talloc_steal - change/set the parent context of a talloc pointer
* @ctx: the new parent
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);