Esempio n. 1
0
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;
}
Esempio n. 2
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;
}