IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Apr 16, 2020, 1:54:47 PM (6 years ago)
Author:
tdeboer
Message:

revert to working Ohana build

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ohana/src/libfits/table/F_set_column.c

    r41176 r41340  
    253253/***********************/
    254254// convert the input data array (of the specified intype) to the desired table data type. swap unless nativeOrder is requested
    255 int gfits_set_bintable_column_reformat (Header *header, FTable *table, char *label, char *intype, void *data, off_t Nrow, int element, char nativeOrder) {
     255int gfits_set_bintable_column_reformat (Header *header, FTable *table, char *label, char *intype, void *data, off_t Nrow, char nativeOrder) {
    256256
    257257  off_t Nx, Ny;
     
    288288
    289289  if (!gfits_bintable_format (format, outtype, &Nval, &NbytesOut)) return (FALSE);
    290   if (element >= Nval) {
    291     fprintf (stderr, "programming error: element >= Nval for field %s, format %s\n", label, format);
    292     return FALSE;
    293   }
    294290 
    295291  /* check existing table dimensions */
     
    311307  }
    312308
    313   // NOTE: we are inserting a single column into the output
    314   // table.  If the output field is multi-value, the resulting
    315   // array is inserted into the appropriate bytes in that output field
    316 
    317309  /* make duplicate of data with correct type
    318310     byte swap and Bzero/Bscale */
    319   ALLOCATE (array, char, NbytesOut*Nrow);
     311  ALLOCATE (array, char, NbytesOut*Nval*Nrow);
    320312  Pin = data;
    321   Pout = array; //
     313  Pout = array;
    322314
    323315  // # define ASSIGN_DATA(ITYPE,INAME,ISIZE,OTYPE,ONAME)
     
    329321  if (!strcmp (outtype, OUTNAME) && !strcmp (intype, INNAME)) {         \
    330322    int NbytesIn = NBYTES_IN;                                           \
    331     for (i = 0; i < Nrow; i++, Pin += NbytesIn, Pout += NbytesOut) { \
     323    for (i = 0; i < Nval*Nrow; i++, Pin += NbytesIn, Pout += NbytesOut) { \
    332324      if (directCopy) {                                                 \
    333325        *(OUTTYPE *)Pout = *(INTYPE *)Pin;                              \
     
    393385  SET_VALUES("double",   double, "double", double, SWAP_DBLE, 8);
    394386
     387# if (0)
     388  /** input == char **/
     389  if (!strcmp (outtype, "char") && !strcmp (intype, "char")) {
     390    int NbytesIn = 1;
     391    for (i = 0; i < Nval*Nrow; i++, Pin+=NbytesIn, Pout+=NbytesOut) {
     392      if (directCopy) { *(char *)Pout = *(char *)Pin; } else {
     393        *(char *)Pout = (*(char *)Pin - Bzero) / Bscale;
     394      }
     395    }
     396  }
     397  if (!strcmp (outtype, "byte") && !strcmp (intype, "char")) {
     398    int NbytesIn = 1;
     399    for (i = 0; i < Nval*Nrow; i++, Pin+=NbytesIn, Pout+=NbytesOut) {
     400      if (directCopy) { *(char *)Pout = *(char *)Pin; } else {
     401        *(char *)Pout = (*(char *)Pin - Bzero) / Bscale;
     402      }
     403    }
     404  }
     405  if (!strcmp (outtype, "short") && !strcmp (intype, "char")) {
     406    int NbytesIn = 1;
     407    for (i = 0; i < Nval*Nrow; i++, Pin += NbytesIn, Pout += NbytesOut) {
     408      if (directCopy) { *(short *)Pout = *(char *)Pin; } else {
     409        *(short *)Pout = (*(char *)Pin - Bzero) / Bscale;
     410      }
     411# ifdef BYTE_SWAP
     412      if (!nativeOrder) { SWAP_BYTE; }
     413# endif
     414    } 
     415  }
     416  if (!strcmp (outtype, "int") && !strcmp (intype, "char")) {
     417    int NbytesIn = 1;
     418    for (i = 0; i < Nval*Nrow; i++, Pin += NbytesIn, Pout += NbytesOut) {
     419      *(int *)Pout = (*(char *)Pin - Bzero) / Bscale;
     420# ifdef BYTE_SWAP
     421      if (!nativeOrder) { SWAP_WORD; }
     422# endif
     423    }
     424  }
     425  if (!strcmp (outtype, "int64_t") && !strcmp (intype, "char")) {
     426    int NbytesIn = 1;
     427    for (i = 0; i < Nval*Nrow; i++, Pin += NbytesIn, Pout += NbytesOut) {
     428      *(int64_t *)Pout = (*(char *)Pin - Bzero) / Bscale;
     429# ifdef BYTE_SWAP
     430      if (!nativeOrder) { SWAP_DBLE; }
     431# endif
     432    }
     433  }
     434  if (!strcmp (outtype, "float") && !strcmp (intype, "char")) {
     435    int NbytesIn = 1;
     436    for (i = 0; i < Nval*Nrow; i++, Pin += NbytesIn, Pout += NbytesOut) {
     437      *(float *)Pout = (*(char *)Pin - Bzero) / Bscale;
     438# ifdef BYTE_SWAP
     439      if (!nativeOrder) { SWAP_WORD; }
     440# endif
     441    }
     442  }
     443  if (!strcmp (outtype, "double") && !strcmp (intype, "char")) {
     444    int NbytesIn = 1;
     445    for (i = 0; i < Nval*Nrow; i++, Pin += NbytesIn, Pout += NbytesOut) {
     446      *(double *)Pout = (*(char *)Pin - Bzero) / Bscale;
     447# ifdef BYTE_SWAP
     448      if (!nativeOrder) { SWAP_DBLE; }
     449# endif
     450    }
     451  }
     452
     453  /** input == byte **/
     454  if (!strcmp (outtype, "char") && !strcmp (intype, "byte")) {
     455    int NbytesIn = 1;
     456    for (i = 0; i < Nval*Nrow; i++, Pin+=NbytesIn, Pout+=NbytesOut) {
     457      *(char *)Pout = (*(char *)Pin - Bzero) / Bscale;
     458    }
     459  }
     460  if (!strcmp (outtype, "byte") && !strcmp (intype, "byte")) {
     461    int NbytesIn = 1;
     462    for (i = 0; i < Nval*Nrow; i++, Pin+=NbytesIn, Pout+=NbytesOut) {
     463      *(char *)Pout = (*(char *)Pin - Bzero) / Bscale;
     464    }
     465  }
     466  if (!strcmp (outtype, "short") && !strcmp (intype, "byte")) {
     467    int NbytesIn = 1;
     468    for (i = 0; i < Nval*Nrow; i++, Pin += NbytesIn, Pout += NbytesOut) {
     469      *(short *)Pout = (*(char *)Pin - Bzero) / Bscale;
     470# ifdef BYTE_SWAP
     471      if (!nativeOrder) { SWAP_BYTE; }
     472# endif
     473    } 
     474  }
     475  if (!strcmp (outtype, "int") && !strcmp (intype, "byte")) {
     476    int NbytesIn = 1;
     477    for (i = 0; i < Nval*Nrow; i++, Pin += NbytesIn, Pout += NbytesOut) {
     478      *(int *)Pout = (*(char *)Pin - Bzero) / Bscale;
     479# ifdef BYTE_SWAP
     480      if (!nativeOrder) { SWAP_WORD; }
     481# endif
     482    }
     483  }
     484  if (!strcmp (outtype, "int64_t") && !strcmp (intype, "byte")) {
     485    int NbytesIn = 1;
     486    for (i = 0; i < Nval*Nrow; i++, Pin += NbytesIn, Pout += NbytesOut) {
     487      *(int64_t *)Pout = (*(char *)Pin - Bzero) / Bscale;
     488# ifdef BYTE_SWAP
     489      if (!nativeOrder) { SWAP_DBLE; }
     490# endif
     491    }
     492  }
     493  if (!strcmp (outtype, "float") && !strcmp (intype, "byte")) {
     494    int NbytesIn = 1;
     495    for (i = 0; i < Nval*Nrow; i++, Pin += NbytesIn, Pout += NbytesOut) {
     496      *(float *)Pout = (*(char *)Pin - Bzero) / Bscale;
     497# ifdef BYTE_SWAP
     498      if (!nativeOrder) { SWAP_WORD; }
     499# endif
     500    }
     501  }
     502  if (!strcmp (outtype, "double") && !strcmp (intype, "byte")) {
     503    int NbytesIn = 1;
     504    for (i = 0; i < Nval*Nrow; i++, Pin += NbytesIn, Pout += NbytesOut) {
     505      *(double *)Pout = (*(char *)Pin - Bzero) / Bscale;
     506# ifdef BYTE_SWAP
     507      if (!nativeOrder) { SWAP_DBLE; }
     508# endif
     509    }
     510  }
     511
     512  /** input == short **/
     513  if (!strcmp (outtype, "char") && !strcmp (intype, "short")) {
     514    int NbytesIn = 2;
     515    for (i = 0; i < Nval*Nrow; i++, Pin += NbytesIn, Pout += NbytesOut) {
     516      *(char *)Pout = (*(short *)Pin - Bzero) / Bscale;
     517    }
     518  }
     519  if (!strcmp (outtype, "byte") && !strcmp (intype, "short")) {
     520    int NbytesIn = 2;
     521    for (i = 0; i < Nval*Nrow; i++, Pin += NbytesIn, Pout += NbytesOut) {
     522      *(char *)Pout = (*(short *)Pin - Bzero) / Bscale;
     523    }
     524  }
     525  if (!strcmp (outtype, "short") && !strcmp (intype, "short")) {
     526    int NbytesIn = 2;
     527    for (i = 0; i < Nval*Nrow; i++, Pin += NbytesIn, Pout += NbytesOut) {
     528      *(short *)Pout = (*(short *)Pin - Bzero) / Bscale;
     529# ifdef BYTE_SWAP
     530      if (!nativeOrder) { SWAP_BYTE; }
     531# endif
     532    } 
     533  }
     534  if (!strcmp (outtype, "int") && !strcmp (intype, "short")) {
     535    int NbytesIn = 2;
     536    for (i = 0; i < Nval*Nrow; i++, Pin += NbytesIn, Pout += NbytesOut) {
     537      *(int *)Pout = (*(short *)Pin - Bzero) / Bscale;
     538# ifdef BYTE_SWAP
     539      if (!nativeOrder) { SWAP_WORD; }
     540# endif
     541    }
     542  }
     543  if (!strcmp (outtype, "int64_t") && !strcmp (intype, "short")) {
     544    int NbytesIn = 2;
     545    for (i = 0; i < Nval*Nrow; i++, Pin += NbytesIn, Pout += NbytesOut) {
     546      *(int64_t *)Pout = (*(short *)Pin - Bzero) / Bscale;
     547# ifdef BYTE_SWAP
     548      if (!nativeOrder) { SWAP_DBLE; }
     549# endif
     550    }
     551  }
     552  if (!strcmp (outtype, "float") && !strcmp (intype, "short")) {
     553    int NbytesIn = 2;
     554    for (i = 0; i < Nval*Nrow; i++, Pin += NbytesIn, Pout += NbytesOut) {
     555      *(float *)Pout = (*(short *)Pin - Bzero) / Bscale;
     556# ifdef BYTE_SWAP
     557      if (!nativeOrder) { SWAP_WORD; }
     558# endif
     559    }
     560  }
     561  if (!strcmp (outtype, "double") && !strcmp (intype, "short")) {
     562    int NbytesIn = 2;
     563    for (i = 0; i < Nval*Nrow; i++, Pin += NbytesIn, Pout += NbytesOut) {
     564      *(double *)Pout = (*(short *)Pin - Bzero) / Bscale;
     565# ifdef BYTE_SWAP
     566      if (!nativeOrder) { SWAP_DBLE; }
     567# endif
     568    }
     569  }
     570
     571  /** input == int **/
     572  if (!strcmp (outtype, "char") && !strcmp (intype, "int")) {
     573    int NbytesIn = 4;
     574    for (i = 0; i < Nval*Nrow; i++, Pin += NbytesIn, Pout += NbytesOut) {
     575      *(char *)Pout = (*(int *)Pin - Bzero) / Bscale;
     576    }
     577  }
     578  if (!strcmp (outtype, "byte") && !strcmp (intype, "int")) {
     579    int NbytesIn = 4;
     580    for (i = 0; i < Nval*Nrow; i++, Pin += NbytesIn, Pout += NbytesOut) {
     581      *(char *)Pout = (*(int *)Pin - Bzero) / Bscale;
     582    }
     583  }
     584  if (!strcmp (outtype, "short") && !strcmp (intype, "int")) {
     585    int NbytesIn = 4;
     586    for (i = 0; i < Nval*Nrow; i++, Pin += NbytesIn, Pout += NbytesOut) {
     587      *(short *)Pout = (*(int *)Pin - Bzero) / Bscale;
     588# ifdef BYTE_SWAP
     589      if (!nativeOrder) { SWAP_BYTE; }
     590# endif
     591    } 
     592  }
     593  if (!strcmp (outtype, "int") && !strcmp (intype, "int")) {
     594    int NbytesIn = 4;
     595    for (i = 0; i < Nval*Nrow; i++, Pin += NbytesIn, Pout += NbytesOut) {
     596      *(int *)Pout = (*(int *)Pin - Bzero) / Bscale;
     597# ifdef BYTE_SWAP
     598      if (!nativeOrder) { SWAP_WORD; }
     599# endif
     600    }
     601  }
     602  if (!strcmp (outtype, "int64_t") && !strcmp (intype, "int")) {
     603    int NbytesIn = 4;
     604    for (i = 0; i < Nval*Nrow; i++, Pin += NbytesIn, Pout += NbytesOut) {
     605      *(int64_t *)Pout = (*(int *)Pin - Bzero) / Bscale;
     606# ifdef BYTE_SWAP
     607      if (!nativeOrder) { SWAP_DBLE; }
     608# endif
     609    }
     610  }
     611  if (!strcmp (outtype, "float") && !strcmp (intype, "int")) {
     612    int NbytesIn = 4;
     613    for (i = 0; i < Nval*Nrow; i++, Pin += NbytesIn, Pout += NbytesOut) {
     614      *(float *)Pout = (*(int *)Pin - Bzero) / Bscale;
     615# ifdef BYTE_SWAP
     616      if (!nativeOrder) { SWAP_WORD; }
     617# endif
     618    }
     619  }
     620  if (!strcmp (outtype, "double") && !strcmp (intype, "int")) {
     621    int NbytesIn = 4;
     622    for (i = 0; i < Nval*Nrow; i++, Pin += NbytesIn, Pout += NbytesOut) {
     623      *(double *)Pout = (*(int *)Pin - Bzero) / Bscale;
     624# ifdef BYTE_SWAP
     625      if (!nativeOrder) { SWAP_DBLE; }
     626# endif
     627    }
     628  }
     629
     630  /** input == int64_t **/
     631  if (!strcmp (outtype, "char") && !strcmp (intype, "int64_t")) {
     632    int NbytesIn = 8;
     633    for (i = 0; i < Nval*Nrow; i++, Pin += NbytesIn, Pout += NbytesOut) {
     634      *(char *)Pout = (*(int64_t *)Pin - Bzero) / Bscale;
     635    }
     636  }
     637  if (!strcmp (outtype, "byte") && !strcmp (intype, "int64_t")) {
     638    int NbytesIn = 8;
     639    for (i = 0; i < Nval*Nrow; i++, Pin += NbytesIn, Pout += NbytesOut) {
     640      *(char *)Pout = (*(int64_t *)Pin - Bzero) / Bscale;
     641    }
     642  }
     643  if (!strcmp (outtype, "short") && !strcmp (intype, "int64_t")) {
     644    int NbytesIn = 8;
     645    for (i = 0; i < Nval*Nrow; i++, Pin += NbytesIn, Pout += NbytesOut) {
     646      *(short *)Pout = (*(int64_t *)Pin - Bzero) / Bscale;
     647# ifdef BYTE_SWAP
     648      if (!nativeOrder) { SWAP_BYTE; }
     649# endif
     650    } 
     651  }
     652  if (!strcmp (outtype, "int") && !strcmp (intype, "int64_t")) {
     653    int NbytesIn = 8;
     654    for (i = 0; i < Nval*Nrow; i++, Pin += NbytesIn, Pout += NbytesOut) {
     655      *(int *)Pout = (*(int64_t *)Pin - Bzero) / Bscale;
     656# ifdef BYTE_SWAP
     657      if (!nativeOrder) { SWAP_WORD; }
     658# endif
     659    }
     660  }
     661  if (!strcmp (outtype, "int64_t") && !strcmp (intype, "int64_t")) {
     662    int NbytesIn = 8;
     663    for (i = 0; i < Nval*Nrow; i++, Pin += NbytesIn, Pout += NbytesOut) {
     664      *(int64_t *)Pout = (*(int64_t *)Pin - Bzero) / Bscale;
     665# ifdef BYTE_SWAP
     666      if (!nativeOrder) { SWAP_DBLE; }
     667# endif
     668    }
     669  }
     670  if (!strcmp (outtype, "float") && !strcmp (intype, "int64_t")) {
     671    int NbytesIn = 8;
     672    for (i = 0; i < Nval*Nrow; i++, Pin += NbytesIn, Pout += NbytesOut) {
     673      *(float *)Pout = (*(int64_t *)Pin - Bzero) / Bscale;
     674# ifdef BYTE_SWAP
     675      if (!nativeOrder) { SWAP_WORD; }
     676# endif
     677    }
     678  }
     679  if (!strcmp (outtype, "double") && !strcmp (intype, "int64_t")) {
     680    int NbytesIn = 8;
     681    for (i = 0; i < Nval*Nrow; i++, Pin += NbytesIn, Pout += NbytesOut) {
     682      *(double *)Pout = (*(int64_t *)Pin - Bzero) / Bscale;
     683# ifdef BYTE_SWAP
     684      if (!nativeOrder) { SWAP_DBLE; }
     685# endif
     686    }
     687  }
     688
     689  /** input == float **/
     690  if (!strcmp (outtype, "char") && !strcmp (intype, "float")) {
     691    int NbytesIn = 4;
     692    for (i = 0; i < Nval*Nrow; i++, Pin += NbytesIn, Pout += NbytesOut) {
     693      *(char *)Pout = (*(float *)Pin - Bzero) / Bscale;
     694    }
     695  }
     696  if (!strcmp (outtype, "byte") && !strcmp (intype, "float")) {
     697    int NbytesIn = 4;
     698    for (i = 0; i < Nval*Nrow; i++, Pin += NbytesIn, Pout += NbytesOut) {
     699      *(char *)Pout = (*(float *)Pin - Bzero) / Bscale;
     700    }
     701  }
     702  if (!strcmp (outtype, "short") && !strcmp (intype, "float")) {
     703    int NbytesIn = 4;
     704    for (i = 0; i < Nval*Nrow; i++, Pin += NbytesIn, Pout += NbytesOut) {
     705      *(short *)Pout = (*(float *)Pin - Bzero) / Bscale;
     706# ifdef BYTE_SWAP
     707      if (!nativeOrder) { SWAP_BYTE; }
     708# endif
     709    } 
     710  }
     711  if (!strcmp (outtype, "int") && !strcmp (intype, "float")) {
     712    int NbytesIn = 4;
     713    for (i = 0; i < Nval*Nrow; i++, Pin += NbytesIn, Pout += NbytesOut) {
     714      *(int *)Pout = (*(float *)Pin - Bzero) / Bscale;
     715# ifdef BYTE_SWAP
     716      if (!nativeOrder) { SWAP_WORD; }
     717# endif
     718    }
     719  }
     720  if (!strcmp (outtype, "int64_t") && !strcmp (intype, "float")) {
     721    int NbytesIn = 4;
     722    for (i = 0; i < Nval*Nrow; i++, Pin += NbytesIn, Pout += NbytesOut) {
     723      *(int64_t *)Pout = (*(float *)Pin - Bzero) / Bscale;
     724# ifdef BYTE_SWAP
     725      if (!nativeOrder) { SWAP_DBLE; }
     726# endif
     727    }
     728  }
     729  if (!strcmp (outtype, "float") && !strcmp (intype, "float")) {
     730    int NbytesIn = 4;
     731    for (i = 0; i < Nval*Nrow; i++, Pin += NbytesIn, Pout += NbytesOut) {
     732      *(float *)Pout = (*(float *)Pin - Bzero) / Bscale;
     733# ifdef BYTE_SWAP
     734      if (!nativeOrder) { SWAP_WORD; }
     735# endif
     736    }
     737  }
     738  if (!strcmp (outtype, "double") && !strcmp (intype, "float")) {
     739    int NbytesIn = 4;
     740    for (i = 0; i < Nval*Nrow; i++, Pin += NbytesIn, Pout += NbytesOut) {
     741      *(double *)Pout = (*(float *)Pin - Bzero) / Bscale;
     742# ifdef BYTE_SWAP
     743      if (!nativeOrder) { SWAP_DBLE; }
     744# endif
     745    }
     746  }
     747
     748  /** input == double **/
     749  if (!strcmp (outtype, "char") && !strcmp (intype, "double")) {
     750    int NbytesIn = 8;
     751    for (i = 0; i < Nval*Nrow; i++, Pin += NbytesIn, Pout += NbytesOut) {
     752      *(char *)Pout = (*(double *)Pin - Bzero) / Bscale;
     753    }
     754  }
     755  if (!strcmp (outtype, "byte") && !strcmp (intype, "double")) {
     756    int NbytesIn = 8;
     757    for (i = 0; i < Nval*Nrow; i++, Pin += NbytesIn, Pout += NbytesOut) {
     758      *(char *)Pout = (*(double *)Pin - Bzero) / Bscale;
     759    }
     760  }
     761  if (!strcmp (outtype, "short") && !strcmp (intype, "double")) {
     762    int NbytesIn = 8;
     763    for (i = 0; i < Nval*Nrow; i++, Pin += NbytesIn, Pout += NbytesOut) {
     764      *(short *)Pout = (*(double *)Pin - Bzero) / Bscale;
     765# ifdef BYTE_SWAP
     766      if (!nativeOrder) { SWAP_BYTE; }
     767# endif
     768    } 
     769  }
     770  if (!strcmp (outtype, "int") && !strcmp (intype, "double")) {
     771    int NbytesIn = 8;
     772    for (i = 0; i < Nval*Nrow; i++, Pin += NbytesIn, Pout += NbytesOut) {
     773      *(int *)Pout = (*(double *)Pin - Bzero) / Bscale;
     774# ifdef BYTE_SWAP
     775      if (!nativeOrder) { SWAP_WORD; }
     776# endif
     777    }
     778  }
     779  if (!strcmp (outtype, "int64_t") && !strcmp (intype, "double")) {
     780    int NbytesIn = 8;
     781    for (i = 0; i < Nval*Nrow; i++, Pin += NbytesIn, Pout += NbytesOut) {
     782      *(int64_t *)Pout = (*(double *)Pin - Bzero) / Bscale;
     783# ifdef BYTE_SWAP
     784      if (!nativeOrder) { SWAP_DBLE; }
     785# endif
     786    }
     787  }
     788  if (!strcmp (outtype, "float") && !strcmp (intype, "double")) {
     789    int NbytesIn = 8;
     790    for (i = 0; i < Nval*Nrow; i++, Pin += NbytesIn, Pout += NbytesOut) {
     791      *(float *)Pout = (*(double *)Pin - Bzero) / Bscale;
     792# ifdef BYTE_SWAP
     793      if (!nativeOrder) { SWAP_WORD; }
     794# endif
     795    }
     796  }
     797  if (!strcmp (outtype, "double") && !strcmp (intype, "double")) {
     798    int NbytesIn = 8;
     799    for (i = 0; i < Nval*Nrow; i++, Pin += NbytesIn, Pout += NbytesOut) {
     800      *(double *)Pout = (*(double *)Pin - Bzero) / Bscale;
     801# ifdef BYTE_SWAP
     802      if (!nativeOrder) { SWAP_DBLE; }
     803# endif
     804    }
     805  }
     806# endif
     807
    395808  /* check array space */
    396809  if (Nx*Ny < Nx*(Nrow - 1) + Nstart + Nval*NbytesOut) {
     
    400813
    401814  /* insert bytes from array into appropriate section of buffer */
    402   Pout = table[0].buffer + Nstart + element*NbytesOut;
     815  Pout = table[0].buffer + Nstart;
    403816  Pin  = array;
    404   for (i = 0; i < Nrow; i++, Pout += Nx, Pin += NbytesOut) {
    405     memcpy (Pout, Pin, NbytesOut);
     817  for (i = 0; i < Nrow; i++, Pout += Nx, Pin += Nval*NbytesOut) {
     818    memcpy (Pout, Pin, Nval*NbytesOut);
    406819  }
    407820
Note: See TracChangeset for help on using the changeset viewer.