28 #define VGINTKEY gpointer)(uintptr_t
34 #define v_g_list_foreach(glhead,glcur,elm) \
35 for ((glcur) = (glhead), \
36 (elm) = (glcur) ? (typeof(elm))(glcur)->data : NULL; \
38 (glcur) = g_list_next(glcur), \
39 (elm) = (glcur) ? (typeof(elm))(glcur)->data : NULL)
46 #define v_g_list_foreach_safe(glhead,glcur,glnext,elm) \
47 for ((glcur) = (glhead), \
48 (glnext) = (glcur) ? g_list_next(glcur) : NULL, \
49 (elm) = (glcur) ? (typeof(elm))(glcur)->data : NULL; \
52 (glnext) = (glnext) ? g_list_next(glnext) : NULL, \
53 (elm) = (glcur) ? (typeof(elm))(glcur)->data : NULL)
55 #define v_g_list_foreach_remove(glhead,glcur,glnext) \
57 (glhead) = g_list_remove_link(glhead,glcur); \
60 #define v_g_slist_foreach(gslhead,gslcur,elm) \
61 for ((gslcur) = (gslhead), \
62 (elm) = (gslcur) ? (typeof(elm))(gslcur)->data : NULL; \
64 (gslcur) = g_slist_next(gslcur), \
65 (elm) = (gslcur) ? (typeof(elm))(gslcur)->data : NULL)
66 #define v_g_slist_foreach_dual(gslhead1,gslhead2,gslcur1,gslcur2,elm1,elm2) \
67 for ((gslcur1) = (gslhead1),(gslcur2) = (gslhead2), \
68 (elm1) = (gslcur1) ? (typeof(elm1))(gslcur1)->data : NULL, \
69 (elm2) = (gslcur2) ? (typeof(elm2))(gslcur2)->data : NULL; \
70 (gslcur1) != NULL && (gslcur2) != NULL; \
71 (gslcur1) = g_slist_next(gslcur1),(gslcur2) = g_slist_next(gslcur2), \
72 (elm1) = (gslcur1) ? (typeof(elm1))(gslcur1)->data : NULL, \
73 (elm2) = (gslcur2) ? (typeof(elm2))(gslcur2)->data : NULL)
74 #define v_g_slist_steal(gslcur) (gslcur)->data = NULL
76 static inline GSList *g_hash_table_get_keys_slist(GHashTable *
t) {
77 GSList *retval = NULL;
84 g_hash_table_iter_init(&iter,t);
85 while (g_hash_table_iter_next(&iter,&k,NULL)) {
86 retval = g_slist_prepend(retval,k);
92 static inline GSList *g_hash_table_get_values_slist(GHashTable *
t) {
93 GSList *retval = NULL;
100 g_hash_table_iter_init(&iter,t);
101 while (g_hash_table_iter_next(&iter,NULL,&v)) {
102 retval = g_slist_prepend(retval,v);