Diff for /libaitio/src/Attic/array.c between versions 1.2.4.1 and 1.2.4.4

version 1.2.4.1, 2011/05/19 02:22:46 version 1.2.4.4, 2011/05/19 04:05:14
Line 63  io_arrayInit(int numItems) Line 63  io_arrayInit(int numItems)
         }          }
   
         arr->arr_num = numItems;          arr->arr_num = numItems;
        arr->arr_data = calloc(arr->arr_num, sizeof(void*));        arr->arr_data = calloc(io_arraySize(arr), sizeof(void*));
         if (!arr->arr_data) {          if (!arr->arr_data) {
                 LOGERR;                  LOGERR;
                 free(arr);                  free(arr);
                 return NULL;                  return NULL;
         } else          } else
                memset(arr->arr_data, 0, arr->arr_num * sizeof(void*));                memset(arr->arr_data, 0, io_arraySize(arr) * sizeof(void*));
   
         return arr;          return arr;
 }  }
   
 /*  /*
    * io_arrayFrom() - Create and fill array from array with pointers
    * @argv = Array with pointers
    * @argc = Number of Items, if 0 walk through argv and stop when reach NULL item
    * return: NULL error, != NULL allocated memory for array
    */
   inline array_t *
   io_arrayFrom(const char **argv, int argc)
   {
           array_t *arr = NULL;
           const char **a = NULL;
           register int num = 0;
   
           assert(argv);
           if (!argv || !*argv || argc < 0)
                   return NULL;
   
           if (argc)
                   num = argc;
           else
                   for (a = argv; *a; a++, num++);
   
           arr = malloc(sizeof(array_t));
           if (!arr) {
                   LOGERR;
                   return NULL;
           }
   
           arr->arr_num = num;
           arr->arr_data = calloc(io_arraySize(arr), sizeof(void*));
           if (!arr->arr_data) {
                   LOGERR;
                   free(arr);
                   return NULL;
           } else
                   memcpy(arr->arr_data, argv, io_arraySize(arr) * sizeof(void*));
   
           return arr;
   }
   
   /*
    * io_arrayTo() - Create and fill array with pointers from dynamic array
    * @arr = Array
    * return: NULL error, != NULL allocated memory for array
    */
   inline char **
   io_arrayTo(array_t * __restrict arr)
   {
           char **args = NULL;
   
           assert(arr);
           if (!arr || !io_arraySize(arr))
                   return NULL;
   
           args = (char **) calloc(io_arraySize(arr) + 1, sizeof(char*));
           if (!args) {
                   LOGERR;
                   return NULL;
           } else
                   memcpy(args, arr->arr_data, io_arraySize(arr) * sizeof(char*));
           args[io_arraySize(arr)] = NULL;
   
           return args;
   }
   
   /*
  * io_arrayFree() - Free all data in dynamic array items   * io_arrayFree() - Free all data in dynamic array items
  *      (WARNING! If assign static array dont use this!!!)   *      (WARNING! If assign static array dont use this!!!)
  * @arr = Array   * @arr = Array
Line 89  io_arrayFree(array_t * __restrict arr) Line 154  io_arrayFree(array_t * __restrict arr)
         if (!arr)          if (!arr)
                 return;                  return;
   
        for (i = 0; i < arr->arr_num; i++)        for (i = 0; i < io_arraySize(arr); i++)
                 if (arr->arr_data[i]) {                  if (arr->arr_data[i]) {
                         free(arr->arr_data[i]);                          free(arr->arr_data[i]);
                         arr->arr_data[i] = NULL;                          arr->arr_data[i] = NULL;
Line 128  io_arrayLen(array_t * __restrict arr) Line 193  io_arrayLen(array_t * __restrict arr)
         if (!arr)          if (!arr)
                 return -1;                  return -1;
   
        for (i = arr->arr_num; i && !arr->arr_data[i - 1]; i--);        for (i = io_arraySize(arr); i && !arr->arr_data[i - 1]; i--);
   
         return i;          return i;
 }  }
Line 152  io_arrayGrow(array_t * __restrict arr, int newNumItems Line 217  io_arrayGrow(array_t * __restrict arr, int newNumItems
   
         if (arr->arr_num == newNumItems)          if (arr->arr_num == newNumItems)
                 return 0;                  return 0;
        if (arr->arr_num < newNumItems) {        if (io_arraySize(arr) < newNumItems) {
                n = newNumItems - arr->arr_num;                n = newNumItems - io_arraySize(arr);
         } /* else          } /* else
                 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])
Line 161  io_arrayGrow(array_t * __restrict arr, int newNumItems Line 226  io_arrayGrow(array_t * __restrict arr, int newNumItems
                                 */                                  */
   
         arr->arr_num = newNumItems;          arr->arr_num = newNumItems;
        data = realloc(arr->arr_data, arr->arr_num * sizeof(void*));        if (io_arraySize(arr)) {
        if (!data) {                data = realloc(arr->arr_data, io_arraySize(arr) * sizeof(void*));
                LOGERR;                if (!data) {
                return -1;                        LOGERR;
        } else                        return -1;
                arr->arr_data = data;                } else
        memset(arr->arr_data + (arr->arr_num - n), 0, n * sizeof(void*));                        arr->arr_data = data;
   
                   memset(arr->arr_data + (io_arraySize(arr) - n), 0, n * sizeof(void*));
           } else {
                   if (arr->arr_data)
                           free(arr->arr_data);
                   arr->arr_data = NULL;
           }
   
         return 0;          return 0;
 }  }
   
Line 190  io_arrayVacuum(array_t * __restrict arr, int fromWhere Line 262  io_arrayVacuum(array_t * __restrict arr, int fromWhere
         else          else
                 fromWhere &= 0x7;                  fromWhere &= 0x7;
   
        num = arr->arr_num;        num = io_arraySize(arr);
         /*          /*
         if (fromWhere & VACUUM_RIGHT) {          if (fromWhere & VACUUM_RIGHT) {
                 for (cx = 0, i = num - 1; i && !arr->arr_data[i]; i--, cx++);                  for (cx = 0, i = num - 1; i && !arr->arr_data[i]; i--, cx++);
Line 238  io_arrayPush(array_t * __restrict arr, void **data) Line 310  io_arrayPush(array_t * __restrict arr, void **data)
   
         assert(arr);          assert(arr);
   
        for (i = 0; i < arr->arr_num; i++)        for (i = 0; i < io_arraySize(arr); i++)
                 if (!arr->arr_data[i]) {                  if (!arr->arr_data[i]) {
                         if (data)                          if (data)
                                 arr->arr_data[i] = *data;                                  arr->arr_data[i] = *data;
Line 264  io_arrayPop(array_t * __restrict arr, void ** __restri Line 336  io_arrayPop(array_t * __restrict arr, void ** __restri
   
         assert(arr);          assert(arr);
   
        for (i = arr->arr_num - 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)
                                 *data = arr->arr_data[i];                                  *data = arr->arr_data[i];
Line 293  io_arrayConcat(array_t * __restrict dest, array_t * __ Line 365  io_arrayConcat(array_t * __restrict dest, array_t * __
         if (!dest || !src)          if (!dest || !src)
                 return -1;                  return -1;
   
        n = dest->arr_num;        n = io_arraySize(dest);
        if (io_arrayGrow(dest, n + src->arr_num))        if (io_arrayGrow(dest, n + io_arraySize(src)))
                 return -1;                  return -1;
        memcpy(dest->arr_data + n, src->arr_data, src->arr_num * sizeof(void*));        memcpy(dest->arr_data + n, src->arr_data, io_arraySize(src) * sizeof(void*));
   
         return io_arraySize(dest);          return io_arraySize(dest);
 }  }

Removed from v.1.2.4.1  
changed lines
  Added in v.1.2.4.4


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