Exemple #1
0
void del_tree(struct node *n)
{
	if (n == NULL)
		return;

	del_tree(n->left);
	del_tree(n->right);

	free(n);
}
Exemple #2
0
int					del_tree(t_node **tree)
{
	if (tree && *tree)
	{
		if ((*tree) && (*tree)->left)
			del_tree(&((*tree)->left));
		if ((*tree) && (*tree)->right)
			del_tree(&((*tree)->right));
		clear_node(tree);
		tree = NULL;
	}
	savior_tree(NULL, TRUE);
	return (TRUE);
}
Exemple #3
0
int
del_tree(
		ptree_t* t
		)
{
	int i,j;
	if(NULL == t)
		goto exit;
	/* delete all the children */
	for(i=0; i< PTREE_CHILDREN; i++) {
		/* shm_free the rg array of rt_info */
		if(NULL!=t->ptnode[i].rg) {
			for(j=0;j<t->ptnode[i].rg_pos;j++) {
				/* if non intermediate delete the routing info */
				if(t->ptnode[i].rg[j].rtlw !=NULL)
					del_rt_list(t->ptnode[i].rg[j].rtlw);
			}
			shm_free(t->ptnode[i].rg);
		}
		/* if non leaf delete all the children */
		if(t->ptnode[i].next != NULL)
			del_tree(t->ptnode[i].next);
	}
	shm_free(t);
exit:
	return 0;
}
Exemple #4
0
/* test */
int main()
{
	struct node *l, *r, *root = cons(1);

	l = cons(2);
	r = cons(3);
	root->left = l;
	root->right = r;

	l->left = cons(4);
	l->right = cons(5);

	r->left = cons(6);
	r->right = cons(7);

	printf("before:\n");
	print(root, 0);
	printf("\n");

	printf("breadth-first traversal...\n");
	bro_link(root);
	printf("\n");

	printf("after:\n");
	print(root, 0);

	del_tree(root);
	return 0;
}
Exemple #5
0
void
free_rt_data(
		rt_data_t* rt_data,
		int all
		)
{
	int j;
	if(NULL!=rt_data) {
		/* del GW list */
		del_pgw_list(rt_data->pgw_l);
		rt_data->pgw_l = 0 ;
		/* del prefix tree */
		del_tree(rt_data->pt);
		rt_data->pt = 0 ;
		/* del prefixless rules */
		if(NULL!=rt_data->noprefix.rg) {
			for(j=0;j<rt_data->noprefix.rg_pos;j++) {
				if(rt_data->noprefix.rg[j].rtlw !=NULL) {
					del_rt_list(rt_data->noprefix.rg[j].rtlw);
					rt_data->noprefix.rg[j].rtlw = 0;
				}
			}
			shm_free(rt_data->noprefix.rg);
			rt_data->noprefix.rg = 0;
		}
		/* del carriers */
		del_carriers_list(rt_data->carriers);
		rt_data->carriers=0;
		/* del top level */
		if (all) shm_free(rt_data);
	}
}
Exemple #6
0
void 
free_rt_data(
		rt_data_t* rt_data,
		int all
		)
{
	int j;
	if(NULL!=rt_data) {
		/* del GW list */
		del_pgw_list(rt_data->pgw_l);
		rt_data->pgw_l = 0 ;
		/* del GW addr list */
		del_pgw_addr_list(rt_data->pgw_addr_l);
		rt_data->pgw_addr_l =0;
		/* del prefix tree */
		del_tree(rt_data->pt);
		/* del prefixless rules */
		if(NULL!=rt_data->noprefix.rg) {
			for(j=0;j<rt_data->noprefix.rg_pos;j++) {
				if(rt_data->noprefix.rg[j].rtlw !=NULL) {
					del_rt_list(rt_data->noprefix.rg[j].rtlw);
					rt_data->noprefix.rg[j].rtlw = 0;
				}
			}
			shm_free(rt_data->noprefix.rg);
			rt_data->noprefix.rg = 0;
		}
		/* del top level or reset to 0 it's content */
		if (all) shm_free(rt_data);
		else memset(rt_data, 0, sizeof(rt_data_t));
	}
}
Exemple #7
0
int main() {
	bintree mytree = {0};
	srand(time(NULL));
    for (unsigned long long i = 0; i < TREE_SIZE; i++) {
        add_to_tree(&mytree, rand() % 100);
    }
    print_tree(&mytree);
    del_tree(&mytree);
	return 0;
}
Exemple #8
0
int del_tree(struct _node *root){
	/* Deja free ou blague... */
	if(root==NULL)
		return EXIT_FAILURE;
	/* Si on est sur un feuille c'est facile! */
	if(!is_leaf(root))
		del_tree(root->first_son);
	del_bro(root);
	return EXIT_SUCCESS;
}
Exemple #9
0
void del_tree(TreeNode *tree)
{
    int i;
    // Si ce n'est pas une feuille, appel récursif
    if(tree->childs[0] != NULL)
    {
        for(i=0; i<4; ++i)
            del_tree(tree->childs[i]);
    }
    free(tree);
}
Exemple #10
0
int del_bro(struct _node *node) {
	if(node==NULL)
		return EXIT_FAILURE;
	fprintf(stderr,"%c",node->c);
	if(!is_last_son(node))
		del_tree(node->brother);
	if(node->variable!=NULL)
		free(node->variable);
	free(node);
	return EXIT_SUCCESS;
}
Exemple #11
0
VOID cut_tree(WORD sobj, WORD dup)
{
	WORD	where;
	LONG	tree;

	if (rcs_lock)
		hndl_locked();
	else
	{
		tree = tree_addr(sobj - 1);
		where = find_value((BYTE *) tree);
		rcs_clipkind = get_kind(where);
		ad_clip = copy_tree(tree, ROOT, TRUE);
		if (!dup)
			del_tree(sobj);
	}
}
Exemple #12
0
void tree_mergeNode(TreeNode *parent)
{
    int i, j;
    TreeNode *tmpChilds[4];
    // On stoque l'addresse des fils, et on les détache du parent
    for(i=0; i<4; ++i)
    {
        tmpChilds[i] = parent->childs[i];
        parent->childs[i] = NULL;
    }

    // Remise à propre du parent
    for(i=0; i<NODE_MAX_DYNAMIC_ACTOR; ++i)
        parent->dynamicObjects[i] = NULL;
    for(i=0; i<NODE_MAX_STATIC_ACTOR; ++i)
        parent->staticObjects[i] = NULL;
    parent->nb_dynamicObjects = 0;
    parent->nb_staticObjects = 0;

    // On réinjecte les actors des fils dans le père et on supprime les fils
    for(i=0; i<4; ++i)
    {
        for(j=0; j<NODE_MAX_DYNAMIC_ACTOR; ++j)
        {
            if(tmpChilds[i]->dynamicObjects[j] != NULL)
            {
                parent->dynamicObjects[parent->nb_dynamicObjects] = tmpChilds[i]->dynamicObjects[j];
                parent->nb_dynamicObjects++;
            }
        }
        for(j=0; j<NODE_MAX_STATIC_ACTOR; ++j)
        {
            if(tmpChilds[i]->staticObjects[j] != NULL)
            {
                parent->staticObjects[parent->nb_staticObjects] = tmpChilds[i]->staticObjects[j];
                parent->nb_staticObjects++;
            }
        }
        del_tree(tmpChilds[i]);
    }
    // Mise à jour du nombre de nodes
    nb_nodes -= 4;
}
Exemple #13
0
int					exit_pgm(int exit_code)
{
	t_node				*tree;
	t_line				*stline;
	t_duo				*env;

	tree = savior_tree(NULL, FALSE);
	savior_history(NULL, FALSE);
	stline = savior_stline(NULL, FALSE);
	env = savior_env(NULL, FALSE);
	del_tree(&tree);
	savior_tree(NULL, TRUE);
	save_history();
	duo_del(&env);
	savior_env(NULL, TRUE);
	reset_term();
	del_stline(&stline);
	savior_stline(NULL, TRUE);
	exit(exit_code);
	return (0);
}
Exemple #14
0
/******************************************************************************

  mysql_install_db()
  
  Install the test databases.

******************************************************************************/
void mysql_install_db()
{
  char temp[PATH_MAX];
  
  // var directory
  snprintf(temp, PATH_MAX, "%s/var", mysql_test_dir);
  
  // clean up old direcotry
  del_tree(temp);
  
  // create var directory
  mkdir(temp, S_IRWXU);
  
  // create subdirectories
  log_msg("Creating test-suite folders...\n");
  snprintf(temp, PATH_MAX, "%s/var/run", mysql_test_dir);
  mkdir(temp, S_IRWXU);
  snprintf(temp, PATH_MAX, "%s/var/tmp", mysql_test_dir);
  mkdir(temp, S_IRWXU);
  snprintf(temp, PATH_MAX, "%s/var/master-data", mysql_test_dir);
  mkdir(temp, S_IRWXU);
  snprintf(temp, PATH_MAX, "%s/var/master-data/mysql", mysql_test_dir);
  mkdir(temp, S_IRWXU);
  snprintf(temp, PATH_MAX, "%s/var/master-data/test", mysql_test_dir);
  mkdir(temp, S_IRWXU);
  snprintf(temp, PATH_MAX, "%s/var/slave-data", mysql_test_dir);
  mkdir(temp, S_IRWXU);
  snprintf(temp, PATH_MAX, "%s/var/slave-data/mysql", mysql_test_dir);
  mkdir(temp, S_IRWXU);
  snprintf(temp, PATH_MAX, "%s/var/slave-data/test", mysql_test_dir);
  mkdir(temp, S_IRWXU);

  // install databases
  log_msg("Creating test databases for master... \n");
  install_db(master_dir);
  log_msg("Creating test databases for slave... \n");
  install_db(slave_dir);
}
Exemple #15
0
int
km_coffee_align3(char *seq_f, int k, int k_leaf, char *method, char *aln_f, int n_cores, int gapopen, int gapext, char *init)
{
	char *use_as_temp = get_tmp_4_tcoffee();

	#ifdef _OPENMP
		omp_set_num_threads(n_cores);
	#endif

	SeqSet *seq_set = read_fasta(seq_f);
	qsort(seq_set->seqs, seq_set->n_seqs, sizeof(Seq*), my_seq_sort);
	srand(time(0));


	short j = -1;
	short i;
	/****************************************************
	Sequences to vector using k-mers
	*****************************************************/
	short alphabet[256];

	// standard alphabet
	for (i = 65; i < 91; ++i)
		if ((i==66) || (i==74) || (i==79) || (i==88) || (i==90))
			alphabet[i] = 0;
		else
			alphabet[i] = ++j;
	j=-1;
	for (i = 97; i < 123; ++i)
		if ((i==98) || (i==106) || (i==111) || (i==120) || (i==122))
			alphabet[i] = 0;
		else
			alphabet[i] = ++j;

	// shrinked alphabet
//	for (i = 0; i < 256; ++i)
//		alphabet[i] = 0;

// 	char *groups[]={"LlVvIiMmCcAaGgSsTtPpFfYyWw","EeDdNnQqKkRrHh"};
//	char *groups[]={"LlVvIiMmCc","AaGgSsTtPp","FfYyWw","EeDdNnQqKkRrHh"};
//	size_t n_groups = 4;
// 	size_t len;
// 	char *group;
// 	for (i=0; i<n_groups; ++i)
// 	{
// 		group=groups[i];
// 		len=strlen(group);
// 		for (j=0; j<len; ++j)
// 			alphabet[group[j]]=i+1;
// 	}

	VectorSet *vec_set = seqset2vecs_kmer(seq_set, 2, 21, alphabet);


	/****************************************************
		Sequences to vector using distances
	*****************************************************/
	// 	char *groups[]={"LVIMC","AGSTP","FYW","EDNQKRH"};
// 	size_t n_groups = 4;
// 	char *groups[]={"LlVvIiMmCc","AaGgSsTtPp","FfYyWw","EeDdNnQqKkRrHh"};
// 	char *groups[]={"LlVvIiMmCcAaGgSsTtPpFfYyWw","EeDdNnQqKkRrHh"};
// 	size_t n_groups = 2;
// 	VectorSet *vec_set = seqset2vecs_whatever(seq_set, groups, n_groups);






// 	char vec_file[500];
// 	sprintf(vec_file, "%s_2_8_%li_%li.txt", strrchr(seq_f, '/')+1, vec_set->n_vecs, vec_set->dim);

// 	print_vecs(vec_set, &vec_file[0]);
// 	read_vecs(vec_set, "matrix_59");
// 	exit(1);
//	normalize(vec_set);
	KM_node *root = hierarchical_kmeans(vec_set, k, k_leaf, init, 0.001);
// 	KM_node *root = simple_clust(vec_set, k);


	char templatee[400];
	sprintf(templatee, "%s/km_coffee_tmp_XXXXXX", use_as_temp);
	char tmp_str[FILENAME_MAX];
	km_cwd = getcwd(tmp_str, FILENAME_MAX);

	km_tmp_dir = my_make_temp_dir(templatee, "main");
	chdir(km_tmp_dir);
	char out_f[500];
	if (aln_f[0] != '/')
		sprintf(out_f, "%s/%s", km_cwd, aln_f);
	else
		sprintf(out_f, "%s", aln_f);



	size_t n_vecs = seq_set->n_seqs;
	int *assignment = (int*)malloc(n_vecs*sizeof(int));
	size_t l;
	for (l = 0; l< n_vecs; ++l)
		assignment[l]=vec_set->vecs[l]->id;

// 	printf("TRAVERSE\n");
	delVecSet(vec_set);
	traverse_km_tree(root, assignment, seq_set, out_f, n_cores, gapopen, gapext, method);
	free( assignment);
	del_tree(root);
	delSeqSet(seq_set);

	free(km_tmp_dir);




	return EXIT_SUCCESS;
}
Exemple #16
0
int main()
{
  TreeNode *tree = NULL;
  TreeNode *node;
  guint i;
  g_assert (!add_tree (&tree, 1));
  g_assert (!add_tree (&tree, 2));
  g_assert (!add_tree (&tree, 3));
  g_assert ( add_tree (&tree, 1));
  g_assert ( add_tree (&tree, 2));
  g_assert ( add_tree (&tree, 3));
  g_assert (!test_tree (&tree, 0));
  g_assert ( test_tree (&tree, 1));
  g_assert ( test_tree (&tree, 2));
  g_assert ( test_tree (&tree, 3));
  g_assert (!test_tree (&tree, 4));
  g_assert (!del_tree  (&tree, 0));
  g_assert ( del_tree  (&tree, 2));
  g_assert (!del_tree  (&tree, 4));
  g_assert (!test_tree (&tree, 0));
  g_assert ( test_tree (&tree, 1));
  g_assert (!test_tree (&tree, 2));
  g_assert ( test_tree (&tree, 3));
  g_assert (!test_tree (&tree, 4));
  g_assert ( add_tree (&tree, 1));
  g_assert (!add_tree (&tree, 2));
  g_assert ( add_tree (&tree, 3));
  g_assert ( del_tree  (&tree, 1));
  g_assert ( del_tree  (&tree, 2));
  g_assert ( del_tree  (&tree, 3));
  g_assert (tree == NULL);

  GSK_RBTREE_FIRST (TREE(&tree), node);
  g_assert (node == NULL);
  GSK_RBTREE_LAST (TREE(&tree), node);
  g_assert (node == NULL);

  /* Construct tree with odd numbers 1..999 inclusive */
  for (i = 1; i <= 999; i += 2)
    g_assert (!add_tree (&tree, i));

  GSK_RBTREE_FIRST (TREE(&tree), node);
  g_assert (node != NULL);
  g_assert (node->value == 1);
  GSK_RBTREE_LAST (TREE(&tree), node);
  g_assert (node != NULL);
  g_assert (node->value == 999);

  for (i = 1; i <= 999; i += 2)
    {
      g_assert (test_tree (&tree, i));
      g_assert (!test_tree (&tree, i+1));
    }
  for (i = 0; i <= 999; i++)
    {
      GSK_RBTREE_SUPREMUM_COMPARATOR (TREE(&tree), i, COMPARE_INT_WITH_TREE_NODE, node);
      g_assert (node);
      g_assert (node->value == (i%2)?i:(i+1));
    }
  GSK_RBTREE_SUPREMUM_COMPARATOR (TREE(&tree), 1000, COMPARE_INT_WITH_TREE_NODE, node);
  g_assert (node==NULL);
  for (i = 1; i <= 1000; i++)
    {
      TreeNode *node;
      GSK_RBTREE_INFIMUM_COMPARATOR (TREE(&tree), i, COMPARE_INT_WITH_TREE_NODE, node);
      g_assert (node);
      g_assert (node->value == (i%2)?i:(i-1));
    }
  GSK_RBTREE_INFIMUM_COMPARATOR (TREE(&tree), 0, COMPARE_INT_WITH_TREE_NODE, node);
  g_assert (node==NULL);
  for (i = 1; i <= 999; i += 2)
    g_assert (del_tree (&tree, i));

  /* random rbctree test */
  g_printerr ("Testing RBC-tree macros... ");
  for (i = 0; i < 1000; i++)
    test_random_rbcint_tree (10, TRUE);
  g_printerr (".");
  for (i = 0; i < 100; i++)
    test_random_rbcint_tree (100, TRUE);
  g_printerr (".");
  for (i = 0; i < 50; i++)
    {
      test_random_rbcint_tree (1000, FALSE);
      g_printerr (".");
    }
  for (i = 0; i < 5; i++)
    {
      test_random_rbcint_tree (10000, FALSE);
      g_printerr (".");
    }
  g_printerr (" done.\n");

  return 0;
}
Exemple #17
0
int main()
{
    // Ressources
    unsigned long t_debut, t_fin;
    float dt, waitShoot = 0;
    BITMAP *buffer;
    int fin = 0, v = 200;
    Map *map;
    DepthList *depthList;
    Rect screen_pos, map_pos;
    Actor *joueur;

    // Initialisation
    fprintf(stderr,"Initialisation ...\n");
    timeBeginPeriod(1);
    set_uformat(U_ASCII);
    set_color_depth(32);
    allegro_init();
    install_keyboard();
    install_mouse();
    srand(time(NULL));

    if(set_gfx_mode(GFX_AUTODETECT_WINDOWED, 1024, 768, 0, 0))
        ERREUR("Echec du lancement du mode graphique.");
    buffer = create_bitmap(SCREEN_W, SCREEN_H);
    resman_loadSprites();

    fprintf(stderr,"Chargement des ressources ...\n");
    map = new_map("media/map/test1");
    map_pos.x = map_pos.y = 0;
    map_pos.w = map->w;
    map_pos.h = map->h;
    actList = new_glist();
    root = new_tree(map_pos);
    map_addEntities(map, actList, root);
    depthList = new_dlist();
    screen_pos.w = SCREEN_W;
    screen_pos.h = SCREEN_H;

    // Ajout du joueur
    joueur = actor_addJoueur(actList, root, 500, 500);

    // Intro
    debut();

    // Boucle principale
    fprintf(stderr,"Debut !\n");
    t_debut = timeGetTime();
    while(!fin)
    {
        // Gestion clavier
        if(key[KEY_ESC])
        {
            fin = 1;
        }
        if(key[KEY_W])
        {
            joueur->vit_y = -v;
            joueur->direction_regard = HAUT;
            joueur->etat = ETAT_MARCHE;
        }
        else if(key[KEY_S])
        {
            joueur->vit_y = v;
            joueur->direction_regard = BAS;
            joueur->etat = ETAT_MARCHE;
        }
        else
            joueur->vit_y = 0;
        if(key[KEY_A])
        {
            joueur->vit_x = -v;
            joueur->direction_regard = GAUCHE;
            joueur->etat = ETAT_MARCHE;
        }
        else if(key[KEY_D])
        {
            joueur->vit_x = v;
            joueur->direction_regard = DROITE;
            joueur->etat = ETAT_MARCHE;
        }
        else
            joueur->vit_x = 0;
        if(joueur->vit_x != 0 && joueur->vit_y != 0)
        {
            joueur->vit_x /= sqrt(2);
            joueur->vit_y /= sqrt(2);
        }
        if(!key[KEY_W] && !key[KEY_D] && !key[KEY_S] && !key[KEY_A])
            joueur->etat = ETAT_REPOS;
        if(key[KEY_Q])
        {
            if(waitShoot <= 0)
            {
                waitShoot = .1;
                actor_addTree(actList, root, mouse_x + screen_pos.x, mouse_y + screen_pos.y);
            }
        }
        waitShoot -= dt;
        if(mouse_b&1)
        {
            float vx, vy, v;
            if(waitShoot <= 0)
            {
                waitShoot = .3;
                vx = mouse_x - (joueur->pos_x - screen_pos.x);
                vy = mouse_y - (joueur->pos_y - screen_pos.y);
                v = sqrt(vx*vx + vy*vy);
                vx = vx/v;
                vy = vy/v;
                actor_addMissile(actList, root, joueur->pos_x + vx*joueur->w*1.5, joueur->pos_y + vy*joueur->h*1.5, vx*300, vy*300);
            }
        }
        if(key[KEY_P])
        {
            FILE *fd = fopen("arbres.txt", "w+");
            Actor *act;
            glist_startIter(actList);
            while(!glist_endIter(actList))
            {
                act = glist_getCurrentData(actList);
                if(act->type == ACT_TREE)
                    fprintf(fd, "%d\n%d\n", (int) act->pos_x, (int) act->pos_y);
                glist_iter(actList);
            }
            fclose(fd);
        }


        // Double buffer
        clear_bitmap(buffer);
        render_map(buffer, map, screen_pos.x, screen_pos.y);


        // Mises à jour
        resman_updateSprites(&dt);
        actor_spawnMonster(actList, root);
        actor_ia(actList, joueur);
        // Deplacement
        glist_startIter(actList);
        while(!glist_endIter(actList))
        {
            actor_update(glist_getCurrentData(actList), map_pos, map, dt);
            if( ((Actor*) glist_getCurrentData(actList))->deleting)
            {
                glist_remCell(actList, glist_getCurrentId(actList));
            }
            else
                glist_iter(actList);
        }
        // Cadrage ecran
        screen_pos.x = joueur->pos_x - SCREEN_W/2;
        screen_pos.y = joueur->pos_y - SCREEN_H/2;

        // Collision
        tree_collisionDetection(root);

        // Affichage
        tree_update(root);
        dlist_getActorsFromTree(depthList, root, screen_pos);
        dlist_update(depthList, screen_pos);
        dlist_blit(depthList, buffer, screen_pos);
        draw_cursor(buffer);
        textprintf_centre_ex(buffer, font, SCREEN_W/2, 5, makecol(0, 0, 0), makecol(255, 0, 0), "   Vies restantes : %d   |   Score : %d   ", joueur->vie, score);

        // Rafraichissement écran
        vsync();
        blit(buffer, screen, 0, 0, 0, 0, SCREEN_W, SCREEN_H);

        // Gestion du temps
        t_fin = timeGetTime();
        dt = ((float)t_fin - t_debut)/1000;
        t_debut = t_fin;

        // Test fin de jeu
        if(joueur->deleting)
            fin = 1;
        resman_freeList();
    }
    // Game over
    gameover();

    // Fin
    timeEndPeriod(1);
    delete_map(map);
    del_tree(root);
    del_dlist(depthList);
    del_glist(actList);
    destroy_bitmap(buffer);
    resman_freeSprites();
    allegro_exit();
    return 0;
}