40#define __TALLOC_STRING_LINE1__(s) #s
41#define __TALLOC_STRING_LINE2__(s) __TALLOC_STRING_LINE1__(s)
42#define __TALLOC_STRING_LINE3__ __TALLOC_STRING_LINE2__(__LINE__)
43#define __location__ __FILE__ ":" __TALLOC_STRING_LINE3__
46#ifndef TALLOC_DEPRECATED
47#define TALLOC_DEPRECATED 0
50#ifndef PRINTF_ATTRIBUTE
56#define PRINTF_ATTRIBUTE(a1, a2) __attribute__ ((format (__printf__, a1, a2)))
58#define PRINTF_ATTRIBUTE(a1, a2)
65#define _TALLOC_TYPEOF(ptr) __typeof__(ptr)
66#define talloc_set_destructor(ptr, function) \
68 int (*_talloc_destructor_fn)(_TALLOC_TYPEOF(ptr)) = (function); \
69 _talloc_set_destructor((ptr), (int (*)(void *))_talloc_destructor_fn); \
73#define talloc_steal(ctx, ptr) ({ _TALLOC_TYPEOF(ptr) __talloc_steal_ret = (_TALLOC_TYPEOF(ptr))_talloc_steal((ctx),(ptr)); __talloc_steal_ret; })
75#define talloc_set_destructor(ptr, function) \
76 _talloc_set_destructor((ptr), (int (*)(void *))(function))
77#define _TALLOC_TYPEOF(ptr) void *
78#define talloc_steal(ctx, ptr) (_TALLOC_TYPEOF(ptr))_talloc_steal((ctx),(ptr))
81#define talloc_reference(ctx, ptr) (_TALLOC_TYPEOF(ptr))_talloc_reference((ctx),(ptr))
82#define talloc_move(ctx, ptr) (_TALLOC_TYPEOF(*(ptr)))_talloc_move((ctx),(void *)(ptr))
85#define talloc(ctx, type) (type *)talloc_named_const(ctx, sizeof(type), #type)
86#define talloc_size(ctx, size) talloc_named_const(ctx, size, __location__)
87#define talloc_ptrtype(ctx, ptr) (_TALLOC_TYPEOF(ptr))talloc_size(ctx, sizeof(*(ptr)))
89#define talloc_new(ctx) talloc_named_const(ctx, 0, "talloc_new: " __location__)
91#define talloc_zero(ctx, type) (type *)_talloc_zero(ctx, sizeof(type), #type)
92#define talloc_zero_size(ctx, size) _talloc_zero(ctx, size, __location__)
94#define talloc_zero_array(ctx, type, count) (type *)_talloc_zero_array(ctx, sizeof(type), count, #type)
95#define talloc_array(ctx, type, count) (type *)_talloc_array(ctx, sizeof(type), count, #type)
96#define talloc_array_size(ctx, size, count) _talloc_array(ctx, size, count, __location__)
97#define talloc_array_ptrtype(ctx, ptr, count) (_TALLOC_TYPEOF(ptr))talloc_array_size(ctx, sizeof(*(ptr)), count)
99#define talloc_realloc(ctx, p, type, count) (type *)_talloc_realloc_array(ctx, p, sizeof(type), count, #type)
100#define talloc_realloc_size(ctx, ptr, size) _talloc_realloc(ctx, ptr, size, __location__)
102#define talloc_memdup(t, p, size) _talloc_memdup(t, p, size, __location__)
104#define talloc_set_type(ptr, type) talloc_set_name_const(ptr, #type)
105#define talloc_get_type(ptr, type) (type *)talloc_check_name(ptr, #type)
107#define talloc_find_parent_bytype(ptr, type) (type *)talloc_find_parent_byname(ptr, #type)
110#define talloc_zero_p(ctx, type) talloc_zero(ctx, type)
111#define talloc_p(ctx, type) talloc(ctx, type)
112#define talloc_array_p(ctx, type, count) talloc_array(ctx, type, count)
113#define talloc_realloc_p(ctx, p, type, count) talloc_realloc(ctx, p, type, count)
114#define talloc_destroy(ctx) talloc_free(ctx)
118void *
_talloc(
const void *context,
size_t size);
136void *
_talloc_realloc(const
void *context,
void *ptr,
size_t size, const
char *name);
138void *
_talloc_move(const
void *new_ctx, const
void *pptr);
142 void (*callback)(const
void *ptr,
143 int depth,
int max_depth,
154void *
_talloc_zero(const
void *ctx,
size_t size, const
char *name);
155void *
_talloc_memdup(const
void *t, const
void *p,
size_t size, const
char *name);
163void *
_talloc_array(const
void *ctx,
size_t el_size,
unsigned count, const
char *name);
static uint32_t count(const http_directive *list, lwc_string *key)
size_t talloc_get_size(const void *ctx)
void * _talloc_realloc_array(const void *ctx, void *ptr, size_t el_size, unsigned count, const char *name)
void * _talloc_zero(const void *ctx, size_t size, const char *name)
void talloc_report_depth_file(const void *ptr, int depth, int max_depth, FILE *f)
void * talloc_init(const char *fmt,...) PRINTF_ATTRIBUTE(1
int talloc_increase_ref_count(const void *ptr)
const char * talloc_parent_name(const void *ptr)
void int talloc_free(void *ptr)
char char char char void * _talloc_array(const void *ctx, size_t el_size, unsigned count, const char *name)
void talloc_disable_null_tracking(void)
void * _talloc_reference(const void *context, const void *ptr)
void * _talloc_move(const void *new_ctx, const void *pptr)
char char char char * talloc_asprintf_append(char *s, const char *fmt,...) PRINTF_ATTRIBUTE(2
char * talloc_strndup(const void *t, const char *p, size_t n)
void * _talloc_memdup(const void *t, const void *p, size_t size, const char *name)
void * _talloc_steal(const void *new_ctx, const void *ptr)
void * _talloc_realloc(const void *context, void *ptr, size_t size, const char *name)
void * talloc_realloc_fn(const void *context, void *ptr, size_t size)
char * talloc_append_string(const void *t, char *orig, const char *append)
void talloc_report(const void *ptr, FILE *f)
char char * talloc_vasprintf_append(char *s, const char *fmt, va_list ap) PRINTF_ATTRIBUTE(2
void * talloc_autofree_context(void)
void talloc_report_depth_cb(const void *ptr, int depth, int max_depth, void(*callback)(const void *ptr, int depth, int max_depth, int is_ref, void *private_data), void *private_data)
void * talloc_find_parent_byname(const void *ctx, const char *name)
void talloc_report_full(const void *ptr, FILE *f)
char char char * talloc_asprintf(const void *t, const char *fmt,...) PRINTF_ATTRIBUTE(2
void * _talloc(const void *context, size_t size)
void * _talloc_zero_array(const void *ctx, size_t el_size, unsigned count, const char *name)
void * talloc_parent(const void *ptr)
char * talloc_vasprintf(const void *t, const char *fmt, va_list ap) PRINTF_ATTRIBUTE(2
int talloc_is_parent(const void *context, const void *ptr)
size_t talloc_total_size(const void *ptr)
int talloc_unlink(const void *context, void *ptr)
void void * talloc_named_const(const void *context, size_t size, const char *name)
const char * talloc_get_name(const void *ptr)
void talloc_free_children(void *ptr)
const char * talloc_set_name(const void *ptr, const char *fmt,...) PRINTF_ATTRIBUTE(2
void talloc_enable_leak_report_full(void)
void talloc_show_parents(const void *context, FILE *file)
size_t talloc_total_blocks(const void *ptr)
void talloc_enable_leak_report(void)
size_t talloc_reference_count(const void *ptr)
const char void talloc_set_name_const(const void *ptr, const char *name)
void talloc_enable_null_tracking(void)
void _talloc_set_destructor(const void *ptr, int(*destructor)(void *))
void * talloc_named(const void *context, size_t size, const char *fmt,...) PRINTF_ATTRIBUTE(3
char * talloc_strdup(const void *t, const char *p)
void * talloc_check_name(const void *ptr, const char *name)
#define PRINTF_ATTRIBUTE(a1, a2)