Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #ifndef GLIB_INTERFACE_H
- #define GLIB_INTERFACE_H
- #define INLINE static inline
- #define GLIST_INSTANCE(Name, T, FName) \
- typedef GList Name; \
- INLINE Name* FName##_new() { return NULL; } \
- INLINE Name* FName##_append(Name* a, T b) { return g_list_append(a, (gpointer)b); } \
- INLINE Name* FName##_prepend(Name* a, T b) { return g_list_prepend(a, (gpointer)b); } \
- INLINE Name* FName##_first(Name* a) { return g_list_first(a); } \
- INLINE Name* FName##_last(Name* a) { return g_list_last(a); } \
- INLINE Name* FName##_next(Name* a) { return g_list_next(a); } \
- INLINE Name* FName##_prev(Name* a) { return g_list_previous(a); } \
- INLINE int FName##_length(Name* a) { return g_list_length(a); } \
- INLINE T FName##_get(Name* a, int b) { return (T)g_list_nth_data(a, b); } \
- INLINE T FName##_data(Name* a) { return (T)(a->data); }
- #define GARRAY_INSTANCE(Name, T, FName) \
- typedef GArray Name; \
- INLINE Name* FName##_new() { return g_array_new(TRUE, TRUE, sizeof(T)); } \
- INLINE Name* FName##_sized_new(int s) { return g_array_sized_new(TRUE, TRUE, sizeof(T), s); } \
- INLINE void FName##_append(Name* a, T b) { g_array_append_val(a, b); } \
- INLINE void FName##_insert(Name* a, T b, int p) { g_array_insert_val(a, p, b); } \
- INLINE T FName##_get(Name* a, int p) { return g_array_index(a, T, p); } \
- INLINE T* FName##_ref(Name* a, int p) { return &g_array_index(a, T, p); } \
- INLINE int FName##_length(Name* a) { return a->len; }
- #define GTREE_INSTANCE(Name, K, T, FName, Cmp) \
- typedef GTree Name; \
- INLINE Name* FName##_new() { return g_tree_new((GCompareFunc)Cmp); } \
- INLINE void FName##_insert(Name* t, K k, T v) { g_tree_insert(t, (gpointer)k, (gpointer)v); } \
- INLINE void FName##_remove(Name* t, K k) { g_tree_remove(t, (gpointer)k); } \
- INLINE void FName##_replace(Name* t, K k, T v) { g_tree_replace(t, (gpointer)k, (gpointer)v); } \
- INLINE int FName##_height(Name* t) { return g_tree_height(t); } \
- INLINE int FName##_nnodes(Name* t) { return g_tree_nnodes(t); } \
- INLINE T FName##_lookup(Name* t, const K k) { return (T)g_tree_lookup(t, (gconstpointer)k); } \
- INLINE void FName##_foreach(Name* t, gboolean (*func)(K, T, void*), void* data) \
- { g_tree_foreach(t, (GTraverseFunc)func, (gpointer)data); }
- #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement