diff options
Diffstat (limited to '')
-rw-r--r-- | stdlib/source/lux/world/blob.jvm.lux | 60 |
1 files changed, 31 insertions, 29 deletions
diff --git a/stdlib/source/lux/world/blob.jvm.lux b/stdlib/source/lux/world/blob.jvm.lux index d1ee258a3..ce2e39984 100644 --- a/stdlib/source/lux/world/blob.jvm.lux +++ b/stdlib/source/lux/world/blob.jvm.lux @@ -5,10 +5,12 @@ ["ex" exception (#+ exception:)] ["eq" equivalence]] [data - [bit] [maybe] [error (#+ Error)] - [text format]] + [text + format] + [number + [i64]]] [host (#+ import:)]]) (exception: #export (index-out-of-bounds {description Text}) @@ -28,11 +30,11 @@ (def: byte-mask I64 - (|> +1 (bit.left-shift +8) dec .i64)) + (|> +1 (i64.left-shift +8) dec .i64)) (def: i64 (-> (primitive "java.lang.Byte") I64) - (|>> host.byte-to-long (:coerce I64) (bit.and byte-mask))) + (|>> host.byte-to-long (:coerce I64) (i64.and byte-mask))) (def: byte (-> (I64 Any) (primitive "java.lang.Byte")) @@ -51,32 +53,32 @@ (def: #export (read/16 idx blob) (-> Nat Blob (Error I64)) (if (n/< (host.array-length blob) (n/+ +1 idx)) - (#error.Success ($_ bit.or - (bit.left-shift +8 (..i64 (host.array-read idx blob))) + (#error.Success ($_ i64.or + (i64.left-shift +8 (..i64 (host.array-read idx blob))) (..i64 (host.array-read (n/+ +1 idx) blob)))) (ex.throw index-out-of-bounds (%n idx)))) (def: #export (read/32 idx blob) (-> Nat Blob (Error I64)) (if (n/< (host.array-length blob) (n/+ +3 idx)) - (#error.Success ($_ bit.or - (bit.left-shift +24 (..i64 (host.array-read idx blob))) - (bit.left-shift +16 (..i64 (host.array-read (n/+ +1 idx) blob))) - (bit.left-shift +8 (..i64 (host.array-read (n/+ +2 idx) blob))) + (#error.Success ($_ i64.or + (i64.left-shift +24 (..i64 (host.array-read idx blob))) + (i64.left-shift +16 (..i64 (host.array-read (n/+ +1 idx) blob))) + (i64.left-shift +8 (..i64 (host.array-read (n/+ +2 idx) blob))) (..i64 (host.array-read (n/+ +3 idx) blob)))) (ex.throw index-out-of-bounds (%n idx)))) (def: #export (read/64 idx blob) (-> Nat Blob (Error I64)) (if (n/< (host.array-length blob) (n/+ +7 idx)) - (#error.Success ($_ bit.or - (bit.left-shift +56 (..i64 (host.array-read idx blob))) - (bit.left-shift +48 (..i64 (host.array-read (n/+ +1 idx) blob))) - (bit.left-shift +40 (..i64 (host.array-read (n/+ +2 idx) blob))) - (bit.left-shift +32 (..i64 (host.array-read (n/+ +3 idx) blob))) - (bit.left-shift +24 (..i64 (host.array-read (n/+ +4 idx) blob))) - (bit.left-shift +16 (..i64 (host.array-read (n/+ +5 idx) blob))) - (bit.left-shift +8 (..i64 (host.array-read (n/+ +6 idx) blob))) + (#error.Success ($_ i64.or + (i64.left-shift +56 (..i64 (host.array-read idx blob))) + (i64.left-shift +48 (..i64 (host.array-read (n/+ +1 idx) blob))) + (i64.left-shift +40 (..i64 (host.array-read (n/+ +2 idx) blob))) + (i64.left-shift +32 (..i64 (host.array-read (n/+ +3 idx) blob))) + (i64.left-shift +24 (..i64 (host.array-read (n/+ +4 idx) blob))) + (i64.left-shift +16 (..i64 (host.array-read (n/+ +5 idx) blob))) + (i64.left-shift +8 (..i64 (host.array-read (n/+ +6 idx) blob))) (..i64 (host.array-read (n/+ +7 idx) blob)))) (ex.throw index-out-of-bounds (%n idx)))) @@ -92,7 +94,7 @@ (-> Nat (I64 Any) Blob (Error Blob)) (if (n/< (host.array-length blob) (n/+ +1 idx)) (exec (|> blob - (host.array-write idx (..byte (bit.logical-right-shift +8 value))) + (host.array-write idx (..byte (i64.logical-right-shift +8 value))) (host.array-write (n/+ +1 idx) (..byte value))) (#error.Success blob)) (ex.throw index-out-of-bounds (%n idx)))) @@ -101,9 +103,9 @@ (-> Nat (I64 Any) Blob (Error Blob)) (if (n/< (host.array-length blob) (n/+ +3 idx)) (exec (|> blob - (host.array-write idx (..byte (bit.logical-right-shift +24 value))) - (host.array-write (n/+ +1 idx) (..byte (bit.logical-right-shift +16 value))) - (host.array-write (n/+ +2 idx) (..byte (bit.logical-right-shift +8 value))) + (host.array-write idx (..byte (i64.logical-right-shift +24 value))) + (host.array-write (n/+ +1 idx) (..byte (i64.logical-right-shift +16 value))) + (host.array-write (n/+ +2 idx) (..byte (i64.logical-right-shift +8 value))) (host.array-write (n/+ +3 idx) (..byte value))) (#error.Success blob)) (ex.throw index-out-of-bounds (%n idx)))) @@ -112,13 +114,13 @@ (-> Nat (I64 Any) Blob (Error Blob)) (if (n/< (host.array-length blob) (n/+ +7 idx)) (exec (|> blob - (host.array-write idx (..byte (bit.logical-right-shift +56 value))) - (host.array-write (n/+ +1 idx) (..byte (bit.logical-right-shift +48 value))) - (host.array-write (n/+ +2 idx) (..byte (bit.logical-right-shift +40 value))) - (host.array-write (n/+ +3 idx) (..byte (bit.logical-right-shift +32 value))) - (host.array-write (n/+ +4 idx) (..byte (bit.logical-right-shift +24 value))) - (host.array-write (n/+ +5 idx) (..byte (bit.logical-right-shift +16 value))) - (host.array-write (n/+ +6 idx) (..byte (bit.logical-right-shift +8 value))) + (host.array-write idx (..byte (i64.logical-right-shift +56 value))) + (host.array-write (n/+ +1 idx) (..byte (i64.logical-right-shift +48 value))) + (host.array-write (n/+ +2 idx) (..byte (i64.logical-right-shift +40 value))) + (host.array-write (n/+ +3 idx) (..byte (i64.logical-right-shift +32 value))) + (host.array-write (n/+ +4 idx) (..byte (i64.logical-right-shift +24 value))) + (host.array-write (n/+ +5 idx) (..byte (i64.logical-right-shift +16 value))) + (host.array-write (n/+ +6 idx) (..byte (i64.logical-right-shift +8 value))) (host.array-write (n/+ +7 idx) (..byte value))) (#error.Success blob)) (ex.throw index-out-of-bounds (%n idx)))) |