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