summaryrefslogtreecommitdiffstats
path: root/hash.h
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2011-09-25 10:28:41 -0700
committerKaz Kylheku <kaz@kylheku.com>2011-09-25 10:28:41 -0700
commit4ce8dde9cafa8a77a0c623043fded0a751ad4b02 (patch)
tree2b18b7c7e838da2491327fdd8a9d291f31c2b46c /hash.h
parent658eb97af000aa0598e3544c2c7ea2cdd60b5b06 (diff)
downloadtxr-4ce8dde9cafa8a77a0c623043fded0a751ad4b02.tar.gz
txr-4ce8dde9cafa8a77a0c623043fded0a751ad4b02.tar.bz2
txr-4ce8dde9cafa8a77a0c623043fded0a751ad4b02.zip
Filtering feature for variable substitution in output.
* filter.c, filter.h: New files. * Makefile (OBJS): filter.o added. * gc.c (mark_obj): Mark new alloc field of string objets. * hash.c (struct hash): New member, userdata. (hash_mark): Mark new userdata member of hash. (make_hash): Initialize userdata. (get_hash_userdata, set_hash_userdata, hashp): New functions. * hash.h (get_hash_userdata, set_hash_userdata, hashp): New functions declared. * lib.c (getplist, string_extend, cobjp): New functions. (string_own, string, string_utf8): Initialize new alloc field to nil. (mkstring, mkustring): Initialize new alloc field to actual size. (length_str): When length is computed and cached, also compute and cache alloc. (init): Call filter_init. * lib.h (string string): New member, alloc. (num_fast): Macro converted to inline function. (getplist, string_extend, cobjp): New functions declared. * match.c (match_line): Follows change of modifier s-exp syntax. (format_field): New parameter, filter. New modifier syntax parsed. Filter retrieved, and applied. (subst_vars): New parameter, filter. Filter is either applied in this function or passed to format_field, as needed. (eval_form): Pass nil to new parameter of subst_vars. (do_output_line): New parameter, filter. Passed down to subst_vars. (do_output): New parameter, filter. Passed down to do_output_line. (match_files): Pass nil filter to subst_vars in cat directive. Output directive refactored to parse keywords, extract the filter and pass down to do_output. * parser.y (regex): Generate (sys:regex regex syntax ...) instead of (regex syntax ...). (elem, expr): Updated w.r.t. regex syntax change. (var): Cases '{' IDENT regex '}' and '{' IDENT NUMBER '}' are removed. new syntax '{' IDENT exprs '}' to handle these more generally and allow for keywords. * txr.1: Updated.
Diffstat (limited to 'hash.h')
-rw-r--r--hash.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/hash.h b/hash.h
index cd293ce9..b5bd200a 100644
--- a/hash.h
+++ b/hash.h
@@ -28,8 +28,12 @@ val hash_obj(val);
val make_hash(val weak_keys, val weak_vals);
val *gethash_l(val hash, val key, val *new_p);
val gethash(val hash, val key);
+val gethash_f(val hash, val key, val *found);
val sethash(val hash, val key, val value);
val remhash(val hash, val key);
+val get_hash_userdata(val hash);
+val set_hash_userdata(val hash, val data);
+val hashp(val obj);
void hash_process_weak(void);
void hash_init(void);