|
@@ -21,13 +21,16 @@ typedef long qi_ssize_t;
|
|
typedef struct _qi_list_t qi_list_t;
|
|
typedef struct _qi_list_t qi_list_t;
|
|
|
|
|
|
struct _qi_list_t {
|
|
struct _qi_list_t {
|
|
- void *value;
|
|
|
|
- qi_list_t *next;
|
|
|
|
|
|
+ void **data;
|
|
|
|
+ qi_size_t length;
|
|
};
|
|
};
|
|
|
|
|
|
-#define qi_list_empty(list) (!(list)->value)
|
|
|
|
-#define qi_list_first(list) ((list)->value)
|
|
|
|
-#define qi_list_last(list) (qi_list_index((list), -1))
|
|
|
|
|
|
+#define qi_list_make_n(size) (qi_list_resize(qi_list_make(), (size)))
|
|
|
|
+#define qi_list_data(list, index) ((list)->data[(index)])
|
|
|
|
+#define qi_list_length(list) ((list)->length)
|
|
|
|
+#define qi_list_empty(list) (!(list)->length)
|
|
|
|
+#define qi_list_first(list) ((list)->data[0])
|
|
|
|
+#define qi_list_last(list) ((list)->data[(list)->length - 1])
|
|
|
|
|
|
typedef struct _qi_table_t qi_table_t;
|
|
typedef struct _qi_table_t qi_table_t;
|
|
typedef struct _qi_table_entry_t qi_table_entry_t;
|
|
typedef struct _qi_table_entry_t qi_table_entry_t;
|
|
@@ -46,7 +49,7 @@ struct _qi_table_t {
|
|
qi_size_t capacity;
|
|
qi_size_t capacity;
|
|
};
|
|
};
|
|
|
|
|
|
-#define QI_TABLE_MIN_SIZE 32
|
|
|
|
|
|
+#define QI_TABLE_MIN_CAP 32
|
|
|
|
|
|
#define qi_table_length(table) ((table)->used)
|
|
#define qi_table_length(table) ((table)->used)
|
|
#define qi_table_empty(table) ((table)->used == 0)
|
|
#define qi_table_empty(table) ((table)->used == 0)
|
|
@@ -340,12 +343,12 @@ void *qi_calloc(qi_size_t count, qi_size_t size);
|
|
char *qi_strdup(const char *s);
|
|
char *qi_strdup(const char *s);
|
|
void qi_free(void *);
|
|
void qi_free(void *);
|
|
qi_list_t *qi_list_make(void);
|
|
qi_list_t *qi_list_make(void);
|
|
-qi_size_t qi_list_length(qi_list_t *list);
|
|
|
|
|
|
+qi_list_t *qi_list_resize(qi_list_t *list, qi_size_t size);
|
|
void *qi_list_index(qi_list_t *list, qi_ssize_t index);
|
|
void *qi_list_index(qi_list_t *list, qi_ssize_t index);
|
|
qi_list_t *qi_list_push(qi_list_t *list, void *value);
|
|
qi_list_t *qi_list_push(qi_list_t *list, void *value);
|
|
-qi_list_t *qi_list_insert(qi_list_t **list, qi_ssize_t index, void *value);
|
|
|
|
-qi_list_t *qi_list_delete(qi_list_t **list, qi_ssize_t index);
|
|
|
|
-void *qi_list_set(qi_list_t *list, qi_ssize_t index, void *value);
|
|
|
|
|
|
+bool qi_list_insert(qi_list_t *list, qi_ssize_t index, void *value);
|
|
|
|
+bool qi_list_delete(qi_list_t *list, qi_ssize_t index);
|
|
|
|
+bool qi_list_set(qi_list_t *list, qi_ssize_t index, void *value);
|
|
void *qi_list_pop(qi_list_t *list);
|
|
void *qi_list_pop(qi_list_t *list);
|
|
bool qi_list_contains(qi_list_t *list, void *value);
|
|
bool qi_list_contains(qi_list_t *list, void *value);
|
|
qi_list_t *qi_list_copy(qi_list_t *list);
|
|
qi_list_t *qi_list_copy(qi_list_t *list);
|