diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2017-12-01 19:30:36 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2017-12-01 19:30:36 -0800 |
commit | 64266ae7f7f3d127f92accde2b78f84f5cdec7f1 (patch) | |
tree | 42251092033a8ed4b95a651327667fe3487f68a3 /args.h | |
parent | 6c94850e2cf44009648fd3d2ce3ef010aea8a7a0 (diff) | |
download | txr-64266ae7f7f3d127f92accde2b78f84f5cdec7f1.tar.gz txr-64266ae7f7f3d127f92accde2b78f84f5cdec7f1.tar.bz2 txr-64266ae7f7f3d127f92accde2b78f84f5cdec7f1.zip |
args: keyword extraction mechanism.
Implement a mechanism for extracting keyword arguments out of
"struct args *" argument lists which avoids consing up an
argument list and scanning it multiple times for multiple
keywords.
* args.c (args_for_each): New function.
(struct args_bool_key, struct args_bool_ctx): New struct
types.
(args_key_check_store): New static function.
(args_keys_extract_vl, args_key_extract): New functions.
* args.h (args_for_each, args_keys_extract_vl,
args_key_extract): Declared.
Diffstat (limited to 'args.h')
-rw-r--r-- | args.h | 5 |
1 files changed, 5 insertions, 0 deletions
@@ -186,3 +186,8 @@ struct args *args_copy_zap(struct args *to, struct args *from); struct args *args_cat_zap(struct args *to, struct args *from); struct args *args_cat_zap_from(struct args *to, struct args *from, cnum index); val args_copy_to_list(struct args *args); +void args_for_each(struct args *args, + int (*fn)(val arg, int ix, mem_t *ctx), + mem_t *ctx); +void args_keys_extract_vl(struct args *args, va_list); +void args_keys_extract(struct args *args, ...); |