diff -r b2bc48c2b251 -r adb4e0737c33 src/iterator.c --- a/src/iterator.c Thu May 23 15:05:24 2024 +0200 +++ b/src/iterator.c Thu May 23 18:21:08 2024 +0200 @@ -83,7 +83,7 @@ } } -CxMutIterator cxIterator( +CxMutIterator cxMutIterator( void *array, size_t elem_size, size_t elem_count, @@ -104,3 +104,17 @@ return iter; } + +CxIterator cxIterator( + void const *array, + size_t elem_size, + size_t elem_count +) { + CxMutIterator iter = cxMutIterator((void*)array, elem_size, elem_count, false); + iter.base.mutating = false; + + // we know the iterators share the same memory layout + CxIterator ret; + memcpy(&ret, &iter, sizeof(CxIterator)); + return ret; +}