- Timestamp:
- Nov 25, 2008, 4:51:39 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branch_20081124/Ohana/src/opihi/lib.shell/VectorOps.c
r20827 r20839 1 1 # include "opihi.h" 2 3 // NOTE: we refer to elements.Ptr if we do not care about the actual type 2 4 3 5 static Vector **vectors; … … 18 20 19 21 for (i = 0; i < Nvectors; i++) { 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); 22 if (vectors[i][0].elements.Int) { 23 free (vectors[i][0].elements.Int); 25 24 } 26 25 free (vectors[i]); … … 34 33 ALLOCATE (vec, Vector, 1); 35 34 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 40 bzero (vec[0].name, 1024); 35 vec[0].type = OPIHI_FLT; // is a float unless specified otherwise 36 ALLOCATE (vec[0].elements.Flt, opihi_flt, 1); 37 38 bzero (vec[0].name, OPIHI_NAME_SIZE); 41 39 vec[0].Nelements = 0; 42 40 return (vec); … … 104 102 if (i == Nvectors) return (FALSE); 105 103 106 if (vectors[i][0].elements) free (vectors[i][0].elements); 107 if (vectors[i][0].elementsInt) free (vectors[i][0].elementsInt); 104 if (vectors[i][0].elements.Ptr) free (vectors[i][0].elements.Ptr); 108 105 free (vectors[i]); 109 106 … … 125 122 if (i == Nvectors) return (FALSE); 126 123 127 if (vectors[i][0].elements) free (vectors[i][0].elements); 128 if (vectors[i][0].elementsInt) free (vectors[i][0].elementsInt); 124 if (vectors[i][0].elements.Ptr) free (vectors[i][0].elements.Ptr); 129 125 free (vectors[i]); 130 126 … … 145 141 return (TRUE); 146 142 } 143 147 144 int CopyVector (Vector *out, Vector *in) { 148 free (out[0].elements);145 if (out[0].elements.Ptr) free (out[0].elements.Ptr); 149 146 out[0].Nelements = in[0].Nelements; 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;147 if (in[0].elements.Ptr) { 148 if (in[0].type == OPIHI_FLT) { 149 ALLOCATE (out[0].elements.Flt, opihi_flt, out[0].Nelements); 150 memcpy (out[0].elements.Flt, in[0].elements.Flt, out[0].Nelements*sizeof(opihi_flt)); 151 out[0].type = OPIHI_FLT; 152 } else { 153 ALLOCATE (out[0].elements.Int, opihi_int, out[0].Nelements); 154 memcpy (out[0].elements.Int, in[0].elements.Int, out[0].Nelements*sizeof(opihi_int)); 155 out[0].type = OPIHI_INT; 156 } 160 157 } 161 158 return (TRUE); … … 170 167 return (TRUE); 171 168 } 169 172 170 int MoveVector (Vector *out, Vector *in) { 173 171 int i, j; 174 172 175 free (out[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; 173 if (out[0].elements.Ptr) free (out[0].elements.Ptr); 174 out[0].Nelements = in[0].Nelements; 175 out[0].elements.Ptr = in[0].elements.Ptr; 176 out[0].type = in[0].type; 180 177 181 178 /* delete vector entry from vector list, if it exists */
Note:
See TracChangeset
for help on using the changeset viewer.
