1 ! Copyright (C) 2018 Alexander Ilin.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors checksums checksums.common destructors
7 TUPLE: multi-checksum checksums ;
9 C: <multi-checksum> multi-checksum
11 TUPLE: multi-state < disposable states results ;
13 M: multi-checksum initialize-checksum-state
14 checksums>> [ initialize-checksum-state ] map
15 multi-state new-disposable swap >>states ;
17 M: multi-state dispose*
18 states>> dispose-each ;
20 M: multi-state add-checksum-bytes
21 '[ [ _ add-checksum-bytes ] map! ] change-states ;
23 M: multi-state get-checksum
25 dup states>> [ get-checksum ] map [ >>results ] keep
28 INSTANCE: multi-checksum block-checksum