mirror of
https://github.com/json-c/json-c.git
synced 2026-04-04 04:49:06 +08:00
Added array_list_del_idx and json_object_array_del_idx
This commit is contained in:
15
arraylist.c
15
arraylist.c
@@ -106,3 +106,18 @@ array_list_length(struct array_list *arr)
|
|||||||
{
|
{
|
||||||
return arr->length;
|
return arr->length;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
array_list_del_idx( struct array_list *arr, int idx, int count )
|
||||||
|
{
|
||||||
|
int i, stop;
|
||||||
|
|
||||||
|
stop = idx + count;
|
||||||
|
if ( idx >= arr->length || stop > arr->length ) return -1;
|
||||||
|
for ( i = idx; i < stop; ++i ) {
|
||||||
|
if ( arr->array[i] ) arr->free_fn( arr->array[i] );
|
||||||
|
}
|
||||||
|
memmove( arr->array + idx, arr->array + stop, (arr->length - stop) * sizeof(void*) );
|
||||||
|
arr->length -= count;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|||||||
@@ -53,6 +53,8 @@ extern void* array_list_bsearch(const void **key,
|
|||||||
struct array_list *arr,
|
struct array_list *arr,
|
||||||
int (*sort_fn)(const void *, const void *));
|
int (*sort_fn)(const void *, const void *));
|
||||||
|
|
||||||
|
extern int
|
||||||
|
array_list_del_idx(struct array_list *arr, int i, int count);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -926,3 +926,7 @@ struct json_object* json_object_array_get_idx(struct json_object *jso,
|
|||||||
return (struct json_object*)array_list_get_idx(jso->o.c_array, idx);
|
return (struct json_object*)array_list_get_idx(jso->o.c_array, idx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int json_object_array_del_idx(struct json_object *jso, int idx, int count)
|
||||||
|
{
|
||||||
|
return array_list_del_idx(jso->o.c_array, idx, count);
|
||||||
|
}
|
||||||
|
|||||||
@@ -464,6 +464,19 @@ extern int json_object_array_put_idx(struct json_object *obj, int idx,
|
|||||||
extern struct json_object* json_object_array_get_idx(struct json_object *obj,
|
extern struct json_object* json_object_array_get_idx(struct json_object *obj,
|
||||||
int idx);
|
int idx);
|
||||||
|
|
||||||
|
/** Delete an elements from a specified index in an array (a json_object of type json_type_array)
|
||||||
|
*
|
||||||
|
* The reference count will be decremented for each of the deleted objects. If there
|
||||||
|
* are no more owners of an element that is being deleted, then the value is
|
||||||
|
* freed. Otherwise, the reference to the value will remain in memory.
|
||||||
|
*
|
||||||
|
* @param obj the json_object instance
|
||||||
|
* @param idx the index to start deleting elements at
|
||||||
|
* @param count the number of elements to delete
|
||||||
|
* @returns 0 if the elements were successfully deleted
|
||||||
|
*/
|
||||||
|
extern int json_object_array_del_idx(struct json_object *obj, int idx, int count);
|
||||||
|
|
||||||
/* json_bool type methods */
|
/* json_bool type methods */
|
||||||
|
|
||||||
/** Create a new empty json_object of type json_type_boolean
|
/** Create a new empty json_object of type json_type_boolean
|
||||||
|
|||||||
Reference in New Issue
Block a user