The MLib contains two implementations of lists, in order to please several kinds of developers and users. Note that both implementations use the same type for the list nodes though. First of all, the M_ListRec type is used to model an easy-to-use doubly-linked list of nodes. It is implemented as a _circular_ list for efficiency and compactness Second, the ?M_GList type is defined similarly to the GLib "GList*" type. A M_GList is a pointer to the head of a _linear_ doubly-linked list of nodes. It is NULL if the list is empty. |
M_ListPool
|
M_ListNode
|
M_ListNodeRec
|
M_CList
|
M_List
|
M_ListRec
|
M_ListNodeFunc
|
m_list_pool
|
m_list_node_alloc
|
m_list_node_free
|
m_clist_append_node
|
m_clist_prepend_node
|
m_clist_remove_node
|
M_CLIST
|
M_CLIST_P
|
m_clist_next
|
m_clist_prev
|
m_clist_first
|
m_clist_last
|
m_clist_append
|
m_clist_prepend
|
m_clist_find
|
m_clist_remove
|
m_clist_size
|
m_clist_foreach
|
m_clist_clear
|
m_clist_clear_custom
|
M_CLIST_LOOP
|
M_CLIST_END
|
m_list_init
|
m_list_init_from_pool
|
m_list_size
|
m_list_is_empty
|
m_list_append
|
m_list_prepend
|
m_list_find
|
m_list_remove
|
m_list_first
|
m_list_last
|
m_list_next
|
m_list_prev
|
M_LIST_LOOP
|
M_LIST_END
|
m_list_append_node
|
m_list_prepend_node
|
m_list_remove_node
|
m_list_clear
|
m_list_clear_custom
|