diff options
author | Peter Stephenson <p.w.stephenson@ntlworld.com> | 2017-09-13 20:54:00 +0100 |
---|---|---|
committer | Peter Stephenson <p.w.stephenson@ntlworld.com> | 2017-09-13 20:54:00 +0100 |
commit | 54b395844030342213cacba4c569a6c5e6781c46 (patch) | |
tree | b9de3dad4206d09d12c2b745e9bac6731d9bf221 /Src/zsh.h | |
parent | da4146bdffb54423ad4d6db893b8ed25663169dc (diff) | |
download | zsh-54b395844030342213cacba4c569a6c5e6781c46.tar.gz zsh-54b395844030342213cacba4c569a6c5e6781c46.tar.xz zsh-54b395844030342213cacba4c569a6c5e6781c46.zip |
First go at var=([key]=value) syntax.
Works for both normal and typeset case, also var+=... Still to do: allow to be mixed with straight array assignment, improve typeset -p, implement [key]+=value.
Diffstat (limited to 'Src/zsh.h')
-rw-r--r-- | Src/zsh.h | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/Src/zsh.h b/Src/zsh.h index 1e982a632..27642f239 100644 --- a/Src/zsh.h +++ b/Src/zsh.h @@ -1217,17 +1217,25 @@ struct alias { struct asgment { struct linknode node; char *name; - int is_array; + int flags; union { char *scalar; LinkList array; } value; }; +/* Flags for flags element of asgment */ +enum { + /* Array value */ + ASG_ARRAY = 1, + /* Key / value array pair */ + ASG_KEY_VALUE = 2 +}; + /* * Assignment is array? */ -#define ASG_ARRAYP(asg) ((asg)->is_array) +#define ASG_ARRAYP(asg) ((asg)->flags & ASG_ARRAY) /* * Assignment has value? @@ -2060,6 +2068,11 @@ enum { ASSPM_WARN = (ASSPM_WARN_CREATE|ASSPM_WARN_NESTED), /* Import from environment, so exercise care evaluating value */ ASSPM_ENV_IMPORT = 1 << 3, + /* Array is key / value pairs. + * This is normal for associative arrays but variant behaviour for + * normal arrays. + */ + ASSPM_KEY_VALUE = 1 << 4 }; /* node for named directory hash table (nameddirtab) */ |