diff options
Diffstat (limited to 'genchksum.txr')
-rw-r--r-- | genchksum.txr | 39 |
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) |