| 126 |
126 |
| 127 ```C |
127 ```C |
| 128 int cxListCompare(const CxList *list, const CxList *other); |
128 int cxListCompare(const CxList *list, const CxList *other); |
| 129 ``` |
129 ``` |
| 130 |
130 |
| 131 <warning> |
131 Arbitrary lists can be compared item-wise with `cxListCompare()`, as long as the compare functions of both lists are equivalent. |
| 132 TODO: add documentation |
132 |
| 133 </warning> |
133 That means, you can compare an UCX [array list](array_list.h.md) with a [linked list](linked_list.h.md), |
| |
134 and you could even compare lists that are storing pointers with lists that are not storing pointers. |
| |
135 |
| |
136 However, the optimized list-internal compare implementation is only used, when both the compare functions and the list classes are identical. |
| |
137 Otherwise, `cxListCompare()` will behave as if you were iterating through both lists and manually comparing the items. |
| |
138 |
| |
139 The return value of `cxListCompare()` is zero, if the lists are item-wise equivalent. |
| |
140 If they are not, the non-zero return value equals the return value of the used compare function for the first pair of elements that are not equal. |
| 134 |
141 |
| 135 ## Dispose |
142 ## Dispose |
| 136 |
143 |
| 137 ```C |
144 ```C |
| 138 void cxListFree(CxList *list); |
145 void cxListFree(CxList *list); |
| 139 ``` |
146 ``` |
| 140 |
147 |
| 141 <warning> |
148 No matter with which function a `CxList` has been created, you can _always_ deallocate the entire memory with a call to `cxListFree()`. |
| 142 TODO: add documentation |
149 |
| 143 </warning> |
150 The effect is equivalent to invoking `cxListClear()` plus deallocating the memory for the list structure. |
| |
151 That means, for each item in the list, the destructor functions defined by `cxDefineDestructor()` or `cxDefineAdvancedDestructor()` are called, |
| |
152 before deallocating the list. |
| |
153 |
| |
154 When the list has been storing pointers, make sure that either another reference to the same memory exist in your program, |
| |
155 or any of the destructor functions deallocates the memory. |
| |
156 Otherwise, there is a risk of a memory leak. |
| 144 |
157 |
| 145 ## Implement own List Structures |
158 ## Implement own List Structures |
| 146 |
159 |
| 147 <warning> |
160 <warning> |
| 148 TODO: add documentation |
161 TODO: add documentation |