summaryrefslogtreecommitdiffstats
path: root/genchksum.txr
diff options
context:
space:
mode:
Diffstat (limited to 'genchksum.txr')
-rw-r--r--genchksum.txr39
1 files changed, 35 insertions, 4 deletions
diff --git a/genchksum.txr b/genchksum.txr
index 932f2813..b86108fb 100644
--- a/genchksum.txr
+++ b/genchksum.txr
@@ -24,24 +24,37 @@ MD5_init MD5_update MD5_final
@ (bind s @(new (chksum cname type strname hashlen init update final)))
@(end)
@(next "chksum.c")
-/* This file is generated by genchksum.txr */
+/* This file is partially generated by genchksum.txr; see comment below. */
@(collect)
@ prolog
@(until)
-static void @{nil}_stream_impl(val stream, val nbytes,
+static val @{nil}_ctx_s, @nil
@(end)
@(skip)
-@(data epilog)
+@(data crc32-start)
val crc32_stream(val stream, val nbytes, val init)
+@(skip)
+@(data chksum-init-start)
+void chksum_init(void)
+{
+@(skip)
+@(data epilog)
+ reg_fun(intern(lit("crc32-stream"), user_package), func_n3o(crc32_stream, 1));
+ reg_fun(intern(lit("crc32"), user_package), func_n2o(crc32, 1));
+}
+@(bind crc32 @(ldiff crc32-start chksum-init-start))
@(output "chksum.c")
-/* This file is generated by genchksum.txr */
+/* This file is partially generated by genchksum.txr; see comment below. */
@(repeat)
@ prolog
@(end)
+static val @(rep)@{s.cname}_ctx_s, @(last)@{s.cname}_ctx_s;@(end)
+static struct cobj_class @(rep)*@{s.cname}_ctx_cls, @(last)*@{s.cname}_ctx_cls;@(end)
+
@(repeat)
static void @{s.cname}_stream_impl(val stream, val nbytes,
unsigned char *hash, val self)
@@ -230,6 +243,24 @@ val @{s.cname}_end(val ctx, val buf_in)
@(end)
@(repeat)
+@ crc32
+@(end)
+void chksum_init(void)
+{
+@(repeat)
+ @{s.cname}_ctx_s = intern(lit("@{s.cname}-ctx"), user_package);
+@(end)
+@(repeat)
+ @{s.cname}_ctx_cls = cobj_register(@{s.cname}_ctx_s);
+@(end)
+@(repeat)
+ reg_fun(intern(lit("@{s.cname}-stream"), user_package), func_n3o(@{s.cname}_stream, 1));
+ reg_fun(intern(lit("@{s.cname}"), user_package), func_n2o(@{s.cname}, 1));
+ reg_fun(intern(lit("@{s.cname}-begin"), user_package), func_n0(@{s.cname}_begin));
+ reg_fun(intern(lit("@{s.cname}-hash"), user_package), func_n2(@{s.cname}_hash));
+ reg_fun(intern(lit("@{s.cname}-end"), user_package), func_n2o(@{s.cname}_end, 1));
+@(end)
+@(repeat)
@ epilog
@(end)
@(end)