Merge branch 'develop' into #28-issue
This commit is contained in:
		
						commit
						cdbe0fe4a6
					
				| @ -21,7 +21,7 @@ extern void array_reverse(vtype_array* x) Nonnull__(1); | |||||||
| #define array_pop(x, value, data, callback)   _LIBCDSB_Generic(libcdsb_array, find, value)(x, value, data, callback, 0, 1) | #define array_pop(x, value, data, callback)   _LIBCDSB_Generic(libcdsb_array, find, value)(x, value, data, callback, 0, 1) | ||||||
| #define array_find(x, value, data, callback)  _LIBCDSB_Generic(libcdsb_array, find, value)(x, value, data, callback, 0, 0) | #define array_find(x, value, data, callback)  _LIBCDSB_Generic(libcdsb_array, find, value)(x, value, data, callback, 0, 0) | ||||||
| #define array_rfind(x, value, data, callback) _LIBCDSB_Generic(libcdsb_array, find, value)(x, value, data, callback, 1, 0) | #define array_rfind(x, value, data, callback) _LIBCDSB_Generic(libcdsb_array, find, value)(x, value, data, callback, 1, 0) | ||||||
| #define list_countof(x, value)                _LIBCDSB_Generic(libcdsb_array, count, value)(x, value) | #define array_countof(x, value)               _LIBCDSB_Generic(libcdsb_array, count, value)(x, value) | ||||||
| #define array_remove(x, value)                array_pop(x, value, 0, 0) | #define array_remove(x, value)                array_pop(x, value, 0, 0) | ||||||
| #define in_array(x, value)                    (array_find(x, value, 0, 0) == 0) | #define in_array(x, value)                    (array_find(x, value, 0, 0) == 0) | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -8,9 +8,8 @@ | |||||||
| 
 | 
 | ||||||
| #define vset_foreach(x, data, callback) libcdsb_vset_foreach(x, data, callback, 0) | #define vset_foreach(x, data, callback) libcdsb_vset_foreach(x, data, callback, 0) | ||||||
| 
 | 
 | ||||||
| extern bool libcdsb_vset_insert(vtype_set* x, const void* value, vtype type) LIBCDSB_nn12__; | extern bool libcdsb_vset_insert(vtype_set* x, const void* value, vtype type)                                             Nonnull__(1); | ||||||
| 
 |  | ||||||
| extern int libcdsb_vset_find   (vtype_set* x, const void* value, vtype type, void* data, vset_access_callback, bool cut) Nonnull__(1); | extern int libcdsb_vset_find   (vtype_set* x, const void* value, vtype type, void* data, vset_access_callback, bool cut) Nonnull__(1); | ||||||
| extern int libcdsb_vset_foreach(vtype_set* x, void* data, vset_access_callback, bool flush) LIBCDSB_nn13__; | extern int libcdsb_vset_foreach(vtype_set* x, void* data, vset_access_callback, bool flush)                            Nonnull__(1,3); | ||||||
| 
 | 
 | ||||||
| #endif /* LIBCDSB_EXTRA_SET_H */ | #endif /* LIBCDSB_EXTRA_SET_H */ | ||||||
|  | |||||||
| @ -32,9 +32,9 @@ extern rbnode_t* libcdsb_rbtree_node_delete(rbnode_t** root, rbnode_t* node) | |||||||
| extern void* libcdsb_rbtree_duplicate(const rbnode_t* s, void* (*node_duplicate)(void* src, void* parent, void* info), void* info)                                        wur__   Nonnull__(1); | extern void* libcdsb_rbtree_duplicate(const rbnode_t* s, void* (*node_duplicate)(void* src, void* parent, void* info), void* info)                                        wur__   Nonnull__(1); | ||||||
| extern int   libcdsb_rbtree_compare  (const rbnode_t* s0, const rbnode_t* s1, int (*node_compare)(const rbnode_t* s0, const rbnode_t* s1, void* info), void* info) pure__ wur__ Nonnull__(1,2); | extern int   libcdsb_rbtree_compare  (const rbnode_t* s0, const rbnode_t* s1, int (*node_compare)(const rbnode_t* s0, const rbnode_t* s1, void* info), void* info) pure__ wur__ Nonnull__(1,2); | ||||||
| 
 | 
 | ||||||
| extern hash_t libcdsb_rbtree_hash(const void* s, hash_t (*node_hash)(const void* s, void* info), void* info) pure__ wur__ Nonnull__(1,2); | extern hash_t libcdsb_rbtree_hash(const void* s, hash_t (*node_hash)(const void* s, void* info), void* info) pure__ wur__ Nonnull__(1); | ||||||
| extern size_t libcdsb_rbtree_size(const void* s)                                                             pure__ wur__   Nonnull__(1); | extern size_t libcdsb_rbtree_size(const void* s)                                                             pure__ wur__ Nonnull__(1); | ||||||
| extern void   libcdsb_rbtree_free(void* x, void (*node_free)(void* x, void* info), void* info)                              Nonnull__(1); | extern void   libcdsb_rbtree_free(void* x, void (*node_free)(void* x, void* info), void* info)                            Nonnull__(1); | ||||||
| 
 | 
 | ||||||
| #define rbtree_duplicate libcdsb_rbtree_duplicate | #define rbtree_duplicate libcdsb_rbtree_duplicate | ||||||
| #define rbtree_compare   libcdsb_rbtree_compare | #define rbtree_compare   libcdsb_rbtree_compare | ||||||
|  | |||||||
| @ -11,7 +11,7 @@ | |||||||
| typedef union { | typedef union { | ||||||
|     void* ptr; bool    b; |     void* ptr; bool    b; | ||||||
|     str_t   s; arr_t   a; list_t  l; |     str_t   s; arr_t   a; list_t  l; | ||||||
|     map_t   m; set_t  vs; |     map_t   m; set_t  vs; dict_t vd; | ||||||
|     u8_t   u8; u16_t u16; u32_t u32; u64_t u64; |     u8_t   u8; u16_t u16; u32_t u32; u64_t u64; | ||||||
|     fl_t    f; dbl_t   d; ldbl_t ld; |     fl_t    f; dbl_t   d; ldbl_t ld; | ||||||
| } var_t; | } var_t; | ||||||
|  | |||||||
| @ -55,6 +55,9 @@ char* libcdsb_strdup(const char* s) { | |||||||
|     void*  x; |     void*  x; | ||||||
|     size_t n; |     size_t n; | ||||||
| 
 | 
 | ||||||
|  |     if (is_null(s)) | ||||||
|  |         return nullptr; | ||||||
|  | 
 | ||||||
|     if ((x = malloc(n = strlen(s) + 1))) |     if ((x = malloc(n = strlen(s) + 1))) | ||||||
|         return memcpy(x, s, n); |         return memcpy(x, s, n); | ||||||
|     abort(); |     abort(); | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user