Skip to content

Commit 90ecb3d

Browse files
committed
FEAT: added missing UI32BYTES and UI32LEBYTES _bincode_ read commands
1 parent df2c2ab commit 90ecb3d

File tree

2 files changed

+27
-0
lines changed

2 files changed

+27
-0
lines changed

src/core/u-bincode.c

+20
Original file line numberDiff line numberDiff line change
@@ -1431,6 +1431,26 @@ static REBCNT EncodedU32_Size(u32 value) {
14311431
cp += 3;
14321432
VAL_INDEX(buffer_read) += 3;
14331433
goto readNBytes;
1434+
case SYM_UI32BYTES:
1435+
ASSERT_READ_SIZE(value, cp, ep, 4);
1436+
n = ((u64)cp[3] ) |
1437+
((u64)cp[2] << 8 ) |
1438+
((u64)cp[1] << 16) |
1439+
((u64)cp[0] << 24) ;
1440+
ASSERT_READ_SIZE(value, cp, ep, n);
1441+
cp += 4;
1442+
VAL_INDEX(buffer_read) += 4;
1443+
goto readNBytes;
1444+
case SYM_UI32LEBYTES:
1445+
ASSERT_READ_SIZE(value, cp, ep, 4);
1446+
n = ((u64)cp[0] ) |
1447+
((u64)cp[1] << 8 ) |
1448+
((u64)cp[2] << 16) |
1449+
((u64)cp[3] << 24) ;
1450+
ASSERT_READ_SIZE(value, cp, ep, n);
1451+
cp += 4;
1452+
VAL_INDEX(buffer_read) += 4;
1453+
goto readNBytes;
14341454
case SYM_AT:
14351455
// uses absolute positioning from series HEAD!
14361456
next = ++value;

src/tests/units/bincode-test.r3

+7
Original file line numberDiff line numberDiff line change
@@ -146,18 +146,25 @@ is-protected-error?: func[code][
146146
--test-- "BinCode - UI8BYTES"
147147
--assert object? binary/write b [UI8BYTES #{cafe}]
148148
--assert #{02CAFE} = binary/read b 'bytes
149+
--assert #{CAFE} = binary/read #{02CAFE} 'UI8BYTES
149150
--test-- "BinCode - UI16BYTES"
150151
--assert object? binary/write b [UI16BYTES #{cafe}]
151152
--assert #{0002CAFE} = binary/read b 'bytes
153+
--assert #{CAFE} = binary/read #{0002CAFE} 'UI16BYTES
152154
--test-- "BinCode - UI16LEBYTES"
153155
--assert object? binary/write b [UI16LEBYTES #{cafe}]
154156
--assert #{0200CAFE} = binary/read b 'bytes
157+
--assert #{CAFE} = binary/read #{0200CAFE} 'UI16LEBYTES
155158
--test-- "BinCode - UI24BYTES"
156159
--assert object? binary/write b [UI24BYTES #{cafe}]
157160
--assert #{000002CAFE} = binary/read b 'bytes
161+
--assert #{CAFE} = binary/read #{000002CAFE} 'UI24BYTES
162+
--assert #{CAFE} = binary/read #{020000CAFE} 'UI24LEBYTES
158163
--test-- "BinCode - UI32BYTES"
159164
--assert object? binary/write b [UI32BYTES #{cafe}]
160165
--assert #{00000002CAFE} = binary/read b 'bytes
166+
--assert #{CAFE} = binary/read #{00000002CAFE} 'UI32BYTES
167+
--assert #{CAFE} = binary/read #{02000000CAFE} 'UI32LEBYTES
161168

162169
--test-- "BinCode - write GET-WORD"
163170
a: 42 b: binary/write #{} [ui8 :a]

0 commit comments

Comments
 (0)