void buzzvm_destroy(buzzvm_t* vm) { /* Get rid of the rng state */ free((*vm)->rngstate); /* Get rid of the stack */ buzzstrman_destroy(&(*vm)->strings); /* Get rid of the global variable table */ buzzdict_destroy(&(*vm)->gsyms); /* Get rid of the local variable tables */ buzzdarray_destroy(&(*vm)->lsymts); /* Get rid of the stack */ buzzdarray_destroy(&(*vm)->stacks); /* Get rid of the heap */ buzzheap_destroy(&(*vm)->heap); /* Get rid of the function list */ buzzdarray_destroy(&(*vm)->flist); /* Get rid of the swarm list */ buzzdict_destroy(&(*vm)->swarms); buzzdarray_destroy(&(*vm)->swarmstack); buzzswarm_members_destroy(&((*vm)->swarmmembers)); /* Get rid of the message queues */ buzzinmsg_queue_destroy(&(*vm)->inmsgs); buzzoutmsg_queue_destroy(&(*vm)->outmsgs); /* Get rid of the virtual stigmergy structures */ buzzdict_destroy(&(*vm)->vstigs); /* Get rid of neighbor value listeners */ buzzdict_destroy(&(*vm)->listeners); free(*vm); *vm = 0; }
int main() { buzzdict_t di = buzzdict_new(4, sizeof(int16_t), sizeof(float), di_hash, di_cmp, NULL); int16_t k; float d; di_print(di); int i; for(i = 0; i < 10; ++i) { k = i; d = (100.0f + k); fprintf(stdout, "adding (%d, %f)\n", k, d); buzzdict_set(di, &k, &d); di_print(di); } k = 5; d = (200.0f + k); fprintf(stdout, "assigning (%d, %f)\n", k, d); buzzdict_set(di, &k, &d); di_print(di); k = 10; d = (200.0f + k); fprintf(stdout, "assigning (%d, %f)\n", k, d); buzzdict_set(di, &k, &d); di_print(di); k = 4; fprintf(stdout, "removing (%d)\n", k); buzzdict_remove(di, &k); di_print(di); k = 10; fprintf(stdout, "removing (%d)\n", k); buzzdict_remove(di, &k); di_print(di); buzzdict_destroy(&di); return 0; }
void buzzvstig_destroy(buzzvstig_t* vs) { buzzdict_destroy(&((*vs)->data)); free((*vs)->onconflict); free((*vs)->onconflictlost); free(*vs); }
void buzzswarm_members_destroy(buzzswarm_members_t* m) { buzzdict_destroy(m); }