inline container* map_clone( container *C ) { map_container_priv *LP = C->priv; container *N = LP->Key->clone(LP->Key), *M = LP->Data->clone(LP->Data); return map_container(N,M); }
void va_attribute_count_add( int size, int count, container *attributes, int argc, va_list *ap ) { ant[0]++; int i; char *id = va_arg(*ap, char*); container *subattr; iterator it = map_find(attributes, id); if (it.valid) { ant[1]++; subattr = pair(map_val(it)).first.ptr; container *M = pair(map_val(it)).second.ptr; it = map_find(M, count); if (it.valid) { ant[2]++; map_val(it).i+= size; } else { ant[3]++; map_insert(M, count, size); } //for (i=0; i<len; i++) //((int*)pair(map_val(it)).second.ptr)[i]+= count[i]; } else { ant[4]++; subattr = map_container( string_container(), pair_container( ptr_container(), ptr_container() ) ); container *M = map_container( int_container(), int_container() ); map_insert(M, count, size); //int *C = malloc(sizeof(int)*len); //for (i=0; i<len; i++) C[i] = count[i]; map_insert(attributes, id, subattr, M); } if (argc > 1) va_attribute_count_add( size, count, subattr, argc-1, ap ); }