src/iterator.c

changeset 851
adb4e0737c33
parent 850
b2bc48c2b251
child 853
d4baf4dd55c3
equal deleted inserted replaced
850:b2bc48c2b251 851:adb4e0737c33
81 iter->index++; 81 iter->index++;
82 iter->elem_handle = ((char *) iter->elem_handle) + iter->elem_size; 82 iter->elem_handle = ((char *) iter->elem_handle) + iter->elem_size;
83 } 83 }
84 } 84 }
85 85
86 CxMutIterator cxIterator( 86 CxMutIterator cxMutIterator(
87 void *array, 87 void *array,
88 size_t elem_size, 88 size_t elem_size,
89 size_t elem_count, 89 size_t elem_count,
90 bool remove_keeps_order 90 bool remove_keeps_order
91 ) { 91 ) {
102 iter.base.remove = false; 102 iter.base.remove = false;
103 iter.base.mutating = true; 103 iter.base.mutating = true;
104 104
105 return iter; 105 return iter;
106 } 106 }
107
108 CxIterator cxIterator(
109 void const *array,
110 size_t elem_size,
111 size_t elem_count
112 ) {
113 CxMutIterator iter = cxMutIterator((void*)array, elem_size, elem_count, false);
114 iter.base.mutating = false;
115
116 // we know the iterators share the same memory layout
117 CxIterator ret;
118 memcpy(&ret, &iter, sizeof(CxIterator));
119 return ret;
120 }

mercurial