ARRAY
if ((vp->flag&ARRAY) && any_set &&
if (vp->flag&ARRAY)
if ((vp->flag&ARRAY) && any_set)
if (~v->flag & (ISSET|ARRAY)) {
if (~v->flag & (ISSET|ARRAY))
if (vp->flag & (ISSET|ARRAY))
((*dp)->flag&ARRAY)))
vp->flag |= ARRAY|DEFINED;
vpbase = (vp->flag & ARRAY) ? global(arrayname(tvar)) : vp;
if ((vp->flag & ARRAY) && !array_ref) {
vp->flag &= SPECIAL | (array_ref ? ARRAY|DEFINED : 0);
#define DECLARRAY_BYTYPE(ARRAY, T, INLINE) \
INLINE struct ARRAY *ARRAY##_create(void); \
INLINE void ARRAY##_destroy(struct ARRAY *a); \
INLINE void ARRAY##_init(struct ARRAY *a); \
INLINE void ARRAY##_cleanup(struct ARRAY *a); \
INLINE unsigned ARRAY##_num(const struct ARRAY *a); \
INLINE T *ARRAY##_get(const struct ARRAY *a, unsigned index_); \
INLINE void ARRAY##_set(struct ARRAY *a, unsigned index_, T *val); \
INLINE void ARRAY##_setsize(struct ARRAY *a, unsigned num); \
INLINE void ARRAY##_add(struct ARRAY *a, T *val, unsigned *index_ret);\
INLINE void ARRAY##_insert(struct ARRAY *a, unsigned index_); \
INLINE void ARRAY##_remove(struct ARRAY *a, unsigned index_)
#define DEFARRAY_BYTYPE(ARRAY, T, INLINE) \
ARRAY##_init(struct ARRAY *a) \
ARRAY##_cleanup(struct ARRAY *a) \
ARRAY *ARRAY##_create(void) \
struct ARRAY *a; \
ARRAY##_init(a); \
ARRAY##_destroy(struct ARRAY *a) \
ARRAY##_cleanup(a); \
ARRAY##_num(const struct ARRAY *a) \
ARRAY##_get(const struct ARRAY *a, unsigned index_) \
ARRAY##_set(struct ARRAY *a, unsigned index_, T *val) \
ARRAY##_setsize(struct ARRAY *a, unsigned num) \
ARRAY##_add(struct ARRAY *a, T *val, unsigned *ret) \
ARRAY##_insert(struct ARRAY *a, unsigned index_) \
ARRAY##_remove(struct ARRAY *a, unsigned index_) \
| varname '[' patlist ']' { $$ = op2(ARRAY, makearr($1), $3); }
%token <i> ARRAY
{ ARRAY, "array", NULL },
if ((l = do_find(ARRAY, name)) > 0) {
if (stack[level].type == ARRAY)
stack[level].type = ARRAY;
if (stack[level].type == ARRAY)
if (stack[level].type == ARRAY)
if ((l = do_find(ARRAY, name)) > 0) {
if (stack[level].type == ARRAY)
stack[level].type = ARRAY;
if (stack[level].type == ARRAY)
if (stack[level].type == ARRAY)
if ((l = do_find(ARRAY, name)) > 0) {
if (stack[level].type == ARRAY)
stack[level].type = ARRAY;
if (stack[level].type == ARRAY)
if (stack[level].type == ARRAY)