#include <stdlib.h>
#include <stdio.h>
#include <limits.h>
#include <float.h>
#include <minc.h>

#define TRUE 1
#define FALSE 0

int main(int argc, char **argv)
{
   int icv, mincid, img, i;
   static int dim[MAX_VAR_DIMS];
   static struct { long len; char *name;} diminfo[]=
      {4, MIyspace, 5, MIxspace};
   static int numdims=sizeof(diminfo)/sizeof(diminfo[0]);
   static long coord[]={0,0};
   static long count[]={4,5};
   static short int ivalue[]={
      111, 113, 115, 117, 119,
      121, 123, 125, 127, 129,
      131, 133, 135, 137, 139,
      141, 143, 145, 147, -5
   };
   static int ivallen = sizeof(ivalue)/sizeof(ivalue[0]);
   int cflag = 0;

#ifdef MINC2
   if (argc == 2 && !strcmp(argv[1], "-2")) {
       cflag = MI2_CREATE_V2;
   }
#endif /* MINC2 */

   icv = miicv_create();
   (void) miicv_setint(icv, MI_ICV_VALID_MAX, 200);
   (void) miicv_setint(icv, MI_ICV_VALID_MIN, 0);
   (void) miicv_setint(icv, MI_ICV_DO_FILLVALUE, TRUE);
   mincid=micreate("test.mnc", NC_CLOBBER | cflag);
   for (i=0; i<2; i++) {
      dim[i]=ncdimdef(mincid, diminfo[i].name, diminfo[i].len);
   }
   img=micreate_std_variable(mincid, MIimage, NC_SHORT,
                             numdims, dim);
   (void) miattputint(mincid, img, MIvalid_max, 200);
   (void) miattputint(mincid, img, MIvalid_min, 0);
   (void) ncendef(mincid);
   (void) miicv_attach(icv, mincid, img);

   (void) miicv_put(icv, coord, count, ivalue);

   for (i=0; i<ivallen; i++)
      ivalue[i]=SHRT_MAX;
   (void) miicv_get(icv, coord, count, ivalue);
   (void) printf("\nNo dimconv, default fillvalue:\n");
   for (i=0; i<ivallen; i++) {
      (void) printf("%d ", (int) ivalue[i]);
      if ((i % 5) == 4) (void) printf("\n");
   }

   for (i=0; i<ivallen; i++)
      ivalue[i]=SHRT_MAX;
   (void) miicv_detach(icv);
   (void) miicv_setdbl(icv, MI_ICV_FILLVALUE, -32.0);
   (void) miicv_attach(icv, mincid, img);
   (void) miicv_get(icv, coord, count, ivalue);
   (void) printf("\nNo dimconv, fillvalue=-32:\n");
   for (i=0; i<ivallen; i++) {
      (void) printf("%d ", (int) ivalue[i]);
      if ((i % 5) == 4) (void) printf("\n");
   }

   for (i=0; i<ivallen; i++)
      ivalue[i]=SHRT_MAX;
   (void) miicv_detach(icv);
   (void) miicv_setint(icv, MI_ICV_DO_DIM_CONV, TRUE);
   (void) miicv_setint(icv, MI_ICV_KEEP_ASPECT, FALSE);
   (void) miicv_setint(icv, MI_ICV_BDIM_SIZE, 2);
   (void) miicv_attach(icv, mincid, img);
   count[0]=2;
   (void) miicv_get(icv, coord, count, ivalue);
   (void) printf("\nWith dimconv, fillvalue=-32:\n");
   for (i=0; i<ivallen; i++) {
      (void) printf("%d ", (int) ivalue[i]);
      if ((i % 5) == 4) (void) printf("\n");
   }

   (void) miclose(mincid);

}


syntax highlighted by Code2HTML, v. 0.9.1