--- libelwix/inc/elwix/aarray.h 2013/06/10 12:34:14 1.2.6.1 +++ libelwix/inc/elwix/aarray.h 2018/05/28 22:55:12 1.6.30.1 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: aarray.h,v 1.2.6.1 2013/06/10 12:34:14 misho Exp $ +* $Id: aarray.h,v 1.6.30.1 2018/05/28 22:55:12 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -12,7 +12,7 @@ terms: All of the documentation and software included in the ELWIX and AITNET Releases is copyrighted by ELWIX - Sofia/Bulgaria -Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 +Copyright 2004 - 2018 by Michael Pounov . All rights reserved. Redistribution and use in source and binary forms, with or without @@ -58,20 +58,19 @@ typedef struct _tagArray { #define array_Zero(_arr) (assert((_arr)), memset((_arr)->arr_data, 0, \ array_Size((_arr)) * sizeof(intptr_t))) -#define array_Ptr(_arr, _d) (_arr)->arr_data[_d] +#define array_Ptr(_arr, _d) ((_arr) ? (_arr)->arr_data[_d] : NULL) #define array_Get2(_arr, _d) (assert((_arr) && (_arr)->arr_num > _d), ((_arr)->arr_data + _d)) -#define array_Get(_arr, _d) (assert((_arr) && (_arr)->arr_num > _d), (_arr)->arr_data[_d]) -#define array(_arr, _d, _type) (assert((_arr) && (_arr)->arr_num > _d), \ - ((_type) (_arr)->arr_data[_d])) -#define array_Set(_arr, _d, _ptr) do { assert((_arr) && (_arr)->arr_num > _d); \ - if ((_arr)->arr_last < _d) \ - (_arr)->arr_last = _d; \ - (_arr)->arr_data[_d] = (void*) (_ptr); \ +#define array_Get(_arr, _d) (assert((_arr)), (_arr)->arr_data[_d]) +#define array(_arr, _d, _type) (assert((_arr)), ((_type) (_arr)->arr_data[_d])) +#define array_Set(_arr, _d, _ptr) do { int __d = _d; assert((_arr) && (_arr)->arr_num > __d); \ + if ((_arr)->arr_last < __d) \ + (_arr)->arr_last = __d; \ + (_arr)->arr_data[__d] = (void*) (_ptr); \ } while (0) -#define array_Del(_arr, _d, _fri) do { assert((_arr) && (_arr)->arr_num > _d); \ - if (_fri && (_arr)->arr_data[_d]) \ - e_free((_arr)->arr_data[_d]); \ - (_arr)->arr_data[_d] = NULL; \ +#define array_Del(_arr, _d, _fri) do { int __d = _d; assert((_arr) && (_arr)->arr_num > __d); \ + if (_fri && (_arr)->arr_data[__d]) \ + e_free((_arr)->arr_data[__d]); \ + (_arr)->arr_data[__d] = NULL; \ } while (0) /* @@ -107,7 +106,7 @@ void array_Free(array_t * __restrict arr); array_t *array_From(const char *** __restrict pargv, int argc); /* * array_Args() Parse and make array from arguments ... (input string will be modified!!! - * and output array must be free with io_arrayDestroy() after use!) + * and output array must be free with array_Destroy() after use!) * * @psArgs = Input arguments line, after execute string is modified!!! * @nargs = Maximum requested count of arguments from input string psArgs, if 0 all psArgs @@ -161,7 +160,7 @@ int array_Concat(array_t * __restrict dest, array_t * /* * array_Copy() Copy source array to destination array * - * @dest = Destination array, after use free with io_arrayDestroy() + * @dest = Destination array, after use free with array_Destroy() * @src = Source array * return: -1 error; >0 count of destination array */