io.binary.fast: adding fast version of signed> words.
parent
e04dc6db29
commit
69a6fa72bc
|
@ -11,3 +11,8 @@ IN: io.binary.fast.tests
|
|||
[ 0x01020304 ] [ B{ 04 03 02 01 } 4le> ] unit-test
|
||||
[ 0x0102030405060708 ] [ B{ 08 07 06 05 04 03 02 01 } 8le> ] unit-test
|
||||
|
||||
{ 0x04030201 } [ B{ 1 2 3 4 } signed-le> ] unit-test
|
||||
{ 0x01020304 } [ B{ 1 2 3 4 } signed-be> ] unit-test
|
||||
|
||||
{ -12 } [ B{ 0xf4 0xff 0xff 0xff } signed-le> ] unit-test
|
||||
{ -12 } [ B{ 0xff 0xff 0xff 0xf4 } signed-be> ] unit-test
|
||||
|
|
|
@ -5,6 +5,8 @@ combinators.smart endian fry hints kernel locals macros math
|
|||
math.ranges sequences sequences.generalizations ;
|
||||
RENAME: be> io.binary => slow-be>
|
||||
RENAME: le> io.binary => slow-le>
|
||||
RENAME: signed-be> io.binary => slow-signed-be>
|
||||
RENAME: signed-le> io.binary => slow-signed-le>
|
||||
RENAME: >be io.binary => >slow-be
|
||||
RENAME: >le io.binary => >slow-le
|
||||
IN: io.binary.fast
|
||||
|
@ -64,6 +66,18 @@ PRIVATE>
|
|||
[ drop slow-be> ]
|
||||
} case ;
|
||||
|
||||
: signed-be> ( bytes -- x )
|
||||
compute-native-endianness big-endian = [
|
||||
dup byte-array? [
|
||||
dup length {
|
||||
{ 2 [ int16_t deref ] }
|
||||
{ 4 [ int32_t deref ] }
|
||||
{ 8 [ int64_t deref ] }
|
||||
[ drop slow-signed-be> ]
|
||||
} case
|
||||
] [ slow-signed-be> ] if
|
||||
] [ slow-signed-be> ] if ;
|
||||
|
||||
: 2le> ( bytes -- x )
|
||||
little-endian [ uint16_t deref ] [ 2 n-le> ] if-endian ;
|
||||
|
||||
|
@ -81,6 +95,18 @@ PRIVATE>
|
|||
[ drop slow-le> ]
|
||||
} case ;
|
||||
|
||||
: signed-le> ( bytes -- x )
|
||||
compute-native-endianness little-endian = [
|
||||
dup byte-array? [
|
||||
dup length {
|
||||
{ 2 [ int16_t deref ] }
|
||||
{ 4 [ int32_t deref ] }
|
||||
{ 8 [ int64_t deref ] }
|
||||
[ drop slow-signed-le> ]
|
||||
} case
|
||||
] [ slow-signed-le> ] if
|
||||
] [ slow-signed-le> ] if ;
|
||||
|
||||
: >le ( x n -- bytes )
|
||||
compute-native-endianness little-endian = [
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue