int main() { buzzstrman_t sm = buzzstrman_new(); printf("=== ADDING PROTECTED STRINGS ===\n\n"); buzzstrman_register(sm, "ciao", 1); buzzstrman_register(sm, "come va?", 1); buzzstrman_register(sm, "io bene", 1); buzzstrman_print(sm); printf("\n=== ADDING UNPROTECTED STRINGS ===\n\n"); buzzstrman_register(sm, "la famiglia?", 0); buzzstrman_register(sm, "eh, si tira avanti", 0); buzzstrman_register(sm, "si, son ragazzi", 0); buzzstrman_register(sm, "i figli so piezz'e core", 0); buzzstrman_print(sm); printf("\n=== ADDING DUPLICATE STRING ===\n\n"); buzzstrman_register(sm, "ciao", 1); buzzstrman_register(sm, "eh, si tira avanti", 1); buzzstrman_print(sm); printf("\n=== GARBAGE COLLECTION ===\n\n"); buzzstrman_gc_clear(sm); buzzstrman_gc_mark(sm, buzzstrman_register(sm, "la famiglia?", 0)); buzzstrman_gc_mark(sm, buzzstrman_register(sm, "si, son ragazzi", 0)); buzzstrman_gc_prune(sm); buzzstrman_print(sm); buzzstrman_destroy(&sm); return 0; }
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; }