void nvpair_print_json(struct nvpair *n, FILE * s) { char *key; void *value; int i = 0; int count = hash_table_size(n->table); fprintf(s, "{\n"); hash_table_firstkey(n->table); while(hash_table_nextkey(n->table, &key, &value)) { fprintf(s,"\"%s\":",key); if(string_is_integer(value)) { fprintf(s,"%s",(char*)value); } else { fprintf(s,"\"%s\"",(char*)value); } i++; if(i<count) fprintf(s,",\n"); } fprintf(s, "\n}\n"); }
bool sort_list(port_type_t type) { hash_table_t *table = get_map_by_type(type); if (table == NULL) { return false; } uint table_size = hash_table_size(table); if (topn_ip != NULL) { topn_free(topn_ip); } topn_ip = topn_new(table_size, ip_compare, table, NULL, NULL); hash_table_foreach(table, sort_ip, topn_ip); //topn_foreach(topn_ip, print, NULL); return true; }
struct ht_ht * generate_frequencies (int fl, char *buffer, long buflen) { struct ht_ht *ht; char *reader; long i; char nulled; if (fl > buflen) return NULL; ht = ht_create (hash_table_size (fl, buflen)); for (i = 0; i < buflen - fl + 1; i++) { reader = &(buffer[i]); nulled = reader[fl]; reader[fl] = 0x00; ht_find_new (ht, reader)->val++; reader[fl] = nulled; } return ht; }
int chirp_alloc_flush_needed() { if(!alloc_enabled) return 0; return hash_table_size(alloc_table); }
int main(void) { hash_table_t ht; network_address_t addr1; network_address_t addr2; network_address_t addr3; network_address_t addr4; addr1[0] = 42; addr1[1] = 1; addr2[1] = 2; addr3[1] = 3; addr4[0] = 14; addr4[1] = 4; assert(network_compare_network_addresses(addr1, addr1)); ht = hash_table_create(); assert(hash_table_size(ht) == 0); assert(hash_table_capacity(ht) == 64); hash_table_add(ht, addr1, (void*)8); hash_table_add(ht, addr2, (void*)16); hash_table_add(ht, addr3, (void*)24); assert(hash_table_contains(ht, addr1)); assert(!hash_table_contains(ht, addr4)); assert((long)hash_table_get(ht, addr2) == 16); assert((long)hash_table_get(ht, addr3) == 24); assert(hash_table_size(ht) == 3); assert((long)hash_table_remove(ht, addr1) == 8); assert(!hash_table_contains(ht, addr1)); assert(hash_table_capacity(ht) == 64); assert(hash_table_size(ht) == 2); assert(!hash_table_destroy(ht)); ht = hash_table_create(); assert(hash_table_size(ht) == 0); assert(!hash_table_add(ht, addr1, (void*)8)); assert((long)hash_table_get(ht, addr2) == 0); assert(!hash_table_add(ht, addr2, (void*)16)); assert((long)hash_table_get(ht, addr2) == 16); assert(!hash_table_destroy(ht)); ht = hash_table_create(); hash_table_add(ht, addr4, (void*)32); hash_table_add(ht, addr4, (void*)32); hash_table_add(ht, addr4, (void*)32); hash_table_add(ht, addr4, (void*)32); assert(hash_table_size(ht) == 4); assert(hash_table_contains(ht, addr4)); assert((long)hash_table_remove(ht, addr4) == 32); assert((long)hash_table_remove(ht, addr1) == 0); assert(hash_table_contains(ht, addr4)); assert(hash_table_size(ht) == 3); assert((long)hash_table_remove(ht, addr4) == 32); assert((long)hash_table_remove(ht, addr4) == 32); assert((long)hash_table_remove(ht, addr4) == 32); assert(!hash_table_contains(ht, addr4)); assert(hash_table_size(ht) == 0); assert(!hash_table_destroy(ht)); ht = hash_table_create(); assert(hash_table_size(ht) == 0); assert(hash_table_capacity(ht) == 64); hash_table_add(ht, addr1, (void*)8); hash_table_add(ht, addr2, (void*)16); hash_table_add(ht, addr1, (void*)8); hash_table_add(ht, addr2, (void*)16); hash_table_add(ht, addr1, (void*)8); hash_table_add(ht, addr2, (void*)16); hash_table_add(ht, addr1, (void*)8); hash_table_add(ht, addr2, (void*)16); hash_table_add(ht, addr1, (void*)8); assert(hash_table_contains(ht, addr2)); assert(!hash_table_contains(ht, addr4)); assert(!hash_table_get(ht, addr4)); hash_table_add(ht, addr2, (void*)16); hash_table_add(ht, addr1, (void*)8); hash_table_add(ht, addr2, (void*)16); hash_table_add(ht, addr1, (void*)8); hash_table_add(ht, addr2, (void*)16); hash_table_add(ht, addr1, (void*)8); hash_table_add(ht, addr2, (void*)16); hash_table_add(ht, addr1, (void*)8); hash_table_add(ht, addr2, (void*)16); hash_table_add(ht, addr1, (void*)8); hash_table_add(ht, addr2, (void*)16); hash_table_add(ht, addr1, (void*)8); hash_table_add(ht, addr2, (void*)16); hash_table_add(ht, addr1, (void*)8); hash_table_add(ht, addr2, (void*)16); hash_table_add(ht, addr1, (void*)8); hash_table_add(ht, addr2, (void*)16); hash_table_add(ht, addr1, (void*)8); hash_table_add(ht, addr2, (void*)16); hash_table_add(ht, addr1, (void*)8); hash_table_add(ht, addr2, (void*)16); hash_table_add(ht, addr1, (void*)8); hash_table_add(ht, addr2, (void*)16); hash_table_add(ht, addr1, (void*)8); hash_table_add(ht, addr2, (void*)16); hash_table_add(ht, addr1, (void*)8); hash_table_add(ht, addr2, (void*)16); hash_table_add(ht, addr1, (void*)8); hash_table_add(ht, addr2, (void*)16); hash_table_add(ht, addr1, (void*)8); hash_table_add(ht, addr2, (void*)16); hash_table_add(ht, addr1, (void*)8); hash_table_add(ht, addr2, (void*)16); hash_table_add(ht, addr1, (void*)8); hash_table_add(ht, addr2, (void*)16); hash_table_add(ht, addr1, (void*)8); hash_table_add(ht, addr2, (void*)16); hash_table_add(ht, addr1, (void*)8); hash_table_add(ht, addr2, (void*)16); hash_table_add(ht, addr1, (void*)8); hash_table_add(ht, addr2, (void*)16); assert(hash_table_size(ht) == 50); assert(hash_table_capacity(ht) == 128); assert((long)hash_table_remove(ht, addr1) == 8); assert((long)hash_table_remove(ht, addr2) == 16); assert((long)hash_table_remove(ht, addr1) == 8); assert((long)hash_table_remove(ht, addr2) == 16); assert((long)hash_table_remove(ht, addr1) == 8); assert((long)hash_table_remove(ht, addr2) == 16); assert((long)hash_table_remove(ht, addr1) == 8); assert((long)hash_table_remove(ht, addr2) == 16); assert((long)hash_table_remove(ht, addr1) == 8); assert((long)hash_table_remove(ht, addr2) == 16); assert((long)hash_table_remove(ht, addr1) == 8); assert((long)hash_table_remove(ht, addr2) == 16); assert((long)hash_table_remove(ht, addr1) == 8); assert((long)hash_table_remove(ht, addr2) == 16); assert((long)hash_table_remove(ht, addr1) == 8); assert((long)hash_table_remove(ht, addr2) == 16); assert((long)hash_table_remove(ht, addr1) == 8); assert((long)hash_table_remove(ht, addr2) == 16); assert((long)hash_table_remove(ht, addr1) == 8); assert((long)hash_table_remove(ht, addr2) == 16); assert(hash_table_size(ht) == 30); assert(hash_table_capacity(ht) == 64); printf("all tests pass\n"); return 0; }