io.binary: faster le> and signed-be>.

db4
John Benediktsson 2013-11-24 09:57:40 -08:00
parent 405e543f92
commit 77d2abc06c
1 changed files with 10 additions and 6 deletions

View File

@ -3,7 +3,7 @@
USING: kernel math sequences ; USING: kernel math sequences ;
IN: io.binary IN: io.binary
: le> ( seq -- x ) dup length iota 0 [ 8 * shift + ] 2reduce ; : le> ( seq -- x ) 0 [ 8 * shift + ] reduce-index ;
: be> ( seq -- x ) 0 [ [ 8 shift ] dip + ] reduce ; : be> ( seq -- x ) 0 [ [ 8 shift ] dip + ] reduce ;
@ -31,9 +31,13 @@ PRIVATE>
: h>b/b ( h -- b1 b2 ) : h>b/b ( h -- b1 b2 )
[ mask-byte ] [ -8 shift mask-byte ] bi ; [ mask-byte ] [ -8 shift mask-byte ] bi ;
: signed-le> ( bytes -- x ) <PRIVATE
[ le> ] [ length 8 * 1 - 2^ 1 - ] bi
2dup > [ bitnot bitor ] [ drop ] if ;
: signed-be> ( bytes -- x ) : signed> ( x seq -- n )
<reversed> signed-le> ; length 8 * 1 - 2^ 1 - 2dup > [ bitnot bitor ] [ drop ] if ; inline
PRIVATE>
: signed-le> ( bytes -- x ) [ le> ] [ signed> ] bi ;
: signed-be> ( bytes -- x ) [ be> ] [ signed> ] bi ;