src/list.c

changeset 640
55cc3b373c5e
parent 630
ac5e7f789048
child 641
d402fead3386
equal deleted inserted replaced
639:309e8b08c60e 640:55cc3b373c5e
25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26 * POSSIBILITY OF SUCH DAMAGE. 26 * POSSIBILITY OF SUCH DAMAGE.
27 */ 27 */
28 28
29 #include "cx/list.h" 29 #include "cx/list.h"
30
31 #include <string.h>
30 32
31 void cxListDestroy(CxList *list) { 33 void cxListDestroy(CxList *list) {
32 switch (list->content_destructor_type) { 34 switch (list->content_destructor_type) {
33 case CX_DESTRUCTOR_SIMPLE: { 35 case CX_DESTRUCTOR_SIMPLE: {
34 CxIterator iter = cxListBegin(list); 36 CxIterator iter = cxListBegin(list);
78 } else { 80 } else {
79 return list->size < other->size ? -1 : 1; 81 return list->size < other->size ? -1 : 1;
80 } 82 }
81 } 83 }
82 } 84 }
85
86 CxMutIterator cxListMutIterator(
87 CxList *list,
88 size_t index
89 ) {
90 CxIterator it = list->cl->iterator(list, index);
91 it.base.mutating = true;
92
93 // we know the iterators share the same memory layout
94 CxMutIterator iter;
95 memcpy(&iter, &it, sizeof(CxMutIterator));
96 return iter;
97 }

mercurial