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--];
|
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 : */
|
/* 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)
|
#define array_push(a, v) array_append(a, v)
|
||||||
extern void* array_pop(void* array);
|
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
|
#endif
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue