00001
00002 #ifndef CMAID_LIST_FUNCDEF_H
00003 #define CMAID_LIST_FUNCDEF_H
00004
00010 #define CMAID_LIST_FUNC(c) ((const Cmaid_List_Interface *)(((c)->interface)))
00011
00023 CMAID_INLINE void *
00024 cmaid_list_append(Cmaid_List *t, void *data)
00025 {
00026 CMAID_CHECK_TYPE_RET(t, CMAID_MAGIC_LIST, NULL);
00027 CMAID_CHECK_POINTER_RET(data, NULL);
00028 return CMAID_LIST_FUNC(t)->append(t, data);
00029 }
00030
00042 CMAID_INLINE void *
00043 cmaid_list_prepend(Cmaid_List *t, void *data)
00044 {
00045 CMAID_CHECK_TYPE_RET(t, CMAID_MAGIC_LIST, NULL);
00046 CMAID_CHECK_POINTER_RET(data, NULL);
00047 return CMAID_LIST_FUNC(t)->prepend(t, data);
00048 }
00049
00058 CMAID_INLINE void
00059 cmaid_list_first_remove(Cmaid_List *t)
00060 {
00061 CMAID_CHECK_TYPE(t, CMAID_MAGIC_LIST);
00062 CMAID_LIST_FUNC(t)->first_remove(t);
00063 }
00064
00073 CMAID_INLINE void
00074 cmaid_list_last_remove(Cmaid_List *t)
00075 {
00076 CMAID_CHECK_TYPE(t, CMAID_MAGIC_LIST);
00077 CMAID_LIST_FUNC(t)->last_remove(t);
00078 }
00079
00088 CMAID_INLINE void *
00089 cmaid_list_first(Cmaid_List *t)
00090 {
00091 CMAID_CHECK_TYPE_RET(t, CMAID_MAGIC_LIST, NULL);
00092 return CMAID_LIST_FUNC(t)->first(t);
00093 }
00094
00103 CMAID_INLINE void *
00104 cmaid_list_last(Cmaid_List *t)
00105 {
00106 CMAID_CHECK_TYPE_RET(t, CMAID_MAGIC_LIST, NULL);
00107 return CMAID_LIST_FUNC(t)->last(t);
00108 }
00109
00122 CMAID_INLINE void *
00123 cmaid_list_insert_before(Cmaid_List *t, Cmaid_Iter *iter, void *data)
00124 {
00125 CMAID_CHECK_TYPE_RET(t, CMAID_MAGIC_LIST, NULL);
00126 CMAID_CHECK_POINTER_RET(data, NULL);
00127 return CMAID_LIST_FUNC(t)->insert_before(t, iter, data);
00128 }
00129
00142 CMAID_INLINE void *
00143 cmaid_list_insert_after(Cmaid_List *t, Cmaid_Iter *iter, void *data)
00144 {
00145 CMAID_CHECK_TYPE_RET(t, CMAID_MAGIC_LIST, NULL);
00146 CMAID_CHECK_POINTER_RET(data, NULL);
00147 return CMAID_LIST_FUNC(t)->insert_before(t, iter, data);
00148 }
00149
00155 CMAID_INLINE void
00156 cmaid_list_sort(Cmaid_List *t)
00157 {
00158 CMAID_CHECK_TYPE(t, CMAID_MAGIC_LIST);
00159 CMAID_LIST_FUNC(t)->sort(t);
00160 }
00161
00167 CMAID_INLINE void
00168 cmaid_list_reverse(Cmaid_List *t)
00169 {
00170 CMAID_CHECK_TYPE(t, CMAID_MAGIC_LIST);
00171 CMAID_LIST_FUNC(t)->reverse(t);
00172 }
00173
00174 #endif