|
|
| 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); |
| } | } |