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);
}
Exemple #2
0
/** 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;
}
Exemple #3
0
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);        
}
Exemple #4
0
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);
    }
}