示例#1
0
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);
	}
}
示例#2
0
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;
}