1.1 --- a/src/iterator.c Thu May 23 15:05:24 2024 +0200 1.2 +++ b/src/iterator.c Thu May 23 18:21:08 2024 +0200 1.3 @@ -83,7 +83,7 @@ 1.4 } 1.5 } 1.6 1.7 -CxMutIterator cxIterator( 1.8 +CxMutIterator cxMutIterator( 1.9 void *array, 1.10 size_t elem_size, 1.11 size_t elem_count, 1.12 @@ -104,3 +104,17 @@ 1.13 1.14 return iter; 1.15 } 1.16 + 1.17 +CxIterator cxIterator( 1.18 + void const *array, 1.19 + size_t elem_size, 1.20 + size_t elem_count 1.21 +) { 1.22 + CxMutIterator iter = cxMutIterator((void*)array, elem_size, elem_count, false); 1.23 + iter.base.mutating = false; 1.24 + 1.25 + // we know the iterators share the same memory layout 1.26 + CxIterator ret; 1.27 + memcpy(&ret, &iter, sizeof(CxIterator)); 1.28 + return ret; 1.29 +}