refactor: changed arrayslice init
This commit is contained in:
@@ -434,68 +434,68 @@ ArrayListErr arraylist_reserve(ArrayList *arr, size_t size_to_reserve) {
|
||||
return ARRLIST_OK;
|
||||
}
|
||||
|
||||
ArraySlice *arraylist_slice(ArrayList *arr, size_t start, size_t len) {
|
||||
ArrayListErr arraylist_slice(ArraySlice **slice, ArrayList *arr, size_t start, size_t len) {
|
||||
if (arr == NULL) {
|
||||
return NULL;
|
||||
return ARRLIST_NULL_ARG;
|
||||
}
|
||||
|
||||
if (arr->len == 0 || len == 0) {
|
||||
return NULL;
|
||||
return ARRLIST_INVALID_ARR;
|
||||
}
|
||||
|
||||
if (start > SIZE_MAX / arr->elem_size || len > SIZE_MAX / arr->elem_size) {
|
||||
return NULL;
|
||||
return ARRLIST_INVALID_CAPACITY;
|
||||
}
|
||||
|
||||
if (start + len > arr->len) {
|
||||
return NULL;
|
||||
return ARRLIST_INVALID_START;
|
||||
}
|
||||
|
||||
ArraySlice *slice = malloc(sizeof(ArraySlice));
|
||||
if (slice == NULL) {
|
||||
return NULL;
|
||||
ArraySlice *new_slice = malloc(sizeof(ArraySlice));
|
||||
if (new_slice == NULL) {
|
||||
return ARRLIST_BAD_ALLOC;
|
||||
}
|
||||
|
||||
slice->arr = arr;
|
||||
slice->start = start;
|
||||
slice->end = start + len;
|
||||
slice->current = start;
|
||||
slice->is_safe = true;
|
||||
new_slice->arr = arr;
|
||||
new_slice->start = start;
|
||||
new_slice->end = start + len;
|
||||
new_slice->current = start;
|
||||
new_slice->is_safe = false;
|
||||
|
||||
arr->borrows++;
|
||||
|
||||
return slice;
|
||||
*slice = new_slice;
|
||||
return ARRLIST_OK;
|
||||
}
|
||||
|
||||
ArraySlice *arraylist_slice_unsafe(ArrayList *arr, size_t start, size_t len) {
|
||||
ArrayListErr arraylist_slice_unsafe(ArraySlice **slice, ArrayList *arr, size_t start, size_t len) {
|
||||
if (arr == NULL) {
|
||||
return NULL;
|
||||
return ARRLIST_NULL_ARG;
|
||||
}
|
||||
|
||||
if (arr->len == 0 || len == 0) {
|
||||
return NULL;
|
||||
return ARRLIST_INVALID_ARR;
|
||||
}
|
||||
|
||||
if (start > SIZE_MAX / arr->elem_size || len > SIZE_MAX / arr->elem_size) {
|
||||
return NULL;
|
||||
return ARRLIST_INVALID_CAPACITY;
|
||||
}
|
||||
|
||||
if (start + len > arr->len) {
|
||||
return NULL;
|
||||
return ARRLIST_INVALID_START;
|
||||
}
|
||||
|
||||
ArraySlice *slice = malloc(sizeof(ArraySlice));
|
||||
if (slice == NULL) {
|
||||
return NULL;
|
||||
ArraySlice *new_slice = malloc(sizeof(ArraySlice));
|
||||
if (new_slice == NULL) {
|
||||
return ARRLIST_BAD_ALLOC;
|
||||
}
|
||||
|
||||
slice->arr = arr;
|
||||
slice->start = start;
|
||||
slice->end = start + len;
|
||||
slice->current = start;
|
||||
slice->is_safe = false;
|
||||
new_slice->arr = arr;
|
||||
new_slice->start = start;
|
||||
new_slice->end = start + len;
|
||||
new_slice->current = start;
|
||||
new_slice->is_safe = false;
|
||||
|
||||
return slice;
|
||||
*slice = new_slice;
|
||||
return ARRLIST_OK;
|
||||
}
|
||||
|
||||
ArrayListErr arrayslice_destroy(ArraySlice **slice) {
|
||||
|
||||
Reference in New Issue
Block a user