Add array_{appendall,removeall,appendallu}.
This commit is contained in:
		
							parent
							
								
									ee93389c5f
								
							
						
					
					
						commit
						b7af003dbb
					
				
					 2 changed files with 39 additions and 0 deletions
				
			
		| 
						 | 
					@ -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…
	
	Add table
		
		Reference in a new issue