uniso_status_t *uniso(const char *src, const char *dst, distro_filter_f filter, uniso_progress_cb cb, void *cb_data) { // Deal with directories. if(file_type(src) == FILE_TYPE_DIR) { return undir(src, dst, filter, cb, cb_data); } uniso_status_t *s = new_status(); struct archive *iso = uniso_open(s, src); if(!iso) return s; uniso_progress_t total = count_in_iso(iso, filter); archive_read_free(iso); if(total == 0) return s; iso = uniso_open(s, src); if(!iso) return s; if(extract_iso(s, iso, dst, filter, total, cb, cb_data)) s->finished = 1; archive_read_free(iso); return s; }
void mainloop_batch(simulation_data *sim) { char filebase[100]; const char *extractvars[] = {"q", "xc", "radius", NULL}; double origin[] = {5., 5., 5.}, normal[] = {0., 0.707, 0.707}; double isos[] = {0.2, 0.5, 0.8}; double v0[] = {1.,1.,1.}, v1[] = {5., 1.5, 7.}, v2[] = {8., 2., 5.}; /* Explicitly load VisIt runtime functions and install callbacks. */ VisItInitializeRuntime(); SetupCallbacks(sim); while(!sim->done) { /* Update the simulation data for this iteration.*/ simulation_data_update(sim); /* Tell VisIt that some metadata changed.*/ VisItTimeStepChanged(); /* Make some extracts. */ sprintf(filebase, "slice3v_%04d", sim->cycle); extract_slice_3v(filebase, v0, v1, v2, extractvars); sprintf(filebase, "sliceON_%04d", sim->cycle); extract_slice_origin_normal(filebase, origin, normal, extractvars); sprintf(filebase, "sliceX_%04d", sim->cycle); extract_slice(filebase, 0, 0.5, extractvars); sprintf(filebase, "sliceY_%04d", sim->cycle); extract_slice(filebase, 1, 2.5, extractvars); sprintf(filebase, "sliceZ_%04d", sim->cycle); extract_slice(filebase, 2, 5., extractvars); sprintf(filebase, "iso_%04d", sim->cycle); extract_iso(filebase, "q", isos, 3, extractvars); simulation_advance(sim); } }