static void shinima_message_links_foreach(gchar **message, void(*foreach_func)(xmlnode*, const gchar*, gchar**, gboolean*, gpointer), gboolean *_changed, gpointer *user_data) { xmlnode *root, *a; gboolean *changed = (_changed != NULL) ? changed : g_malloc(sizeof(gboolean)); g_return_if_fail(foreach_func != NULL); root = xmlnode_from_str(*message, -1); for(a=xmlnode_get_child(root, "a"); a; a=xmlnode_get_next_twin(a)) { const gchar *href = xmlnode_get_attrib(a, "href"); if(href) foreach_func(a, href, message, changed, user_data); } if(changed) { g_free(*message); *message = xmlnode_to_str(root, NULL); } if(_changed == NULL) g_free(changed); xmlnode_free(root); }
/** Executes a function for each element in the ::xtele_list. * @p foreach_func is executed for each element in debut until it return a value different than '0'. * @param debut List iterated. * @param foreach_func The function executed. * @param data The data transmitted as a 2nd argument of foreach_func. * @return The ::xtele_list element at which foreach_func return something different than '0'. */ xtele_list* xtele_list_foreach(xtele_list* debut, int (*foreach_func) (void*, void*), void* data) { while(debut) { if(foreach_func(debut->data, data)) break; xtele_list_next(debut); } return debut; }
void LArray<V>::Foreach(void (* foreach_func) (V * value, void * user_arg), void * user_arg) { g_return_if_fail(foreach_func != NULL); for(int i = 0; i < this->Count(); i++) foreach_func(this->GetItem(i), user_arg); }
static void claro_ft2_fontset_foreach(claro_fontset_t * fontset, claro_fontset_foreach_func * foreach_func, void * arg) { FcFontSet * fc_fontset; int i; g_return_if_fail(fontset != NULL); g_return_if_fail(foreach_func != NULL); fc_fontset = (FcFontSet *)fontset->native; for(i = 0; i < fc_fontset->nfont; i++) { FcPattern * fc_pattern = fc_fontset->fonts[i]; foreach_func(_claro_ft2_make_font(fc_pattern), arg); } }