//----------------------------------------------------------------------------- int MGL_EXPORT mgl_datac_read_all(HADT dat, const char *templ, int as_slice) { #ifndef WIN32 mglDataC d; glob_t res; size_t i; dual *b; long kx,ky,kz; glob (templ, GLOB_TILDE, NULL, &res); //read first file for(i=0;i<res.gl_pathc;i++) if(mgl_datac_read(&d,res.gl_pathv[i])) break; if(i>=res.gl_pathc) { globfree (&res); return false; } kx = d.nx; ky = d.ny; kz = d.nz; b = (dual *)malloc(kx*ky*kz*sizeof(dual)); memcpy(b,d.a,kx*ky*kz*sizeof(dual)); for(;i<res.gl_pathc;i++) { if(mgl_datac_read(&d,res.gl_pathv[i])) if(!mgl_add_file(kx,ky,kz,b,&d,as_slice)) { globfree (&res); free(b); return false; } } dat->Set(b,kx,ky,kz); globfree (&res); free(b); return true; #else return false; #endif }
//----------------------------------------------------------------------------- int MGL_EXPORT mgl_datac_read_range(HADT dat, const char *templ, double from, double to, double step, int as_slice) { mglDataC d; double t = from; dual *b; long kx,ky,kz,n=strlen(templ)+20; char *fname = new char[n]; //read first file do{ snprintf(fname,n,templ,t); t+= step; } while(!mgl_datac_read(&d,fname) && t<=to); if(t>to) { delete []fname; return false; } kx = d.nx; ky = d.ny; kz = d.nz; b = (dual *)malloc(kx*ky*kz*sizeof(dual)); memcpy(b,d.a,kx*ky*kz*sizeof(dual)); // read other files for(;t<=to;t+=step) { snprintf(fname,n,templ,t); if(mgl_datac_read(&d,fname)) if(!mgl_add_file(kx,ky,kz,b,&d,as_slice)) { delete []fname; free(b); return false; } } dat->Set(b,kx,ky,kz); delete []fname; free(b); return true; }