]> gitweb.factorcode.org Git - factor.git/commitdiff
checksums: make checksum-state implement dispose.
authorJohn Benediktsson <mrjbq7@gmail.com>
Mon, 1 Aug 2016 22:46:30 +0000 (15:46 -0700)
committerJohn Benediktsson <mrjbq7@gmail.com>
Mon, 1 Aug 2016 22:46:30 +0000 (15:46 -0700)
basis/checksums/common/common.factor
core/checksums/checksums.factor

index 104dadcf1d5258e16485d2c8a183792351e41d56..511910ec6edfcd7c8da5a469952a5e7b52d08af9 100644 (file)
@@ -1,8 +1,7 @@
 ! Copyright (C) 2006, 2008 Doug Coleman.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: accessors byte-arrays byte-vectors checksums destructors
-grouping io io.backend io.binary io.encodings.binary io.files
-kernel make math sequences locals ;
+USING: accessors byte-arrays byte-vectors checksums grouping
+io.binary kernel locals make math sequences ;
 IN: checksums.common
 
 : calculate-pad-length ( length -- length' )
@@ -23,8 +22,6 @@ TUPLE: block-checksum-state < checksum-state
     { bytes-read integer }
     { block-size integer } ;
 
-M: block-checksum-state dispose drop ;
-
 GENERIC: checksum-block ( bytes checksum-state -- )
 
 ! Update the bytes-read before calculating checksum in case
@@ -48,11 +45,7 @@ M:: block-checksum-state add-checksum-bytes ( state data -- state )
     remain [ >byte-vector ] [ BV{ } clone ] if* >>bytes ;
 
 M: block-checksum checksum-bytes
-    initialize-checksum-state [
-        swap add-checksum-bytes get-checksum
-    ] with-disposal ;
+    [ swap add-checksum-bytes get-checksum ] with-checksum-state ;
 
 M: block-checksum checksum-stream
-    initialize-checksum-state [
-        swap add-checksum-stream get-checksum
-    ] with-disposal ;
+    [ swap add-checksum-stream get-checksum ] with-checksum-state ;
index 9030f50e6a9e8bbc0340cd334585738831dca084..3c1d31d7d163d67602ba7667ac72b8fdc416b8df 100644 (file)
@@ -1,7 +1,8 @@
 ! Copyright (c) 2008 Slava Pestov
 ! See http://factorcode.org/license.txt for BSD license.
-USING: accessors byte-vectors io io.backend io.encodings.binary
-io.files io.streams.byte-array kernel sequences ;
+USING: accessors byte-vectors destructors io io.backend
+io.encodings.binary io.files io.streams.byte-array kernel
+sequences ;
 IN: checksums
 
 MIXIN: checksum
@@ -24,6 +25,8 @@ M: checksum checksum-lines
 
 TUPLE: checksum-state checksum { bytes byte-vector } ;
 
+M: checksum-state dispose drop ;
+
 M: checksum-state clone
     call-next-method
     [ clone ] change-bytes ;
@@ -35,6 +38,9 @@ GENERIC: initialize-checksum-state ( checksum -- checksum-state )
 GENERIC# add-checksum-bytes 1 ( checksum-state data -- checksum-state )
 GENERIC: get-checksum ( checksum-state -- value )
 
+: with-checksum-state ( ... checksum quot: ( ... checksum-state -- ..b ) -- ..b value )
+    [ initialize-checksum-state ] dip with-disposal ; inline
+
 : add-checksum-stream ( checksum-state stream -- checksum-state )
     [ [ add-checksum-bytes ] each-block ] with-input-stream ;