|  | @@ -156,6 +156,16 @@ char *smartlist_join_strings2(smartlist_t *sl, const char *join,
 | 
	
		
			
				|  |  |        cmd;                                                      \
 | 
	
		
			
				|  |  |      } } while (0)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +/** Helper: While in a SMARTLIST_FOREACH loop over the list <b>sl</b> indexed
 | 
	
		
			
				|  |  | + * with the variable <b>var</b>, remover the current element in a way that
 | 
	
		
			
				|  |  | + * won't confuse the loop. */
 | 
	
		
			
				|  |  | +#define SMARTLIST_DEL_CURRENT(sl, var)          \
 | 
	
		
			
				|  |  | +  do {                                          \
 | 
	
		
			
				|  |  | +    smartlist_del(sl, var ## _sl_idx);          \
 | 
	
		
			
				|  |  | +    --var ## _sl_idx;                           \
 | 
	
		
			
				|  |  | +    --var ## _sl_len;                           \
 | 
	
		
			
				|  |  | +  } while (0);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  #define DECLARE_MAP_FNS(maptype, keytype, prefix)                       \
 | 
	
		
			
				|  |  |    typedef struct maptype maptype;                                       \
 | 
	
		
			
				|  |  |    typedef struct prefix##entry_t *prefix##iter_t;                       \
 |