IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Nov 24, 2008, 5:09:38 PM (18 years ago)
Author:
eugene
Message:

working on double vectors, other additions

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branch_20081124/Ohana/src/opihi/lib.shell/VectorOps.c

    r16887 r20827  
    1818
    1919  for (i = 0; i < Nvectors; i++) {
    20     free (vectors[i][0].elements);
     20    if (vectors[i][0].elements) {
     21      free (vectors[i][0].elements);
     22    }
     23    if (vectors[i][0].elementsInt) {
     24      free (vectors[i][0].elementsInt);
     25    }
    2126    free (vectors[i]);
    2227  }
     
    2833
    2934  ALLOCATE (vec, Vector, 1);
    30   ALLOCATE (vec[0].elements, float, 1);
     35
     36  vec[0].elementsInt = NULL;
     37  ALLOCATE (vec[0].elements, opihi_float, 1);
     38  vec[0].type = OPIHI_FLOAT;                      /* is a float unless specified otherwise */
     39
    3140  bzero (vec[0].name, 1024);
    3241  vec[0].Nelements = 0;
     
    95104  if (i == Nvectors) return (FALSE);
    96105
    97   free (vectors[i][0].elements);
     106  if (vectors[i][0].elements)    free (vectors[i][0].elements);
     107  if (vectors[i][0].elementsInt) free (vectors[i][0].elementsInt);
    98108  free (vectors[i]);
    99109
     
    115125  if (i == Nvectors) return (FALSE);
    116126
    117   free (vectors[i][0].elements);
     127  if (vectors[i][0].elements)    free (vectors[i][0].elements);
     128  if (vectors[i][0].elementsInt) free (vectors[i][0].elementsInt);
    118129  free (vectors[i]);
    119130
     
    137148  free (out[0].elements);
    138149  out[0].Nelements = in[0].Nelements;
    139   ALLOCATE (out[0].elements, float, out[0].Nelements);
    140   memcpy (out[0].elements, in[0].elements, out[0].Nelements*sizeof(float));
     150  if (in[0].elements) {
     151    assert (in[0].type == OPIHI_FLOAT);
     152    ALLOCATE (out[0].elements, opihi_float, out[0].Nelements);
     153    memcpy (out[0].elements, in[0].elements, out[0].Nelements*sizeof(opihi_float));
     154    out[0].type = OPIHI_FLOAT;
     155  } else {
     156    assert (in[0].type == OPIHI_INT);
     157    ALLOCATE (out[0].elementsInt, opihi_int, out[0].Nelements);
     158    memcpy (out[0].elementsInt, in[0].elementsInt, out[0].Nelements*sizeof(opihi_int));
     159    out[0].type = OPIHI_INT;
     160  }
    141161  return (TRUE);
    142162}
     
    154174
    155175  free (out[0].elements);
    156   out[0].Nelements = in[0].Nelements;
    157   out[0].elements =  in[0].elements;
     176  out[0].Nelements   = in[0].Nelements;
     177  out[0].elements    = in[0].elements;
     178  out[0].elementsInt = in[0].elementsInt;
     179  out[0].type        = in[0].type;
    158180
    159181  /* delete vector entry from vector list, if it exists */
Note: See TracChangeset for help on using the changeset viewer.