Add array_{appendall,removeall,appendallu}.
This commit is contained in:
parent
ee93389c5f
commit
b7af003dbb
|
@ -90,5 +90,38 @@ void* array_pop(void* arrayp)
|
|||
return array->item[array->count--];
|
||||
}
|
||||
|
||||
void array_appendall(void* arrayp, void* srcp)
|
||||
{
|
||||
struct array* array = arrayp;
|
||||
struct array* src = srcp;
|
||||
int i;
|
||||
|
||||
for (i=0; i<src->count; i++)
|
||||
array_append(array, src->item[i]);
|
||||
}
|
||||
|
||||
void array_removeall(void* arrayp, void* srcp)
|
||||
{
|
||||
struct array* array = arrayp;
|
||||
struct array* src = srcp;
|
||||
int i;
|
||||
|
||||
for (i=0; i<src->count; i++)
|
||||
array_remove(array, src->item[i]);
|
||||
}
|
||||
|
||||
bool array_appendallu(void* arrayp, void* srcp)
|
||||
{
|
||||
struct array* array = arrayp;
|
||||
struct array* src = srcp;
|
||||
bool unchanged = true;
|
||||
int i;
|
||||
|
||||
for (i=0; i<src->count; i++)
|
||||
unchanged &= array_appendu(array, src->item[i]);
|
||||
|
||||
return unchanged;
|
||||
}
|
||||
|
||||
/* vim: set sw=4 ts=4 expandtab : */
|
||||
|
||||
|
|
|
@ -27,5 +27,11 @@ extern int array_indexof(void* array, void* value);
|
|||
#define array_push(a, v) array_append(a, v)
|
||||
extern void* array_pop(void* array);
|
||||
|
||||
extern void array_appendall(void* dest, void* src);
|
||||
extern void array_removeall(void* dest, void* src);
|
||||
|
||||
/* Returns false if *any* items were added. */
|
||||
extern bool array_appendallu(void* dest, void* src);
|
||||
|
||||
#endif
|
||||
|
||||
|
|
Loading…
Reference in a new issue