--- libelwix/src/vars.c 2013/05/30 09:07:34 1.4 +++ libelwix/src/vars.c 2013/08/21 16:04:14 1.4.20.1 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: vars.c,v 1.4 2013/05/30 09:07:34 misho Exp $ +* $Id: vars.c,v 1.4.20.1 2013/08/21 16:04:14 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -413,6 +413,37 @@ ait_freeVars(array_t ** __restrict vars) ait_clrVars(*vars); array_Free(*vars); array_Destroy(vars); +} + +/* + * ait_resideVars() - Calculate footprint of resided variables into array + * + * @vars = Variable array + * return: -1 error or !=-1 bytes for whole array + */ +ssize_t +ait_resideVars(array_t * __restrict vars) +{ + ssize_t ret = 0; + register int i; + + if (!vars) + return -1; + + ret = array_Size(vars) * sizeof(ait_val_t); + for (i = 0; i < array_Size(vars); i++) + switch (AIT_TYPE(array(vars, i, ait_val_t*))) { + case buffer: + case string: + case data: + case ptr: + ret += AIT_LEN(array(vars, i, ait_val_t*)); + break; + default: + break; + } + + return ret; }