Minor fixes & modifications

This commit is contained in:
2022-08-19 20:00:10 +03:00
parent 7618294078
commit 08aebcc15b
11 changed files with 72 additions and 98 deletions
+3 -1
View File
@@ -11,13 +11,15 @@ typedef int (*array_access_callback)(void* value, ssize_t index, vtype type, voi
/*#####################################################################################################################*/
extern void array_init (vtype_array* x, vtype type) Nonnull__(1);
inline void array_init (vtype_array* x, vtype type) Always_inline__ Nonnull__(1);
extern size_t array_slice (vtype_array* x, vtype_array* src, ssize_t index, size_t count, bool cut) Nonnull__(1);
extern void array_sort (vtype_array* x) Nonnull__(1);
extern void array_reverse (vtype_array* x) Nonnull__(1);
extern void* at_array(const vtype_array* s, ssize_t index) Nonnull__(1);
inline void array_init (vtype_array* x, vtype type) { x->type = type; x->mem = (void*)(x->size = 0); }
/*#####################################################################################################################*/
#define array_pop(x, value, data, callback) libcdsb_array_find (x, _LIBCDSB_value_pointer(value), _LIBCDSB_vtypeof(value), data, callback, 0, 1)
+3 -1
View File
@@ -11,7 +11,9 @@ typedef int (*dict_access_callback)(const void* key, vtype key_type, void* value
/*#####################################################################################################################*/
extern void dict_init(vtype_dict* x) Nonnull__(1);
inline void dict_init(vtype_dict* x) Always_inline__ Nonnull__(1);
inline void dict_init(vtype_dict* x) { x->nodes = (void*)(x->capacity = x->size = 0); }
/*#####################################################################################################################*/
+3 -1
View File
@@ -11,12 +11,14 @@ typedef int (*list_access_callback)(void* value, ssize_t index, vtype type, void
/*#####################################################################################################################*/
extern void list_init (vtype_list* x) Nonnull__(1);
inline void list_init (vtype_list* x) Always_inline__ Nonnull__(1);
extern void list_extend (vtype_list* x, const vtype_list* s) Nonnull__(1,2);
extern size_t list_slice (vtype_list* x, vtype_list* src, ssize_t index, size_t count, bool cut) Nonnull__(1,2);
extern void list_sort (vtype_list* x) Nonnull__(1);
extern void list_reverse(vtype_list* x) Nonnull__(1);
inline void list_init (vtype_list* x) { x->first = x->last = 0; }
/*#####################################################################################################################*/
#define list_pop(x, value, data, callback) libcdsb_list_find (x, _LIBCDSB_value_pointer(value), _LIBCDSB_vtypeof(value), data, callback, 0, 1)
+20 -9
View File
@@ -33,6 +33,7 @@ typedef enum libcdsb_value_types {
VTYPE_DICT = 18,
} vtype;
/*#####################################################################################################################*/
struct libcdsb_string { char* buffer; };
struct libcdsb_array { void* mem; size_t size; vtype type; };
@@ -43,6 +44,8 @@ struct libcdsb_set { struct libcdsb_rbtree_node* root; vtype type; };
struct libcdsb_list { struct libcdsb_list_node* last; struct libcdsb_list_node* first; };
struct libcdsb_dict { struct libcdsb_dict_node** nodes; size_t capacity; size_t size; };
/*#####################################################################################################################*/
typedef void* vtype_pointer;
typedef bool vtype_bool;
@@ -69,15 +72,17 @@ typedef struct libcdsb_list vtype_list;
typedef struct libcdsb_dict vtype_dict;
typedef struct libcdsb_string vtype_string;
extern size_t string_size(const vtype_string* x) Pure__ Warn_unused_result__ Nonnull__(1);
extern size_t string_nmemb(const vtype_string* x) Pure__ Warn_unused_result__ Nonnull__(1);
extern size_t array_size(const vtype_array* x) Pure__ Warn_unused_result__ Nonnull__(1);
extern size_t array_nmemb(const vtype_array* x) Pure__ Warn_unused_result__ Nonnull__(1);
extern size_t list_size(const vtype_list* x) Pure__ Warn_unused_result__ Nonnull__(1);
extern size_t map_size(const vtype_map* x) Pure__ Warn_unused_result__ Nonnull__(1);
extern size_t vset_size(const vtype_set* x) Pure__ Warn_unused_result__ Nonnull__(1);
extern size_t dict_size(const vtype_dict* x) Pure__ Warn_unused_result__ Nonnull__(1);
extern size_t dict_capacity(const vtype_dict* x) Pure__ Warn_unused_result__ Nonnull__(1);
/*#####################################################################################################################*/
extern size_t string_size (const vtype_string* x) Pure__ Warn_unused_result__ Nonnull__(1);
extern size_t string_nmemb (const vtype_string* x) Pure__ Warn_unused_result__ Nonnull__(1);
extern size_t array_nmemb (const vtype_array* x) Pure__ Warn_unused_result__ Nonnull__(1);
extern size_t list_size (const vtype_list* x) Pure__ Warn_unused_result__ Nonnull__(1);
extern size_t map_size (const vtype_map* x) Pure__ Warn_unused_result__ Nonnull__(1);
extern size_t vset_size (const vtype_set* x) Pure__ Warn_unused_result__ Nonnull__(1);
inline size_t array_size (const vtype_array* x) Always_inline__ Pure__ Warn_unused_result__ Nonnull__(1);
inline size_t dict_size (const vtype_dict* x) Always_inline__ Pure__ Warn_unused_result__ Nonnull__(1);
inline size_t dict_capacity(const vtype_dict* x) Always_inline__ Pure__ Warn_unused_result__ Nonnull__(1);
extern int string_compare(const vtype_string* s0, const vtype_string* s1) Pure__ Warn_unused_result__ Nonnull__(1,2);
extern int array_compare (const vtype_array* s0, const vtype_array* s1) Pure__ Warn_unused_result__ Nonnull__(1,2);
@@ -127,4 +132,10 @@ extern vtype_hash map_hash (const vtype_map* s) Pure__ Warn_unused_result__
extern vtype_hash vset_hash (const vtype_set* s) Pure__ Warn_unused_result__ Nonnull__(1);
extern vtype_hash dict_hash (const vtype_dict* s) Pure__ Warn_unused_result__ Nonnull__(1);
/*#####################################################################################################################*/
inline size_t array_size (const vtype_array* x) { return x->size; }
inline size_t dict_size (const vtype_dict* x) { return x->size; }
inline size_t dict_capacity(const vtype_dict* x) { return x->capacity; }
#endif /* LIBCDSB_VTYPE_H */