예제 #1
0
static void
coastline_processor_finish(struct item_bin_sink_func *coastline_processor)
{
	struct tile_parameter *param=coastline_processor->priv_data[0];
	struct item_bin_sink *tiles=coastline_processor->priv_data[1];
	struct item_bin_sink_func *tile_collector=coastline_processor->priv_data[2];
	g_free(param);
	tile_collector_finish(tile_collector);
	item_bin_sink_destroy(tiles);
	item_bin_sink_func_destroy(coastline_processor);
}
예제 #2
0
파일: sourcesink.c 프로젝트: Jalakas/navit
int
file_reader_finish(struct item_bin_sink *sink)
{
	struct item_bin *ib;
	int ret =0;
	FILE *in=sink->priv_data[0];
	int limit=(int)(long)sink->priv_data[1];
	int offset=(int)(long)sink->priv_data[2];
	while ((ib=read_item(in))) {
		if (offset > 0) {
			offset--;
		} else {
			ret=item_bin_write_to_sink(ib, sink, NULL);
			if (ret || (limit != -1 && !--limit)) {
				item_bin_sink_destroy(sink);
				return ret;
			}
		}
	}
	item_bin_sink_destroy(sink);
	return 0;
}
예제 #3
0
void
process_coastlines(FILE *in, FILE *out)
{
	struct item_bin_sink *reader=file_reader_new(in,1000000,0);
	struct item_bin_sink_func *file_writer=file_writer_new(out);
	struct item_bin_sink *result=item_bin_sink_new();
	struct item_bin_sink_func *coastline_processor=coastline_processor_new(result);
	item_bin_sink_add_func(reader, coastline_processor);
	item_bin_sink_add_func(result, file_writer);
	file_reader_finish(reader);
	coastline_processor_finish(coastline_processor);
	file_writer_finish(file_writer);
	item_bin_sink_destroy(result);
}