## fm-list

fm-list

## Synopsis

    #define             FM_LIST                             (list)
    struct              FmList;
    struct              FmListFuncs;
    void                fm_list_clear                       (gpointer list);
    void                fm_list_delete_link                 (gpointer list,
                                                             gpointer l_);
    #define             fm_list_delete_link_nounref         (list,
                                                             l_)
    #define             fm_list_find                        (list,
                                                             d)
    #define             fm_list_find_custom                 (list,
                                                             d,
                                                             f)
    #define             fm_list_foreach                     (list,
                                                             f,
                                                             d)
    #define             fm_list_get_length                  (list)
    #define             fm_list_index                       (list,
                                                             d)
    #define             fm_list_insert_after                (list,
                                                             s,
                                                             d)
    #define             fm_list_insert_after_noref          (list,
                                                             s,
                                                             d)
    #define             fm_list_insert_before               (list,
                                                             s,
                                                             d)
    #define             fm_list_insert_before_noref         (list,
                                                             s,
                                                             d)
    #define             fm_list_insert_sorted               (list,
                                                             d,
                                                             f,
                                                             u)
    #define             fm_list_insert_sorted_noref         (list,
                                                             d,
                                                             f,
                                                             u)
    #define             fm_list_is_empty                    (list)
    #define             fm_list_link_index                  (list,
                                                             l_)
    FmList *            fm_list_new                         (FmListFuncs *funcs);
    #define             fm_list_peek_head                   (list)
    #define             fm_list_peek_head_link              (list)
    #define             fm_list_peek_nth                    (list,
                                                             n)
    #define             fm_list_peek_nth_link               (list,
                                                             n)
    #define             fm_list_peek_tail                   (list)
    #define             fm_list_peek_tail_link              (list)
    #define             fm_list_pop_head                    (list)
    #define             fm_list_pop_head_link               (list)
    #define             fm_list_pop_nth                     (list,
                                                             n)
    #define             fm_list_pop_nth_link                (list,
                                                             n)
    #define             fm_list_pop_tail                    (list)
    #define             fm_list_pop_tail_link               (list)
    #define             fm_list_push_head                   (list,
                                                             d)
    #define             fm_list_push_head_link              (list,
                                                             l_)
    #define             fm_list_push_head_noref             (list,
                                                             d)
    #define             fm_list_push_nth                    (list,
                                                             d,
                                                             n)
    #define             fm_list_push_nth_link               (list,
                                                             n,
                                                             l_)
    #define             fm_list_push_nth_noref              (list,
                                                             d,
                                                             n)
    #define             fm_list_push_tail                   (list,
                                                             d)
    #define             fm_list_push_tail_link              (list,
                                                             l_)
    #define             fm_list_push_tail_noref             (list,
                                                             d)
    FmList *            fm_list_ref                         (gpointer list);
    void                fm_list_remove                      (gpointer list,
                                                             gpointer data);
    void                fm_list_remove_all                  (gpointer list,
                                                             gpointer data);
    #define             fm_list_reverse                     (list)
    #define             fm_list_sort                        (list,
                                                             f,
                                                             d)
    #define             fm_list_unlink                      (list,
                                                             l_)
    void                fm_list_unref                       (gpointer list);

## Description

## Details

### FM_LIST()

    #define FM_LIST(list) ((FmList*)list)

### struct FmList

    struct FmList {
    	GQueue list;
    	FmListFuncs* funcs;
    	gint n_ref;
    };

### struct FmListFuncs

    struct FmListFuncs {
    	gpointer (*item_ref)(gpointer item);
    	void (*item_unref)(gpointer item);
    };

### fm_list_clear ()

    void                fm_list_clear                       (gpointer list);

### fm_list_delete_link ()

    void                fm_list_delete_link                 (gpointer list,
                                                             gpointer l_);

### fm_list_delete_link_nounref()

    #define fm_list_delete_link_nounref(list, l_)    g_queue_delete_link((GQueue*)list,l_)

### fm_list_find()

    #define fm_list_find(list,d)				g_queue_find((GQueue*)list,d)

### fm_list_find_custom()

    #define fm_list_find_custom(list,d,f)		g_queue_find_custom((GQueue*)list,d,f)

### fm_list_foreach()

    #define fm_list_foreach(list,f,d)			g_queue_foreach((GQueue*)list,f,d)

### fm_list_get_length()

    #define fm_list_get_length(list)			g_queue_get_length((GQueue*)list)

### fm_list_index()

    #define fm_list_index(list,d)				g_queue_index((GQueue*)list,d)

### fm_list_insert_after()

    #define fm_list_insert_after(list,s,d)		g_queue_insert_after((GQueue*)list,s,list->funcs->item_ref(d))

### fm_list_insert_after_noref()

    #define fm_list_insert_after_noref(list,s,d)		g_queue_insert_after((GQueue*)list,s,d)

### fm_list_insert_before()

    #define fm_list_insert_before(list,s,d) g_queue_insert_before((GQueue*)list,s,list->funcs->item_ref(d))

### fm_list_insert_before_noref()

    #define fm_list_insert_before_noref(list,s,d) g_queue_insert_before((GQueue*)list,s,d)

### fm_list_insert_sorted()

    #define fm_list_insert_sorted(list,d,f,u) g_queue_insert_sorted((GQueue*)list,list->funcs->item_ref(d),f,u)

### fm_list_insert_sorted_noref()

    #define fm_list_insert_sorted_noref(list,d,f,u) g_queue_insert_sorted((GQueue*)list,d,f,u)

### fm_list_is_empty()

    #define fm_list_is_empty(list)				g_queue_is_empty((GQueue*)list)

### fm_list_link_index()

    #define fm_list_link_index(list,l_)		g_queue_index((GQueue*)list,l_)

### fm_list_new ()

    FmList *            fm_list_new                         (FmListFuncs *funcs);

### fm_list_peek_head()

    #define fm_list_peek_head(list)			g_queue_peek_head((GQueue*)list)

### fm_list_peek_head_link()

    #define fm_list_peek_head_link(list)		g_queue_peek_head_link((GQueue*)list)

### fm_list_peek_nth()

    #define fm_list_peek_nth(list,n)			g_queue_peek_nth((GQueue*)list,n)

### fm_list_peek_nth_link()

    #define fm_list_peek_nth_link(list,n)		g_queue_peek_nth_link((GQueue*)list,n)

### fm_list_peek_tail()

    #define fm_list_peek_tail(list)			g_queue_peek_tail((GQueue*)list)

### fm_list_peek_tail_link()

    #define fm_list_peek_tail_link(list)		g_queue_peek_tail_link((GQueue*)list)

### fm_list_pop_head()

    #define fm_list_pop_head(list)				g_queue_pop_head((GQueue*)list)

### fm_list_pop_head_link()

    #define fm_list_pop_head_link(list)		g_queue_pop((GQueue*)list)

### fm_list_pop_nth()

    #define fm_list_pop_nth(list,n)			g_queue_pop_nth((GQueue*)list,n)

### fm_list_pop_nth_link()

    #define fm_list_pop_nth_link(list,n)		g_queue_pop_nth_link((GQueue*)list,n)

### fm_list_pop_tail()

    #define fm_list_pop_tail(list)				g_queue_pop_tail((GQueue*)list)

### fm_list_pop_tail_link()

    #define fm_list_pop_tail_link(list)		g_queue_pop_tail_link((GQueue*)list)

### fm_list_push_head()

    #define fm_list_push_head(list,d)			g_queue_push_head((GQueue*)list,list->funcs->item_ref(d))

### fm_list_push_head_link()

    #define fm_list_push_head_link(list,l_) g_queue_push_head_link((GQueue*)list,l_)

### fm_list_push_head_noref()

    #define fm_list_push_head_noref(list,d)			g_queue_push_head((GQueue*)list,d)

### fm_list_push_nth()

    #define fm_list_push_nth(list,d,n)			g_queue_push_nth((GQueue*)list,list->funcs->item_ref(d),n)

### fm_list_push_nth_link()

    #define fm_list_push_nth_link(list,n,l_) g_queue_push_nth_link((GQueue*)list,n,l_)

### fm_list_push_nth_noref()

    #define fm_list_push_nth_noref(list,d,n)			g_queue_push_nth((GQueue*)list,d,n)

### fm_list_push_tail()

    #define fm_list_push_tail(list,d)			g_queue_push_tail((GQueue*)list,list->funcs->item_ref(d))

### fm_list_push_tail_link()

    #define fm_list_push_tail_link(list,l_) g_queue_push_tail_link((GQueue*)list,l_)

### fm_list_push_tail_noref()

    #define fm_list_push_tail_noref(list,d)			g_queue_push_tail((GQueue*)list,d)

### fm_list_ref ()

    FmList *            fm_list_ref                         (gpointer list);

### fm_list_remove ()

    void                fm_list_remove                      (gpointer list,
                                                             gpointer data);

### fm_list_remove_all ()

    void                fm_list_remove_all                  (gpointer list,
                                                             gpointer data);

### fm_list_reverse()

    #define fm_list_reverse(list)				g_queue_reverse((GQueue*)list)

### fm_list_sort()

    #define fm_list_sort(list,f,d)				g_queue_sort((GQueue*)list,f,d)

### fm_list_unlink()

    #define fm_list_unlink(list,l_)			g_queue_unlink((GQueue*)list,l_)

### fm_list_unref ()

    void                fm_list_unref                       (gpointer list);