#include "gridio.h" /* This function provided for fortran compatibility - i.e. it is fortran callable with static fortran array dimensions */ /* #define WIN */ #ifdef WIN #include #define DllExport __declspec( dllexport ) /* Functions in gridio.dll that are callable from outside */ DllExport void fgridread(char *file,void *dem, int *datatype, int *nx, int *ny, float *dx, float *dy, double bndbox[4],double *csize, float *ndv,int *filetype, int *igy); #endif void fgridread_(char *file,void *dem, int *datatype, int *nx, int *ny, float *dx, float *dy, double bndbox[4],double *csize, float *ndv,int *filetype, int *igy) { int err,i,j; float **farr; int **iarr; short **sarr; char *token; token = strtok(file," "); /* This is to avoid trailing blanks in name. */ switch( *datatype) { case 1: err=gridread(token,(void ***)&sarr,RPSHRDTYPE,nx,ny,dx,dy, bndbox,csize,ndv,filetype); for(i=0; i< *ny; i++)for(j=0; j< *nx; j++){ *((short *)dem+i+j* *igy)=sarr[j][i]; } free(sarr[0]); free(sarr); break; case 2: err=gridread(token,(void ***)&iarr,RPINTDTYPE,nx,ny,dx,dy, bndbox,csize,ndv,filetype); for(i=0; i< *ny; i++)for(j=0; j< *nx; j++){ *((int *)dem+i+j* *igy)=iarr[j][i]; } free(iarr[0]); free(iarr); break; case 3: err=gridread(token,(void ***)&farr,RPFLTDTYPE,nx,ny,dx,dy, bndbox,csize,ndv,filetype); for(i=0; i< *ny; i++)for(j=0; j< *nx; j++){ *((float *)dem+i+j* *igy)=farr[j][i]; } free(farr[0]); free(farr); break; default: break; } }