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/opihi/lib.shell/VectorOps.c

    r41269 r41340  
    129129  if (mode == NEWVECTOR) goto error;
    130130  if (vectors[i]) {
    131     // XXX warning: this will be a leak if vector is type OPIHI_STR
    132131    if (vectors[i][0].elements.Ptr) free (vectors[i][0].elements.Ptr);
    133132    free (vectors[i]);
     
    151150  if (i == Nvectors) return (FALSE);
    152151
    153   // XXX warning: this will be a leak if vector is type OPIHI_STR
    154152  if (vectors[i][0].elements.Ptr) free (vectors[i][0].elements.Ptr);
    155153  free (vectors[i]);
     
    172170  if (i == Nvectors) return (FALSE);
    173171
    174   // XXX warning: this will be a leak if vector is type OPIHI_STR
    175172  if (vectors[i][0].elements.Ptr) free (vectors[i][0].elements.Ptr);
    176173  free (vectors[i]);
     
    194191
    195192int CopyVector (Vector *out, Vector *in) {
    196   // XXX warning: this will be a leak if vector is type OPIHI_STR
    197193  if (out[0].elements.Ptr) free (out[0].elements.Ptr);
    198194  out[0].Nelements = in[0].Nelements;
     
    212208
    213209int MatchVector(Vector *out, Vector *in, char type) {
    214   // XXX warning: this will be a leak if vector is type OPIHI_STR
    215210  if (out[0].elements.Ptr) free (out[0].elements.Ptr);
    216211  out[0].Nelements = in[0].Nelements;
     
    227222int ResetVector (Vector *vec, char type, int Nelements) {
    228223
    229   // if the supplied vector is a string but the output is not a string, we need to free
    230   // the unused elements
    231   if ((vec[0].type == OPIHI_STR) && (vec[0].type != type)) {
    232     for (int i = 0; i < vec[0].Nelements; i++) {
    233       FREE (vec[0].elements.Str[i]);
    234     }
    235   }
    236 
    237224  // a vector can only have >= 0 elements
    238225  vec[0].Nelements = MAX(Nelements,0);
    239 
    240   switch (type) {
    241     case OPIHI_FLT:
    242       REALLOCATE (vec[0].elements.Flt, opihi_flt, MAX(1, Nelements));
    243       vec[0].type = OPIHI_FLT;
    244       break;
    245     case OPIHI_INT:
    246       REALLOCATE (vec[0].elements.Int, opihi_int, MAX(1, Nelements));
    247       vec[0].type = OPIHI_INT;
    248       break;
    249     case OPIHI_STR:
    250       REALLOCATE (vec[0].elements.Str, char *, MAX(1, Nelements));
    251       vec[0].type = OPIHI_STR;
    252       break;
     226  if (type == OPIHI_FLT) {
     227    REALLOCATE (vec[0].elements.Flt, opihi_flt, MAX(1, Nelements));
     228    vec[0].type = OPIHI_FLT;
     229  } else {
     230    REALLOCATE (vec[0].elements.Int, opihi_int, MAX(1, Nelements));
     231    vec[0].type = OPIHI_INT;
    253232  }
    254233  return TRUE;
     
    272251
    273252// SetVector (vecx, OPIHI_FLT, MAX (Npts, 1));
    274 // Use this for an unallocated vector (e.g., static variable)
    275253int SetVector (Vector *vec, char type, int Nelements) {
    276254
    277255  vec[0].Nelements = MAX(Nelements,0);
    278 
    279   switch (type) {
    280     case OPIHI_FLT:
    281       ALLOCATE (vec[0].elements.Flt, opihi_flt, MAX(1,Nelements));
    282       vec[0].type = OPIHI_FLT;
    283       break;
    284     case OPIHI_INT:
    285       ALLOCATE (vec[0].elements.Int, opihi_int, MAX(1,Nelements));
    286       vec[0].type = OPIHI_INT;
    287       break;
    288     case OPIHI_STR:
    289       ALLOCATE (vec[0].elements.Ptr, char *, MAX(1,Nelements));
    290       vec[0].type = OPIHI_STR;
    291       break;
     256  if (type == OPIHI_FLT) {
     257    ALLOCATE (vec[0].elements.Flt, opihi_flt, MAX(1,Nelements));
     258    vec[0].type = OPIHI_FLT;
     259  } else {
     260    ALLOCATE (vec[0].elements.Int, opihi_int, MAX(1,Nelements));
     261    vec[0].type = OPIHI_INT;
    292262  }
    293263  return TRUE;
     
    302272  if (vec[0].type == type) return TRUE;
    303273
    304   switch (type) {
    305     case OPIHI_FLT: {
    306       opihi_flt *temp;
    307       ALLOCATE (temp, opihi_flt, vec[0].Nelements);
    308       opihi_flt *vo = temp;
    309       opihi_int *vi = vec[0].elements.Int;
    310       for (i = 0; i < vec[0].Nelements; i++, vo++, vi++) {
    311         *vo = *vi;
    312       }
    313       free (vec[0].elements.Int);
    314       vec[0].elements.Flt = temp;
    315       vec[0].type = OPIHI_FLT;
    316       break;
    317     }
    318     case OPIHI_INT: {
    319       opihi_int *temp;
    320       ALLOCATE (temp, opihi_int, vec[0].Nelements);
    321       opihi_int *vo = temp;
    322       opihi_flt *vi = vec[0].elements.Flt;
    323       for (i = 0; i < vec[0].Nelements; i++, vo++, vi++) {
    324         *vo = *vi;
    325       }
    326       free (vec[0].elements.Flt);
    327       vec[0].elements.Int = temp;
    328       vec[0].type = OPIHI_INT;
    329       break;
    330     }
    331     case OPIHI_STR:
    332     default:
    333       // does it make sense to cast an int/flt vector to string?
    334       break;
     274  if (type == OPIHI_FLT) {
     275    opihi_flt *temp;
     276    ALLOCATE (temp, opihi_flt, vec[0].Nelements);
     277    opihi_flt *vo = temp;
     278    opihi_int *vi = vec[0].elements.Int;
     279    for (i = 0; i < vec[0].Nelements; i++, vo++, vi++) {
     280      *vo = *vi;
     281    }
     282    free (vec[0].elements.Int);
     283    vec[0].elements.Flt = temp;
     284    vec[0].type = OPIHI_FLT;
     285  } else {
     286    opihi_int *temp;
     287    ALLOCATE (temp, opihi_int, vec[0].Nelements);
     288    opihi_int *vo = temp;
     289    opihi_flt *vi = vec[0].elements.Flt;
     290    for (i = 0; i < vec[0].Nelements; i++, vo++, vi++) {
     291      *vo = *vi;
     292    }
     293    free (vec[0].elements.Flt);
     294    vec[0].elements.Int = temp;
     295    vec[0].type = OPIHI_INT;
    335296  }
    336297  return TRUE;
     
    381342  gprint (GP_LOG, "    N       name      size\n");
    382343  for (i = 0; i < Nvectors; i++) {
    383     switch (vectors[i][0].type) {
    384       case OPIHI_FLT:
    385         gprint (GP_LOG, "%5d %10s %10d (FLT)\n", i, vectors[i][0].name, vectors[i][0].Nelements);
    386         break;
    387       case OPIHI_INT:
    388         gprint (GP_LOG, "%5d %10s %10d (INT)\n", i, vectors[i][0].name, vectors[i][0].Nelements);
    389         break;
    390       case OPIHI_STR:
    391         gprint (GP_LOG, "%5d %10s %10d (STR)\n", i, vectors[i][0].name, vectors[i][0].Nelements);
    392         break;
     344    if (vectors[i][0].type == OPIHI_FLT) {
     345      gprint (GP_LOG, "%5d %10s %10d (FLT)\n", i, vectors[i][0].name, vectors[i][0].Nelements);
     346    } else {
     347      gprint (GP_LOG, "%5d %10s %10d (INT)\n", i, vectors[i][0].name, vectors[i][0].Nelements);
    393348    }
    394349  }
Note: See TracChangeset for help on using the changeset viewer.