|
|
@ -30,6 +30,7 @@ struct __bencode_free_list; |
|
|
typedef enum bencode_type bencode_type_t; |
|
|
typedef enum bencode_type bencode_type_t; |
|
|
typedef struct bencode_buffer bencode_buffer_t; |
|
|
typedef struct bencode_buffer bencode_buffer_t; |
|
|
typedef struct bencode_item bencode_item_t; |
|
|
typedef struct bencode_item bencode_item_t; |
|
|
|
|
|
typedef void (*free_func_t)(void *); |
|
|
|
|
|
|
|
|
enum bencode_type { |
|
|
enum bencode_type { |
|
|
BENCODE_INVALID = 0, |
|
|
BENCODE_INVALID = 0, |
|
|
@ -84,7 +85,11 @@ bencode_item_t *bencode_list(bencode_buffer_t *buf); |
|
|
|
|
|
|
|
|
/* Adds a pointer to the bencode_buffer_t object's internal free list. When the bencode_buffer_t |
|
|
/* Adds a pointer to the bencode_buffer_t object's internal free list. When the bencode_buffer_t |
|
|
* object is destroyed, BENCODE_FREE will be called on this pointer. */ |
|
|
* object is destroyed, BENCODE_FREE will be called on this pointer. */ |
|
|
void bencode_buffer_freelist_add(bencode_buffer_t *buf, void *); |
|
|
|
|
|
|
|
|
static inline void bencode_buffer_freelist_add(bencode_buffer_t *buf, void *); |
|
|
|
|
|
|
|
|
|
|
|
/* Similar to bencode_buffer_freelist_add(), but instead of freeing/destroying the object at the |
|
|
|
|
|
* given pointer with BENCODE_FREE, the specified destroy function is called. */ |
|
|
|
|
|
void bencode_buffer_destroy_add(bencode_buffer_t *buf, free_func_t, void *); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -460,4 +465,8 @@ static inline str *bencode_get_str(bencode_item_t *in, str *out) { |
|
|
return out; |
|
|
return out; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
static inline void bencode_buffer_freelist_add(bencode_buffer_t *buf, void *p) { |
|
|
|
|
|
bencode_buffer_destroy_add(buf, BENCODE_FREE, p); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
#endif |
|
|
#endif |