MCPcopy Create free account
hub / github.com/IoLanguage/io / UArray_split_

Function UArray_split_

libs/basekit/source/UArray_string.c:255–284  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

253// split
254
255PtrUArray *UArray_split_(const UArray *self, const PtrUArray *delims) {
256 PtrUArray *results = UArray_new();
257 size_t i, last = 0;
258 UArray_setItemType_(results, CTYPE_uintptr_t);
259
260 for (i = 0; i < self->size; i++) {
261 UArray slice = UArray_stackRange(self, i, self->size - i);
262 size_t j;
263
264 for (j = 0; j < delims->size; j++) {
265 UArray *delim = UArray_rawPointerAt_(delims, j);
266
267 if (UArray_beginsWith_(&slice, delim)) {
268 UArray_appendPointer_(results,
269 UArray_range(self, last, i - last));
270
271 last = i + delim->size;
272 i = last - 1; // since for() will increment it
273 break;
274 }
275 }
276 }
277
278 if (last != self->size) {
279 UArray_appendPointer_(results,
280 UArray_range(self, last, self->size - last));
281 }
282
283 return results;
284}
285
286size_t UArray_splitCount_(const UArray *self, const PtrUArray *delims) {
287 PtrUArray *r = UArray_split_(self, delims);

Callers 2

UArray_splitCount_Function · 0.85
IoSeq_splitToFunctionFunction · 0.85

Calls 7

UArray_newFunction · 0.85
UArray_setItemType_Function · 0.85
UArray_stackRangeFunction · 0.85
UArray_rawPointerAt_Function · 0.85
UArray_beginsWith_Function · 0.85
UArray_appendPointer_Function · 0.85
UArray_rangeFunction · 0.85

Tested by

no test coverage detected