int Mariadb_nodes::wait_all_vm() { int i = 0; while ((check_nodes() != 0) && (i < 20)) { sleep(10); } return(check_nodes()); }
static bool test_add_and_remove(void) { struct rb_root root = RB_ROOT; struct node_thing nodes[4]; bool expecteds[4]; int i; struct node_thing *exists; bool success = true; for (i = 0; i < ARRAY_SIZE(nodes); i++) { nodes[i].i = i; RB_CLEAR_NODE(&nodes[i].hook); expecteds[i] = false; } exists = add(&root, &nodes[1]); success &= ASSERT_PTR(NULL, exists, "exists 1"); expecteds[1] = true; success &= check_nodes(&root, expecteds); if (!success) return false; exists = add(&root, &nodes[3]); success &= ASSERT_PTR(NULL, exists, "exists 2"); expecteds[3] = true; success &= check_nodes(&root, expecteds); if (!success) return false; exists = add(&root, &nodes[0]); success &= ASSERT_PTR(NULL, exists, "exists 3"); expecteds[0] = true; success &= check_nodes(&root, expecteds); if (!success) return false; exists = add(&root, &nodes[2]); success &= ASSERT_PTR(NULL, exists, "exists 4"); expecteds[2] = true; success &= check_nodes(&root, expecteds); rb_erase(&nodes[2].hook, &root); expecteds[2] = false; success &= check_nodes(&root, expecteds); if (!success) return false; return success; }
/** * This function takes a dictionary tree and minimizes it using * Dominique Revuz's algorithm. 'used_inf_values' is used to mark * INF codes that are actually used in the .bin. */ void minimize_tree(struct dictionary_node* root,struct bit_array* used_inf_values,Abstract_allocator prv_alloc) { u_printf("Minimizing... \n"); struct transition_list** transitions_by_height; struct dictionary_node_transition** transitions; //init_minimize_arrays(&transitions_by_height,&transitions); init_minimize_arrays_transition_list(&transitions_by_height); unsigned int H=sort_by_height(root,transitions_by_height,used_inf_values,prv_alloc); unsigned int nb=0; for (unsigned int k1=0;k1<=H;k1++) { unsigned int nbcur = convert_list_to_array_size(k1,transitions_by_height); if (nbcur>nb) { nb = nbcur; } } init_minimize_arrays_dictionary_node_transition(&transitions,nb); float z; for (unsigned int k=0;k<=H;k++) { int size=convert_list_to_array(k,transitions_by_height,transitions,nb,prv_alloc); for (int l=0;l<size;l++) { check_nodes(transitions[l]); } quicksort(0,size-1,transitions); merge(size,transitions,prv_alloc); z=(float)(100.0*(float)(k)/(float)H); if (z>100.0) z=(float)100.0; u_printf("%2.0f%% completed... \r",z); } u_printf("Minimization done. \n"); free_minimize_arrays(transitions_by_height,transitions); }
// --------------------------------------------------------------------------- // Common call // ------------ void bXMapNetClean::process_network(netcleanact_prm* prm, int* fields, bArray& nodes, bArray& edges){ _bTrace_("bXMapNetClean::process_network(netcleanact_prm,int*,bArray&,bArray&)",true); if(_cfg_prm.tnod==NULL){ _te_("(_cfg_prm.tnod==NULL)"); return; } if( (_cfg_prm.tbdg==_cfg_prm.tnod) && (_cfg_prm.stbdg==_cfg_prm.stnod) ){ _cfg_prm.tbdg=NULL; } if( (_cfg_prm.stnod<1) || (_cfg_prm.stnod>_cfg_prm.tnod->fields()->count_constraints(kOBJ_SubType_)) ){ if( (_cfg_prm.tbdg) && (_cfg_prm.stbdg==1) ){ _te_("(_cfg_prm.tbdg)&&(_cfg_prm.stbdg==1)"); return; } _cfg_prm.stnod=1; } /* Inval et Draw pour provoquer un reset des styles Puis StopDraw derrière pour empécher le dessin Ceci pour régler le cas ou on supprime un objet dans la fonction précédente, qui va rester dans les index des styles et qui sera effacé définitivement par la déclaration du eventlog du nettoyage automatique */ _gapp->mapIntf()->inval(); _gapp->mapIntf()->draw(); _gapp->layersMgr()->StopDraw(); /**/ _gapp->layersMgr()->SetObjInvalidation(false); if(prm->create_nodes){ (void)create_nodes(edges,nodes,fields,prm->check_nodes); if(prm->cut_edges){ (void)cut_edges(nodes,edges,fields,prm->check_edges); } } if(prm->join_on_nodes){ (void)join_on_nodes(edges,fields,prm->check_edges); } else if(prm->join_on_edges){ (void)join_on_edges(nodes,fields,prm->check_nodes); } if(prm->check_nodes){ (void)check_nodes(nodes,fields); } if(prm->check_edges){ (void)check_edges(edges,fields); } _gapp->layersMgr()->SetObjInvalidation(true); }
/*================================= * check_and_fix_records -- *================================*/ static void check_and_fix_records (void) { tofix = create_list(); todo.pass = 1; check_nodes(); todo.pass = 2; fix_nodes(); destroy_empty_list(tofix); }
int finish_parsing(char **src, t_bin *bin, t_pars *pars) { int tmp; while (src[pars->i]) { if ((tmp = check_wone(src[pars->i], pars->path)) == -1 && check_nodes(bin) == EXIT_FAILURE) return (EXIT_FAILURE); if (go_pars[tmp].func(src, bin, pars) == -1) return (-1); } return (EXIT_SUCCESS); }