--- libaitio/inc/aitio.h 2012/04/10 15:33:41 1.16.2.11 +++ libaitio/inc/aitio.h 2012/05/14 12:48:21 1.16.2.14 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: aitio.h,v 1.16.2.11 2012/04/10 15:33:41 misho Exp $ +* $Id: aitio.h,v 1.16.2.14 2012/05/14 12:48:21 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -119,11 +119,11 @@ typedef struct { #define AIT_LEN(_vl) (_vl)->val_len #define AIT_KEY(_vl) (_vl)->val_key #define AIT_RAW(_vl) (_vl)->val.net -#define AIT_VOID(_vl) (_vl)->val.ptr +#define AIT_ADDR(_vl) (_vl)->val.ptr #define AIT_BLOB_CHUNKS(_vl, _n) (AIT_LEN((_vl)) / _n + (AIT_LEN((_vl)) % _n) ? 1 : 0) #define AIT_ISEMPTY(_vl) (AIT_TYPE((_vl)) == empty) -#define AIT_GET_LIKE(_vl, _type) ((_type) (_vl)->val.ptr) +#define AIT_GET_LIKE(_vl, _type) ((_type) AIT_ADDR(_vl)) #define AIT_GET_PTR(_vl) (assert(AIT_TYPE((_vl)) == ptr), (_vl)->val.ptr) #define AIT_GET_DATA(_vl) (assert(AIT_TYPE((_vl)) == data), (_vl)->val_data) @@ -357,7 +357,7 @@ inline ait_val_t *io_allocVar(void); * @val = Variable * return: none */ -inline void io_freeVar(ait_val_t * __restrict val); +inline void io_freeVar(ait_val_t ** __restrict val); /* * io_allocVars() - Allocate ait_val_t array * @@ -597,10 +597,11 @@ int io_arrayGrow(array_t * __restrict arr, int newNumI int io_arrayVacuum(array_t * __restrict arr, int fromWhere); #define io_arraySize(_arr) ((_arr) ? (_arr)->arr_num : 0) -#define io_arrayLast(_arr) ((_arr) ? (_arr)->arr_last : -1) +#define io_arrayLast(_arr) (io_arraySize((_arr)) ? (_arr)->arr_last : -1) #define io_arrayZero(_arr) (assert((_arr)), memset((_arr)->arr_data, 0, \ io_arraySize((_arr)) * sizeof(void*))) +#define io_arrayGet2(_arr, _d) (assert((_arr) && (_arr)->arr_num > _d), ((_arr)->arr_data + _d)) #define io_arrayGet(_arr, _d) (assert((_arr) && (_arr)->arr_num > _d), *((_arr)->arr_data + _d)) #define io_array(_arr, _d, _type) (assert((_arr) && (_arr)->arr_num > _d), \ ((_type) *((_arr)->arr_data + _d)))