mirror of
https://github.com/ElementsProject/lightning.git
synced 2025-01-19 05:44:12 +01:00
ccan: update to get new helpers in ccan/tal
tal_dup_talarr() is simply stolen from common/utils, but tal_dup_or_null is new. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
parent
5aa8663c98
commit
8759641b06
@ -1,3 +1,3 @@
|
|||||||
CCAN imported from http://ccodearchive.net.
|
CCAN imported from http://ccodearchive.net.
|
||||||
|
|
||||||
CCAN version: init-2522-g21543f83
|
CCAN version: init-2523-gb15b3673
|
||||||
|
@ -767,11 +767,17 @@ out:
|
|||||||
}
|
}
|
||||||
|
|
||||||
void *tal_dup_(const tal_t *ctx, const void *p, size_t size,
|
void *tal_dup_(const tal_t *ctx, const void *p, size_t size,
|
||||||
size_t n, size_t extra, const char *label)
|
size_t n, size_t extra, bool nullok, const char *label)
|
||||||
{
|
{
|
||||||
void *ret;
|
void *ret;
|
||||||
size_t nbytes = size;
|
size_t nbytes = size;
|
||||||
|
|
||||||
|
if (nullok && p == NULL) {
|
||||||
|
/* take(NULL) works. */
|
||||||
|
(void)taken(p);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
if (!adjust_size(&nbytes, n)) {
|
if (!adjust_size(&nbytes, n)) {
|
||||||
if (taken(p))
|
if (taken(p))
|
||||||
tal_free(p);
|
tal_free(p);
|
||||||
@ -802,6 +808,11 @@ void *tal_dup_(const tal_t *ctx, const void *p, size_t size,
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void *tal_dup_talarr_(const tal_t *ctx, const tal_t *src TAKES, const char *label)
|
||||||
|
{
|
||||||
|
return tal_dup_(ctx, src, 1, tal_bytelen(src), 0, true, label);
|
||||||
|
}
|
||||||
|
|
||||||
void tal_set_backend(void *(*alloc_fn)(size_t size),
|
void tal_set_backend(void *(*alloc_fn)(size_t size),
|
||||||
void *(*resize_fn)(void *, size_t size),
|
void *(*resize_fn)(void *, size_t size),
|
||||||
void (*free_fn)(void *),
|
void (*free_fn)(void *),
|
||||||
|
@ -352,10 +352,21 @@ tal_t *tal_parent(const tal_t *ctx);
|
|||||||
* tal_dup - duplicate an object.
|
* tal_dup - duplicate an object.
|
||||||
* @ctx: The tal allocated object to be parent of the result (may be NULL).
|
* @ctx: The tal allocated object to be parent of the result (may be NULL).
|
||||||
* @type: the type (should match type of @p!)
|
* @type: the type (should match type of @p!)
|
||||||
* @p: the object to copy (or reparented if take())
|
* @p: the object to copy (or reparented if take()). Must not be NULL.
|
||||||
*/
|
*/
|
||||||
#define tal_dup(ctx, type, p) \
|
#define tal_dup(ctx, type, p) \
|
||||||
tal_dup_label(ctx, type, p, TAL_LABEL(type, ""))
|
tal_dup_label(ctx, type, p, TAL_LABEL(type, ""), false)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* tal_dup_or_null - duplicate an object, or just pass NULL.
|
||||||
|
* @ctx: The tal allocated object to be parent of the result (may be NULL).
|
||||||
|
* @type: the type (should match type of @p!)
|
||||||
|
* @p: the object to copy (or reparented if take())
|
||||||
|
*
|
||||||
|
* if @p is NULL, just return NULL, otherwise to tal_dup().
|
||||||
|
*/
|
||||||
|
#define tal_dup_or_null(ctx, type, p) \
|
||||||
|
tal_dup_label(ctx, type, p, TAL_LABEL(type, ""), true)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* tal_dup_arr - duplicate an array.
|
* tal_dup_arr - duplicate an array.
|
||||||
@ -369,7 +380,17 @@ tal_t *tal_parent(const tal_t *ctx);
|
|||||||
tal_dup_arr_label(ctx, type, p, n, extra, TAL_LABEL(type, "[]"))
|
tal_dup_arr_label(ctx, type, p, n, extra, TAL_LABEL(type, "[]"))
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* tal_dup_arr - duplicate a tal array.
|
||||||
|
* @ctx: The tal allocated object to be parent of the result (may be NULL).
|
||||||
|
* @type: the type (should match type of @p!)
|
||||||
|
* @p: the tal array to copy (or resized & reparented if take())
|
||||||
|
*
|
||||||
|
* The comon case of duplicating an entire tal array.
|
||||||
|
*/
|
||||||
|
#define tal_dup_talarr(ctx, type, p) \
|
||||||
|
((type *)tal_dup_talarr_((ctx), tal_typechk_(p, type *), \
|
||||||
|
TAL_LABEL(type, "[]")))
|
||||||
/* Lower-level interfaces, where you want to supply your own label string. */
|
/* Lower-level interfaces, where you want to supply your own label string. */
|
||||||
#define tal_label(ctx, type, label) \
|
#define tal_label(ctx, type, label) \
|
||||||
((type *)tal_alloc_((ctx), sizeof(type), false, label))
|
((type *)tal_alloc_((ctx), sizeof(type), false, label))
|
||||||
@ -379,13 +400,13 @@ tal_t *tal_parent(const tal_t *ctx);
|
|||||||
((type *)tal_alloc_arr_((ctx), sizeof(type), (count), false, label))
|
((type *)tal_alloc_arr_((ctx), sizeof(type), (count), false, label))
|
||||||
#define tal_arrz_label(ctx, type, count, label) \
|
#define tal_arrz_label(ctx, type, count, label) \
|
||||||
((type *)tal_alloc_arr_((ctx), sizeof(type), (count), true, label))
|
((type *)tal_alloc_arr_((ctx), sizeof(type), (count), true, label))
|
||||||
#define tal_dup_label(ctx, type, p, label) \
|
#define tal_dup_label(ctx, type, p, label, nullok) \
|
||||||
((type *)tal_dup_((ctx), tal_typechk_(p, type *), \
|
((type *)tal_dup_((ctx), tal_typechk_(p, type *), \
|
||||||
sizeof(type), 1, 0, \
|
sizeof(type), 1, 0, nullok, \
|
||||||
label))
|
label))
|
||||||
#define tal_dup_arr_label(ctx, type, p, n, extra, label) \
|
#define tal_dup_arr_label(ctx, type, p, n, extra, label) \
|
||||||
((type *)tal_dup_((ctx), tal_typechk_(p, type *), \
|
((type *)tal_dup_((ctx), tal_typechk_(p, type *), \
|
||||||
sizeof(type), (n), (extra), \
|
sizeof(type), (n), (extra), false, \
|
||||||
label))
|
label))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -505,7 +526,9 @@ void *tal_alloc_arr_(const tal_t *ctx, size_t bytes, size_t count, bool clear,
|
|||||||
const char *label);
|
const char *label);
|
||||||
|
|
||||||
void *tal_dup_(const tal_t *ctx, const void *p TAKES, size_t size,
|
void *tal_dup_(const tal_t *ctx, const void *p TAKES, size_t size,
|
||||||
size_t n, size_t extra, const char *label);
|
size_t n, size_t extra, bool nullok, const char *label);
|
||||||
|
void *tal_dup_talarr_(const tal_t *ctx, const tal_t *src TAKES,
|
||||||
|
const char *label);
|
||||||
|
|
||||||
tal_t *tal_steal_(const tal_t *new_parent, const tal_t *t);
|
tal_t *tal_steal_(const tal_t *new_parent, const tal_t *t);
|
||||||
|
|
||||||
|
@ -175,16 +175,6 @@ void tal_arr_remove_(void *p, size_t elemsize, size_t n)
|
|||||||
tal_resize((char **)p, len - elemsize);
|
tal_resize((char **)p, len - elemsize);
|
||||||
}
|
}
|
||||||
|
|
||||||
void *tal_dup_talarr_(const tal_t *ctx, const tal_t *src TAKES, const char *label)
|
|
||||||
{
|
|
||||||
if (!src) {
|
|
||||||
/* Correctly handle TAKES on a NULL `src`. */
|
|
||||||
(void) taken(src);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
return tal_dup_(ctx, src, 1, tal_bytelen(src), 0, label);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Check for valid UTF-8 */
|
/* Check for valid UTF-8 */
|
||||||
bool utf8_check(const void *vbuf, size_t buflen)
|
bool utf8_check(const void *vbuf, size_t buflen)
|
||||||
{
|
{
|
||||||
|
@ -85,17 +85,6 @@ void clear_softref_(const tal_t *outer, size_t outersize, void **ptr);
|
|||||||
#define tal_arr_remove(p, n) tal_arr_remove_((p), sizeof(**p), (n))
|
#define tal_arr_remove(p, n) tal_arr_remove_((p), sizeof(**p), (n))
|
||||||
void tal_arr_remove_(void *p, size_t elemsize, size_t n);
|
void tal_arr_remove_(void *p, size_t elemsize, size_t n);
|
||||||
|
|
||||||
/**
|
|
||||||
* The comon case of duplicating an entire tal array.
|
|
||||||
*
|
|
||||||
* A macro because we must not double-evaluate p.
|
|
||||||
*/
|
|
||||||
#define tal_dup_talarr(ctx, type, p) \
|
|
||||||
((type *)tal_dup_talarr_((ctx), tal_typechk_(p, type *), \
|
|
||||||
TAL_LABEL(type, "[]")))
|
|
||||||
void *tal_dup_talarr_(const tal_t *ctx, const tal_t *src TAKES,
|
|
||||||
const char *label);
|
|
||||||
|
|
||||||
/* Check for valid UTF-8 */
|
/* Check for valid UTF-8 */
|
||||||
bool utf8_check(const void *buf, size_t buflen);
|
bool utf8_check(const void *buf, size_t buflen);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user