1N/A/*********************************************************************** 1N/A* This software is part of the ast package * 1N/A* Copyright (c) 1982-2011 AT&T Intellectual Property * 1N/A* and is licensed under the * 1N/A* Common Public License, Version 1.0 * 1N/A* by AT&T Intellectual Property * 1N/A* A copy of the License is available at * 1N/A* (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) * 1N/A* Information and Software Systems Research * 1N/A* David Korn <dgk@research.att.com> * 1N/A***********************************************************************/ 1N/A * Array processing routines 1N/A * dgk@research.att.com 1N/A void *
xp;
/* if set, subscripts will be converted */ 1N/A int cur;
/* index of current element */ 1N/A int maxi;
/* maximum index for array */ 1N/A unsigned char *
bits;
/* bit array for child subscripts */ 1N/A#
endif /* SHOPT_FIXEDARRAY */ 1N/A#
endif /* SHOPT_FIXEDARRAY */ 1N/A#
endif /* SHOPT_FIXEDARRAY */ 1N/A#
endif /* SHOPT_FIXEDARRAY */ 1N/A * replace discipline with new one 1N/A * Calculate the amount of space to be allocated to hold an 1N/A * indexed array into which <maxi> is a legal index. The number of 1N/A * elements that will actually fit into the array (> <maxi> 1N/A * but <= ARRAY_MAX) is returned. 1N/A/* return index of highest element of an array */ 1N/A#
endif /* SHOPT_FIXEDARRAY */ 1N/A#
endif /* SHOPT_FIXEDARRAY */ 1N/A * Get the Value pointer for an array. 1N/A * Delete space as necessary if flag is ARRAY_DELETE 1N/A * After the lookup is done the last @ or * subscript is incremented 1N/A#
endif /* SHOPT_FIXEDARRAY */ 1N/A /* delete array is the same as delete array[@] */ 1N/A#
endif /* SHOPT_FIXEDARRAY */ 1N/A else /* same as array[0] */ 1N/A#
endif /* SHOPT_FIXEDARRAY */ 1N/A#
endif /* SHOPT_FIXEDARRAY */ 1N/A#
endif /* SHOPT_TYPEDEF */ 1N/A#
endif /* SHOPT_FIXEDARRAY */ 1N/A#
endif /* SHOPT_FIXEDARRAY */ 1N/A#
endif /* SHOPT_TYPEDEF */ 1N/A#
endif /* SHOPT_FIXEDARRAY */ 1N/A /* prevent empty string from being deleted */ 1N/A#
endif /* SHOPT_FIXEDARRAY */ 1N/A#
endif /* SHOPT_FIXEDARRAY */ 1N/A#
endif /* SHOPT_TYPEDEF */ 1N/A#
endif /* SHOPT_FIXEDARRAY */ 1N/A * Increase the size of the indexed array of elements in <arp> 1N/A * so that <maxi> is a legal index. If <arp> is 0, an array 1N/A * of the required size is allocated. A pointer to the 1N/A * allocated Namarr_t structure is returned. 1N/A * <maxi> becomes the current index of the array. 1N/A * Verify that argument is an indexed array and convert to associative, 1N/A * freeing relevant storage 1N/A * set the associative array processing method for node <np> to <fun> 1N/A * The array pointer is returned if sucessful. 1N/A * if it's already an indexed array, convert to 1N/A * associative structure 1N/A /* check for preexisting initialization and save */ 1N/A * move parent subscript into child 1N/A * This routine sets subscript of <np> to the next element, if any. 1N/A * The return value is zero, if there are no more elements 1N/A * Otherwise, 1 is returned. 1N/A#
endif /* SHOPT_FIXEDARRAY */ 1N/A#
endif /* SHOPT_FIXEDARRAY */ 1N/A * Set an array subscript for node <np> given the subscript <sp> 1N/A * An array is created if necessary. 1N/A * <mode> can be a number, plus or more of symbolic constants 1N/A * ARRAY_SCAN, ARRAY_UNDEF, ARRAY_ADD 1N/A * The node pointer is returned which can be NULL if <np> is 1N/A * not already array and the ARRAY_ADD bit of <mode> is not set. 1N/A * ARRAY_FILL sets the specified subscript to the empty string when 1N/A * ARRAY_ADD is specified and there is no value or sets all 1N/A * the elements up to the number specified if ARRAY_ADD is not specified 1N/A#
endif /* SHOPT_FIXEDARRAY */ 1N/A#
endif /* SHOPT_FIXEDARRAY */ 1N/A#
endif /* SHOPT_FIXEDARRAY */ 1N/A#
endif /* SHOPT_FIXEDARRAY */ 1N/A * process an array subscript for node <np> given the subscript <cp> 1N/A * returns pointer to character after the subscript 1N/A /* first find matching ']' */ 1N/A /* strip escape characters */ 1N/A#
endif /* SHOPT_FIXEDARRAY */ 1N/A#
endif /* SHOPT_FIXEDARRAY */ 1N/A#
endif /* SHOPT_FIXEDARRAY */ 1N/A#
endif /* SHOPT_FIXEDARRAY */ 1N/A#
endif /* SHOPT_FIXEDARRAY */ 1N/A * If <np> is an indexed array node, the current subscript index 1N/A * returned, otherwise returns -1 1N/A#
endif /* SHOPT_FIXEDARRAY */ 1N/A#
endif /* SHOPT_FIXEDARRAY */ 1N/A * This is the default implementation for associative arrays 1N/A * Assign values to an array