* Added fxcopy-bit-field.
This commit is contained in:
parent
d977720ae6
commit
ab6c871d76
|
@ -2890,7 +2890,8 @@
|
|||
fxbit-count bitwise-bit-count
|
||||
fxlength
|
||||
fxbit-set?
|
||||
fxcopy-bit)
|
||||
fxcopy-bit
|
||||
fxcopy-bit-field)
|
||||
(import
|
||||
(ikarus system $fx)
|
||||
(ikarus system $bignums)
|
||||
|
@ -2900,7 +2901,8 @@
|
|||
fxbit-count bitwise-bit-count
|
||||
fxlength
|
||||
fxbit-set?
|
||||
fxcopy-bit))
|
||||
fxcopy-bit
|
||||
fxcopy-bit-field))
|
||||
|
||||
(module (bitwise-first-bit-set fxfirst-bit-set)
|
||||
(define (byte-first-bit-set x i)
|
||||
|
@ -3026,6 +3028,33 @@
|
|||
(error who "index out of range" i))
|
||||
(error who "index is not a fixnum" i))
|
||||
(error who "not a fixnum" x)))
|
||||
|
||||
(define (fxcopy-bit-field x i j b)
|
||||
(define who 'fxcopy-bit-field)
|
||||
(if (fixnum? x)
|
||||
(if (fixnum? i)
|
||||
(if ($fx<= 0 i)
|
||||
(if (fixnum? j)
|
||||
(if ($fx< j (fixnum-width))
|
||||
(if ($fx<= i j)
|
||||
(if (fixnum? b)
|
||||
(let ([m
|
||||
($fxlogxor
|
||||
($fxsub1 ($fxsll 1 i))
|
||||
($fxsub1 ($fxsll 1 j)))])
|
||||
($fxlogor
|
||||
($fxlogand m b)
|
||||
($fxlogand ($fxlognot m) x)))
|
||||
(error who "not a fixnum" b))
|
||||
(if ($fx<= 0 j)
|
||||
(error who "index out of range" j)
|
||||
(error who "indices not in order" i j)))
|
||||
(error who "index out of range" j))
|
||||
(error who "not a fixnum" j))
|
||||
(error who "index out of range" i))
|
||||
(error who "not a fixnum" i))
|
||||
(error who "not a fixnum" x)))
|
||||
|
||||
)
|
||||
|
||||
|
||||
|
|
|
@ -790,7 +790,7 @@
|
|||
[fxbit-field r fx]
|
||||
[fxbit-set? i r fx]
|
||||
[fxcopy-bit i r fx]
|
||||
[fxcopy-bit-field r fx]
|
||||
[fxcopy-bit-field i r fx]
|
||||
[fxdiv i r fx]
|
||||
[fxdiv-and-mod i r fx]
|
||||
[fxdiv0 i r fx]
|
||||
|
|
|
@ -292,7 +292,7 @@
|
|||
[fxbit-field S fx]
|
||||
[fxbit-set? C fx]
|
||||
[fxcopy-bit C fx]
|
||||
[fxcopy-bit-field S fx]
|
||||
[fxcopy-bit-field C fx]
|
||||
[fxdiv C fx]
|
||||
[fxdiv-and-mod C fx]
|
||||
[fxdiv0 C fx]
|
||||
|
|
Loading…
Reference in New Issue