/* * CBIND.C -- C binding for the IMFORT interface, for BSD UNIX and derived * systems. As far as possible, the C function calls resemble those of the * Fortran oriented IMFORT interface, e.g., the function status is returned * as an argument rather than as the function value. */ #define SZ_OPNAME 80 #define SZ_KEYWORD 20 int clargc (int argno , char *outstr , int *ier ) { clargc_ (&argno, outstr, ier, SZ_OPNAME); sstrip (outstr,SZ_OPNAME); } int clargi (int argno , int *ival , int *ier ) { clargi_ (&argno, ival, ier); } int clargr (int argno , float *rval , int *ier ) { clargr_ (&argno, rval, ier); } int clargd (int argno , double *dval , int *ier ) { clargd_ (&argno, dval, ier); } int clnarg (int *nargs ) { clnarg_ (nargs); } int clrawc (char *outstr , int *ier ) { clrawc_ (outstr, ier, SZ_OPNAME); sstrip (outstr, SZ_OPNAME); } int imacck (int im , char *key , int *ier ) { imacck_ (&im, key, ier, strlen(key)); } int imaddk (int im , char *keyw , int dtype , char *comm , int *ier ) { imaddk_ (&im, keyw, &dtype, comm, ier, strlen(keyw), strlen(comm)); } int imakwb (int im , char *keyw , int bval , char *comm , int *ier ) { imakwb_ (&im, keyw, &bval, comm, ier, strlen(keyw), strlen(comm)); } int imakwc (int im , char *keyw , char *sval , char *comm , int *ier ) { imakwc_ (&im, keyw, sval, comm, ier, strlen(keyw), strlen(sval), strlen(comm)); } int imakwi (int im , char *keyw , int ival , char *comm , int *ier ) { imakwi_ (&im, keyw, &ival, comm, ier, strlen(keyw), strlen(comm)); } int imakwd (int im , char *keyw , double dval , char *comm , int *ier ) { imakwd_ (&im, keyw, &dval, comm, ier, strlen(keyw), strlen(comm)); } int imakwr (int im , char *keyw , float rval , char *comm , int *ier ) { float f = rval; imakwr_ (&im, keyw, &f, comm, ier, strlen(keyw), strlen(comm)); } int imclos (int im , int *ier ) { imclos_ (&im, ier); } int imcrea (char *f77nam , int *axlen , int naxis , int pixtype , int *ier ) { imcrea_ (f77nam, axlen, &naxis, &pixtype, ier, strlen (f77nam)); } int imcrex (char *image , int *axlen , int naxis , int pixtype , int *ier ) { imcrex_ (image, axlen, &naxis, &pixtype, ier, strlen(image)); } int imdele (char *image , int *ier ) { imdele_ (image, ier, strlen(image)); } int imdelk (int im , char *keyw , int *ier ) { imdelk_ (&im, keyw, ier, strlen(keyw)); } int imemsg (int ier , char *errmsg ) { imemsg_ (&ier, errmsg, SZ_OPNAME); sstrip (errmsg, SZ_OPNAME); } int imflsh (int im , int *ier ) { imflsh_ (&im, ier); } int imgdir (char *dir ) { imgdir_ (dir, strlen(dir)); sstrip (dir, SZ_OPNAME); } int imgkwb (int im , char *keyw , int *bval , int *ier ) { imgkwb_ (&im, keyw, bval, ier, strlen(keyw)); } int imgkwc (int im , char *keyw , char *sval , int *ier ) { imgkwc_ (&im, keyw, sval, ier, strlen(keyw), SZ_OPNAME); sstrip (sval, SZ_OPNAME); } int imgkwd (int im , char *keyw , double *dval , int *ier ) { imgkwd_ (&im, keyw, dval, ier, strlen(keyw)); } int imgkwi (int im , char *keyw , int *ival , int *ier ) { imgkwi_ (&im, keyw, ival, ier, strlen(keyw)); } int imgkwr (int im , char *keyw , float *rval , int *ier ) { imgkwr_ (&im, keyw, rval, ier, strlen (keyw)); } int imgl1r (int im , float *buf , int *ier ) { imgl1r_ (&im, buf, ier); } int imgl1s (int im , short *buf , int *ier ) { imgl1s_ (&im, buf, ier); } int imgl2r (int im , float *buf , int lineno , int *ier ) { imgl2r_ (&im, buf, &lineno, ier); } int imgl2s (int im , short *buf , int lineno , int *ier ) { imgl2s_ (&im, buf, &lineno, ier); } int imgl3r (int im , float *buf , int lineno , int bandno , int *ier ) { imgl3r_ (&im, buf, &lineno, &bandno, ier); } int imgl3s (int im , short *buf , int lineno , int bandno , int *ier ) { imgl3s_ (&im, buf, &lineno, &bandno, ier); } int imgs1r (int im , float *buf , int i1 , int i2 , int *ier ) { imgs1r_ (&im, buf, &i1, &i2, ier); } int imgs1s (int im , short *buf , int i1 , int i2 , int *ier ) { imgs1s_ (&im, buf, &i1, &i2, ier); } int imgs2r (int im , float *buf , int i1 , int i2 , int j1 , int j2 , int *ier ) { imgs2r_ (&im, buf, &i1, &i2, &j1, &j2, ier); } int imgs2s (int im , short *buf , int i1 , int i2 , int j1 , int j2 , int *ier ) { imgs2s_ (&im, buf, &i1, &i2, &j1, &j2, ier); } int imgs3r (int im , float *buf , int i1 , int i2 , int j1 , int j2 , int k1 , int k2 , int *ier ) { imgs3r_ (&im, buf, &i1, &i2, &j1, &j2, &k1, &k2, ier); } int imgs3s (int im , short *buf , int i1 , int i2 , int j1 , int j2 , int k1 , int k2 , int *ier ) { imgs3s_ (&im, buf, &i1, &i2, &j1, &j2, &k1, &k2, ier); } int imgsiz (int im , int *axlen , int *naxis , int *pixtype , int *ier ) { imgsiz_ (&im, axlen, naxis, pixtype, ier); } int imhcpy (int o_im , int n_im , int *ier ) { imhcpy_ (&o_im, &n_im, ier); } int imokwl (int im , char *patstr , int sortit , int *kwl , int *ier ) { imokwl_ (&im, patstr, &sortit, kwl, ier, strlen(patstr)); } int imgnkw (int kwl , char *outstr , int *ier ) { imgnkw_ (&kwl, outstr, ier, SZ_KEYWORD); sstrip (outstr,SZ_KEYWORD); } int imckwl (int kwl , int *ier ) { imckwl_ (&kwl, ier); } int imopen (char *f77nam , int acmode , int *im , int *ier ) { imopen_ (f77nam, &acmode, im, ier, strlen (f77nam)); } int imopnc (char *nimage , int o_im , int *n_im , int *ier ) { imopnc_ (nimage, &o_im, n_im, ier, strlen(nimage)); } int imopnx (char *image , int acmode , int *im , int *ier ) { imopnx_ (image, &acmode, im, ier, strlen(image)); } int impixf (int im , int *pixfd , char *pixfil , int *pixoff , int *szline , int *ier ) {impixf_ (&im, &pixfd, pixfil, &pixoff, &szline, ier, SZ_OPNAME); sstrip (pixfil, SZ_OPNAME);} int impkwb (int im , char *keyw , int bval , int *ier ) { impkwb_ (&im, keyw, &bval, ier, strlen(keyw)); } int impkwc (int im , char *keyw , char *sval , int *ier ) { impkwc_ (&im, keyw, sval, ier, strlen(keyw)); } int impkwd (int im , char *keyw , double dval , int *ier ) { impkwd_ (&im, keyw, &dval, ier, strlen(keyw)); } int impkwi (int im , char *keyw , int ival , int ier ) { impkwi_ (&im, keyw, &ival, ier, strlen(keyw)); } int impkwr (int im , char *keyw , float rval , int *ier ) { float f = rval; impkwr_ (&im, keyw, &f, ier, strlen(keyw)); } int impl1r (int im , float *buf , int *ier ) { impl1r_ (&im, buf, ier); } int impl1s (int im , short *buf , int *ier ) { impl1s_ (&im, buf, ier); } int impl2r (int im , float *buf , int lineno , int *ier ) { impl2r_ (&im, buf, &lineno, ier); } int impl2s (int im , short *buf , int lineno , int *ier ) { impl2s_ (&im, buf, &lineno, ier); } int impl3r (int im , float *buf , int lineno , int bandno , int *ier ) { impl3r_ (&im, buf, &lineno, &bandno, ier); } int impl3s (int im , short *buf , int lineno , int bandno , int *ier ) { impl3s_ (&im, buf, &lineno, &bandno, ier); } int imps1r (int im , float *buf , int i1 , int i2 , int *ier ) { imps1r_ (&im, buf, &i1, &i2, ier); } int imps1s (int im , short *buf , int i1 , int i2 , int *ier ) { imps1s_ (&im, buf, &i1, &i2, ier); } int imps2r (int im , float *buf , int i1 , int i2 , int j1 , int j2 , int *ier ) { imps2r_ (&im, buf, &i1, &i2, &j1, &j2, ier); } int imps2s (int im , short *buf , int i1 , int i2 , int j1 , int j2 , int *ier ) { imps2s_ (&im, buf, &i1, &i2, &j1, &j2, ier); } int imps3r (int im , float *buf , int i1 , int i2 , int j1 , int j2 , int k1 , int k2 , int *ier ) { imps3r_ (&im, buf, &i1, &i2, &j1, &j2, &k1, &k2, ier); } int imps3s (int im , short *buf , int i1 , int i2 , int j1 , int j2 , int k1 , int k2 , int *ier ) { imps3s_ (&im, buf, &i1, &i2, &j1, &j2, &k1, &k2, ier); } int imrnam (char *oimage , char *nimage , int *ier ) { imrnam_ (oimage, nimage, ier, strlen(oimage), strlen(nimage)); } int imsdir (char *dir ) { imsdir_ (dir, strlen (dir)); } int imtypk (int im , char *keyw , int *dtype , char *comm , int *ier ) { imtypk_ (&im, keyw, dtype, comm, ier, strlen(keyw), SZ_OPNAME); sstrip (comm, SZ_OPNAME);} /* Support utility to trim trailing blanks from string and add * a null terminator. */ int sstrip (char outstr[SZ_OPNAME] , int length ) { int i; for (i=length-1; (outstr[i] == '\0' || outstr[i] == ' ') && i >= 0; i--); if (i == length - 1) outstr[i] = '\0'; else outstr[i+1] = '\0'; }