|
|
|
|
@ -425,6 +425,7 @@ static inline void g_queue_clear_full(GQueue *q, GDestroyNotify free_func) {
|
|
|
|
|
contained_type **pdata; \
|
|
|
|
|
unsigned int len; \
|
|
|
|
|
}; \
|
|
|
|
|
const contained_type *__ct; \
|
|
|
|
|
} type_name; \
|
|
|
|
|
static_assert(sizeof(GPtrArray) == sizeof(type_name), "sizeof ptrarray type mismatch"); \
|
|
|
|
|
static_assert(G_STRUCT_OFFSET(GPtrArray, pdata) == G_STRUCT_OFFSET(type_name, pdata), \
|
|
|
|
|
@ -437,7 +438,11 @@ static inline void g_queue_clear_full(GQueue *q, GDestroyNotify free_func) {
|
|
|
|
|
} \
|
|
|
|
|
static inline type_name *type_name##_new(void) { \
|
|
|
|
|
return type_name##_new_sized(0); \
|
|
|
|
|
}
|
|
|
|
|
} \
|
|
|
|
|
static inline void type_name##_destroy_ptr(type_name *A) { \
|
|
|
|
|
g_ptr_array_free(&(A)->a, TRUE); \
|
|
|
|
|
} \
|
|
|
|
|
G_DEFINE_AUTOPTR_CLEANUP_FUNC(type_name, type_name##_destroy_ptr)
|
|
|
|
|
|
|
|
|
|
#define TYPED_GPTRARRAY(type_name, contained_type) \
|
|
|
|
|
TYPED_GPTRARRAY_FULL(type_name, contained_type, NULL)
|
|
|
|
|
@ -446,6 +451,11 @@ static inline void g_queue_clear_full(GQueue *q, GDestroyNotify free_func) {
|
|
|
|
|
g_ptr_array_set_size(&(A)->a, l); \
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
#define t_ptr_array_sort(A, f) ({ \
|
|
|
|
|
int (*__f)(__typeof__((A)->__ct), __typeof__((A)->__ct)) = f; \
|
|
|
|
|
g_ptr_array_sort(&(A)->a, (GCompareFunc) __f); \
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
#define t_ptr_array_free(A, fd) ({ \
|
|
|
|
|
g_ptr_array_free(&(A)->a, fd); \
|
|
|
|
|
})
|
|
|
|
|
@ -455,5 +465,9 @@ static inline void g_queue_clear_full(GQueue *q, GDestroyNotify free_func) {
|
|
|
|
|
g_ptr_array_add(&(A)->a, __e); \
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
#define t_ptr_array_remove_index(A, i) ({ \
|
|
|
|
|
g_ptr_array_remove_index(&(A)->a, i); \
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|