summaryrefslogtreecommitdiffstats
path: root/hash.h
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2014-02-12 22:09:48 -0800
committerKaz Kylheku <kaz@kylheku.com>2014-02-14 15:53:43 -0800
commitb21d9c695dfb570a459129885063749e6efa561e (patch)
treec87a1f73d359c574e9d99591660e20af762413c0 /hash.h
parent260968beacb1a2e1c6bdd652f75fe087f907ce0f (diff)
downloadtxr-b21d9c695dfb570a459129885063749e6efa561e.tar.gz
txr-b21d9c695dfb570a459129885063749e6efa561e.tar.bz2
txr-b21d9c695dfb570a459129885063749e6efa561e.zip
Different approach: optional arguments on hash-isec and hash-uni allow
for more flexible joining of data from the hash tables. * eval.c (eval_init): Remove hash_guni and hash_gisec. Change registration for hash_uni and hash_isec to three arguments with one optional. * hash.c (hash_uni): Third parameter introduced, join_func. The default behavior changes: in the two argument case, clashing keys prefer the value from hash1 rather than hash2. For this reason, we now iterate over hash2 first, then hash1. (hash_guni): Removed. (hash_isec): Third parameter introduced, join_func. (hash_gisec): Removed. * hash.h (hash_uni, hash_isec): Declarations updated. (hash_guni, hash_gisec): Delarations removed. * txr.1: Documentation updated.
Diffstat (limited to 'hash.h')
-rw-r--r--hash.h6
1 files changed, 2 insertions, 4 deletions
diff --git a/hash.h b/hash.h
index 89048457..52783d37 100644
--- a/hash.h
+++ b/hash.h
@@ -53,11 +53,9 @@ val hash_keys(val hash);
val hash_values(val hash);
val hash_pairs(val hash);
val hash_alist(val hash);
-val hash_uni(val hash1, val hash2);
-val hash_guni(val hash1, val hash2);
+val hash_uni(val hash1, val hash2, val join_func);
val hash_diff(val hash1, val hash2);
-val hash_isec(val hash1, val hash2);
-val hash_gisec(val hash1, val hash2);
+val hash_isec(val hash1, val hash2, val join_func);
val hash_update(val hash, val fun);
void hash_process_weak(void);