static void read_all_data(DATA **data, DATA *valdata, int n_vars) { int i; DATA *area; init_data_minmax(); area = get_data_area(); for (i = 0; i < n_vars; i++) { if (get_mode() == STRATIFY) printlog("stratum # %d:\n", i + strata_min); printlog("data(%s): ", name_identifier(i)); if (data[i]->id < 0) { message("data(%s) was not specified\n", name_identifier(i)); ErrMsg(ER_SYNTAX, "data specification error"); } read_gstat_data(data[i]); report_data(data[i]); } /* for i */ /* * what to do when area is specified, but no masks or data()? * default prediction to `area'. Create a valdata with one point at * centre of area (for select()); and centre area at (0,0,0) */ if (area && get_n_masks() <= 0 && valdata->id == -1) { valdata->id = ID_OF_VALDATA; valdata->centre = area->centre = 1; } /* * read data() data: */ if (valdata->id > -1) { setup_valdata_X(valdata); if (! valdata->centre) valdata = read_gstat_data(valdata); } /* * read area, if existed */ if (area != NULL && get_method() != POLY) { read_gstat_data(area); /* now, before centring area: */ if (valdata->centre) valdata = get_area_centre(area, valdata); if (area->centre) centre_area(area); printlog("area:%s\n", area->centre ? " (centred around 0)" : ""); report_data(area); if (DEBUG_DATA) print_data_list(area); } /* * read edges, if existed */ if (get_n_edges() > 0) { read_edges(); report_edges(); /* setup_visibility_graph(); */ /*setup_planar_subdivisions();*/ } /* * setup and report data */ if (valdata->id > -1) { printlog("data():%s ", valdata->centre ? " [at area centre]" : ""); report_data(valdata); } for (i = 0; i < n_vars; i++) setup_data_minmax(data[i]); if (valdata->id > -1) setup_data_minmax(valdata); for (i = 0; i < n_vars; i++) calc_polynomials(data[i]); if (valdata->id > -1) calc_polynomials(valdata); if (DEBUG_DATA) { for (i = 0; i < n_vars; i++) print_data_list(data[i]); if (valdata->id > -1) print_data_list(valdata); } }
int main() { List list1; pNode node; void* l_data[NUM_NODE]; void* data1, *data2; int err; for (int i = 0; i < NUM_NODE; i++) { l_data[i] = malloc(sizeof(data_t)); if (l_data[i] == NULL) return 1; set_struct_data(l_data[i], i, rand() % 100); } err = init_list(&list1, NUM_NODE, l_data); if (err != DS_OK) DS_error(err, NULL); printf("List of %d nodes:\n", NUM_NODE); print_data_list(&list1); data1 = malloc(sizeof(data_t)); set_struct_data(data1, 10, rand() % 100); err = append(&list1, data1, NULL); if (err != DS_OK) DS_error(err, NULL); printf("\nList after append():\n"); print_data_list(&list1); data2 = malloc(sizeof(data_t)); set_struct_data(data2, 11, rand() % 100); err = push(&list1, data2, NULL); if (err != DS_OK) DS_error(err, NULL); printf("\nList after push():\n"); print_data_list(&list1); pop(&list1); printf("\nList after pop():\n"); print_data_list(&list1); err = get_node(&list1, 2, &node); err = remove(&list1, node); if (err != DS_OK) DS_error(err, NULL); printf("\nNode at position %d was removed:\n", 2); print_data_list(&list1); err = remove_all(&list1); if (err != DS_OK) DS_error(err, NULL); //free all data structures created for (int i = 0; i < NUM_NODE; i++) { free(l_data[i]); } free(data1); free(data2); printf("Press any button to continue..."); getchar(); return 0; }