Diff for /libaitio/src/Attic/array.c between versions 1.8 and 1.10.6.2

version 1.8, 2012/03/29 01:31:33 version 1.10.6.2, 2012/07/30 10:55:51
Line 57  io_arrayInit(int numItems) Line 57  io_arrayInit(int numItems)
 {  {
         array_t *arr = NULL;          array_t *arr = NULL;
   
        arr = malloc(sizeof(array_t));        arr = io_malloc(sizeof(array_t));
         if (!arr) {          if (!arr) {
                 LOGERR;                  LOGERR;
                 return NULL;                  return NULL;
         }          }
   
           arr->arr_last = -1;
         arr->arr_num = numItems;          arr->arr_num = numItems;
        arr->arr_data = calloc(io_arraySize(arr), sizeof(void*));        arr->arr_data = io_calloc(io_arraySize(arr), sizeof(void*));
         if (!arr->arr_data) {          if (!arr->arr_data) {
                 LOGERR;                  LOGERR;
                free(arr);                io_free(arr);
                 return NULL;                  return NULL;
         } else          } else
                 io_arrayZero(arr);                  io_arrayZero(arr);
Line 98  io_arrayFrom(const char *** __restrict pargv, int argc Line 99  io_arrayFrom(const char *** __restrict pargv, int argc
         else          else
                 for (a = *pargv; *a; a++, num++);                  for (a = *pargv; *a; a++, num++);
   
        arr = malloc(sizeof(array_t));        arr = io_malloc(sizeof(array_t));
         if (!arr) {          if (!arr) {
                 LOGERR;                  LOGERR;
                 return NULL;                  return NULL;
         }          }
   
         arr->arr_num = num;          arr->arr_num = num;
        arr->arr_data = calloc(io_arraySize(arr), sizeof(void*));        arr->arr_data = io_calloc(io_arraySize(arr), sizeof(void*));
         if (!arr->arr_data) {          if (!arr->arr_data) {
                 LOGERR;                  LOGERR;
                free(arr);                io_free(arr);
                 return NULL;                  return NULL;
        } else        } else {
                 memcpy(arr->arr_data, *pargv, io_arraySize(arr) * sizeof(void*));                  memcpy(arr->arr_data, *pargv, io_arraySize(arr) * sizeof(void*));
                   arr->arr_last = io_arraySize(arr) - 1;
           }
   
         return arr;          return arr;
 }  }
Line 131  io_arrayTo(array_t * __restrict arr) Line 134  io_arrayTo(array_t * __restrict arr)
         if (!arr || !io_arraySize(arr))          if (!arr || !io_arraySize(arr))
                 return NULL;                  return NULL;
   
        args = (char **) calloc(io_arraySize(arr) + 1, sizeof(char*));        args = (char **) io_calloc(io_arraySize(arr) + 1, sizeof(char*));
         if (!args) {          if (!args) {
                 LOGERR;                  LOGERR;
                 return NULL;                  return NULL;
Line 159  io_arrayFree(array_t * __restrict arr) Line 162  io_arrayFree(array_t * __restrict arr)
   
         for (i = 0; i < io_arraySize(arr); i++)          for (i = 0; i < io_arraySize(arr); i++)
                 if (arr->arr_data[i]) {                  if (arr->arr_data[i]) {
                        free(arr->arr_data[i]);                        io_free(arr->arr_data[i]);
                         arr->arr_data[i] = NULL;                          arr->arr_data[i] = NULL;
                 }                  }
   
           arr->arr_last = -1;
 }  }
   
 /*  /*
Line 177  io_arrayDestroy(array_t ** __restrict parr) Line 182  io_arrayDestroy(array_t ** __restrict parr)
                 return;                  return;
   
         if ((*parr)->arr_data)          if ((*parr)->arr_data)
                free((*parr)->arr_data);                io_free((*parr)->arr_data);
        free(*parr);        io_free(*parr);
         *parr = NULL;          *parr = NULL;
 }  }
   
Line 186  io_arrayDestroy(array_t ** __restrict parr) Line 191  io_arrayDestroy(array_t ** __restrict parr)
  * io_arrayLen() - Get last used element in dynamic array (array Length)   * io_arrayLen() - Get last used element in dynamic array (array Length)
  *   *
  * @arr = Array   * @arr = Array
 * return: -1 error, 0 empty or >0 position of last used element * return: -1 empty or >-1 position of last used element
  */   */
 inline int  inline int
 io_arrayLen(array_t * __restrict arr)  io_arrayLen(array_t * __restrict arr)
Line 199  io_arrayLen(array_t * __restrict arr) Line 204  io_arrayLen(array_t * __restrict arr)
   
         for (i = io_arraySize(arr); i && !arr->arr_data[i - 1]; i--);          for (i = io_arraySize(arr); i && !arr->arr_data[i - 1]; i--);
   
        return i;        return --i;
 }  }
   
 /*  /*
Line 227  io_arrayGrow(array_t * __restrict arr, int newNumItems Line 232  io_arrayGrow(array_t * __restrict arr, int newNumItems
         } else if (freeShrink)          } else if (freeShrink)
                 for (i = newNumItems; i < arr->arr_num; i++)                  for (i = newNumItems; i < arr->arr_num; i++)
                         if (arr->arr_data[i])                          if (arr->arr_data[i])
                                free(arr->arr_data[i]);                                io_free(arr->arr_data[i]);
   
         arr->arr_num = newNumItems;          arr->arr_num = newNumItems;
         if (io_arraySize(arr)) {          if (io_arraySize(arr)) {
                data = realloc(arr->arr_data, io_arraySize(arr) * sizeof(void*));                data = io_realloc(arr->arr_data, io_arraySize(arr) * sizeof(void*));
                 if (!data) {                  if (!data) {
                         LOGERR;                          LOGERR;
                         return -1;                          return -1;
Line 239  io_arrayGrow(array_t * __restrict arr, int newNumItems Line 244  io_arrayGrow(array_t * __restrict arr, int newNumItems
                         arr->arr_data = data;                          arr->arr_data = data;
   
                 memset(arr->arr_data + (io_arraySize(arr) - n), 0, n * sizeof(void*));                  memset(arr->arr_data + (io_arraySize(arr) - n), 0, n * sizeof(void*));
                   arr->arr_last = io_arrayLen(arr);
         } else {          } else {
                 if (arr->arr_data)                  if (arr->arr_data)
                        free(arr->arr_data);                        io_free(arr->arr_data);
                 arr->arr_data = NULL;                  arr->arr_data = NULL;
                   arr->arr_last = -1;
         }          }
   
         return 0;          return 0;
Line 298  io_arrayVacuum(array_t * __restrict arr, int fromWhere Line 305  io_arrayVacuum(array_t * __restrict arr, int fromWhere
                 }                  }
         }          }
   
           arr->arr_last = io_arrayLen(arr);
         return cx;          return cx;
 }  }
   
Line 317  io_arrayElem(array_t * __restrict arr, int n, void *da Line 325  io_arrayElem(array_t * __restrict arr, int n, void *da
         if (!arr)          if (!arr)
                 return (void*) -1;                  return (void*) -1;
   
        if (n > io_arraySize(arr) && io_arrayGrow(arr, n + 1, 0))        if (n >= io_arraySize(arr) && io_arrayGrow(arr, n + 1, 0))
                 return (void*) -1;                  return (void*) -1;
   
         dat = io_arrayGet(arr, n);          dat = io_arrayGet(arr, n);
Line 332  io_arrayElem(array_t * __restrict arr, int n, void *da Line 340  io_arrayElem(array_t * __restrict arr, int n, void *da
  *   *
  * @arr = Array   * @arr = Array
  * @data = Element, if set NULL return only first empty position   * @data = Element, if set NULL return only first empty position
    * @mayGrow = Array may to grow, if not enough room for new element
  * return: -1 not found empty position, array is full!, >-1 return position of stored element into array   * return: -1 not found empty position, array is full!, >-1 return position of stored element into array
  */   */
 inline int  inline int
io_arrayPush(array_t * __restrict arr, void **data)io_arrayPush(array_t * __restrict arr, void **data, int mayGrow)
 {  {
   #if 0
         register int i;          register int i;
   #endif
         int ret = -1;          int ret = -1;
   
         if (!arr)          if (!arr)
                 return -1;                  return -1;
           else
                   ret = io_arrayLast(arr) + 1;
           if (!mayGrow && ret >= io_arraySize(arr))
                   return -1;
           if (mayGrow && ret >= io_arraySize(arr) && 
                           io_arrayGrow(arr, ret + 1, 0))
                   return -1;
   
   #if 0
         for (i = 0; i < io_arraySize(arr); i++)          for (i = 0; i < io_arraySize(arr); i++)
                 if (!arr->arr_data[i]) {                  if (!arr->arr_data[i]) {
                         if (data)                          if (data)
Line 350  io_arrayPush(array_t * __restrict arr, void **data) Line 369  io_arrayPush(array_t * __restrict arr, void **data)
                         ret = i;                          ret = i;
                         break;                          break;
                 }                  }
   #endif
           arr->arr_data[++arr->arr_last] = *data;
   
         return ret;          return ret;
 }  }
Line 365  io_arrayPush(array_t * __restrict arr, void **data) Line 386  io_arrayPush(array_t * __restrict arr, void **data)
 inline int  inline int
 io_arrayPop(array_t * __restrict arr, void ** __restrict data, int delAfter)  io_arrayPop(array_t * __restrict arr, void ** __restrict data, int delAfter)
 {  {
   #if 0
         register int i;          register int i;
   #endif
         int ret = -1;          int ret = -1;
   
         if (!arr)          if (!arr)
                 return -1;                  return -1;
   
   #if 0
         for (i = io_arraySize(arr) - 1; i >= 0; i--)          for (i = io_arraySize(arr) - 1; i >= 0; i--)
                 if (arr->arr_data[i]) {                  if (arr->arr_data[i]) {
                         if (data)                          if (data)
Line 380  io_arrayPop(array_t * __restrict arr, void ** __restri Line 404  io_arrayPop(array_t * __restrict arr, void ** __restri
                         ret = i;                          ret = i;
                         break;                          break;
                 }                  }
   #endif
           ret = io_arrayLast(arr);
   
           if (data)
                   *data = arr->arr_data[ret];
           if (delAfter)
                   arr->arr_data[arr->arr_last--] = NULL;
   
         return ret;          return ret;
 }  }
   
Line 406  io_arrayConcat(array_t * __restrict dest, array_t * __ Line 437  io_arrayConcat(array_t * __restrict dest, array_t * __
                 return -1;                  return -1;
         memcpy(dest->arr_data + n, src->arr_data, io_arraySize(src) * sizeof(void*));          memcpy(dest->arr_data + n, src->arr_data, io_arraySize(src) * sizeof(void*));
   
           dest->arr_last = io_arrayLen(dest);
         return io_arraySize(dest);          return io_arraySize(dest);
 }  }
   
Line 427  io_arrayCopy(array_t ** __restrict dest, array_t * __r Line 459  io_arrayCopy(array_t ** __restrict dest, array_t * __r
         *dest = io_arrayInit(io_arraySize(src));          *dest = io_arrayInit(io_arraySize(src));
         if (!*dest)          if (!*dest)
                 return -1;                  return -1;
           else
                   (*dest)->arr_last = src->arr_last;
   
         memcpy((*dest)->arr_data, src->arr_data, io_arraySize(*dest) * sizeof(void*));          memcpy((*dest)->arr_data, src->arr_data, io_arraySize(*dest) * sizeof(void*));
         return io_arraySize(*dest);          return io_arraySize(*dest);
Line 515  io_MakeAV(const char * __restrict csArgs, const char * Line 549  io_MakeAV(const char * __restrict csArgs, const char *
                 return -1;                  return -1;
         else          else
                 memset(psValue, 0, valLen);                  memset(psValue, 0, valLen);
        psBuf = strdup(csArgs);        psBuf = io_strdup(csArgs);
         if (!psBuf) {          if (!psBuf) {
                 LOGERR;                  LOGERR;
                 return -1;                  return -1;
Line 533  io_MakeAV(const char * __restrict csArgs, const char * Line 567  io_MakeAV(const char * __restrict csArgs, const char *
                         strlcpy(psValue, pos, valLen);                          strlcpy(psValue, pos, valLen);
         }          }
   
        free(psBuf);        io_free(psBuf);
         return ret;          return ret;
 }  }
   
   /*
    * io_MakeAV2() Parse and make attribute/value pair over input string
    *
    * @csArgs = Input argument line, will be modified!
    * @csDelim = Delimiter for separate
    * @psAttr = Output Attribute
    * @psValue = Output Value, if ==NULL this element not present value or not wanted for return
    * return: 0 error format; -1 error:: can`t read; >0 ok, number of readed items
   */
   int
   io_MakeAV2(char * __restrict psArgs, const char *csDelim, 
                   char * __restrict psAttr, char * __restrict psValue)
   {
           register int ret = 0;
           char *pos;
   
           if (!psArgs || !csDelim)
                   return -1;
   
           pos = strpbrk(psArgs, csDelim);
           if (pos)
                   *pos++ = 0;
           ret++;
           if (psAttr)
                   psAttr = psArgs;
   
           if (psValue) {
                   if (pos && *pos) {
                           ret++;
                           psValue = pos;
                   } else
                           psValue = NULL;
           }
   
           return ret;
   }

Removed from v.1.8  
changed lines
  Added in v.1.10.6.2


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>