src/cx/list.h

changeset 488
9138acaa494b
parent 484
9e6900b1cf9d
child 489
af6be1e123aa
equal deleted inserted replaced
487:4bd19279778c 488:9138acaa494b
79 void *(*at)(cx_list_s *list, size_t index); 79 void *(*at)(cx_list_s *list, size_t index);
80 80
81 /** 81 /**
82 * Member function for finding an element. 82 * Member function for finding an element.
83 */ 83 */
84 size_t (*find)(cx_list_s *list, void *elem); 84 size_t (*find)(
85 cx_list_s *list,
86 void *elem
87 );
85 88
86 /** 89 /**
87 * Member function for sorting the list in place. 90 * Member function for sorting the list in place.
88 */ 91 */
89 void (*sort)(cx_list_s *list); 92 void (*sort)(cx_list_s *list);
93
94 /**
95 * Member function for comparing this list to another list of the same type.
96 */
97 int (*compare)(
98 cx_list_s *list,
99 cx_list_s *other
100 );
90 } cx_list_class; 101 } cx_list_class;
91 102
92 /** 103 /**
93 * Structure for holding the base data of a list. 104 * Structure for holding the base data of a list.
94 */ 105 */
203 */ 214 */
204 static inline void cxListSort(CxList list) { 215 static inline void cxListSort(CxList list) {
205 list->cl->sort(list); 216 list->cl->sort(list);
206 } 217 }
207 218
219 /**
220 * Compares a list to another list of the same type.
221 *
222 * First, the list sizes are compared. If they match, the lists are compared element-wise.
223 *
224 * @param list the list
225 * @param other the list to compare to
226 * @return zero, if both lists are equal element wise, negative if the first list is smaller, zero if the first list is larger
227 */
228 static inline int cxListCompare(
229 CxList list,
230 CxList other
231 ) {
232 return list->cl->compare(list, other);
233 }
234
208 #ifdef __cplusplus 235 #ifdef __cplusplus
209 } /* extern "C" */ 236 } /* extern "C" */
210 #endif 237 #endif
211 238
212 #endif /* UCX_LIST_H */ 239 #endif /* UCX_LIST_H */

mercurial