in include/yyjson/yyjson.h [6085:6114]
yyjson_api_inline bool yyjson_mut_arr_insert(yyjson_mut_val *arr,
yyjson_mut_val *val, size_t idx) {
if (yyjson_likely(yyjson_mut_is_arr(arr) && val)) {
size_t len = unsafe_yyjson_get_len(arr);
if (yyjson_likely(idx <= len)) {
unsafe_yyjson_set_len(arr, len + 1);
if (len == 0) {
val->next = val;
arr->uni.ptr = val;
} else {
yyjson_mut_val *prev = ((yyjson_mut_val *)arr->uni.ptr);
yyjson_mut_val *next = prev->next;
if (idx == len) {
prev->next = val;
val->next = next;
arr->uni.ptr = val;
} else {
while (idx-- > 0) {
prev = next;
next = next->next;
}
prev->next = val;
val->next = next;
}
}
return true;
}
}
return false;
}