Skip to content

Commit 0248e85

Browse files
committed
CHANGE: revisited vector construction syntax types
Now accepting for example `i16!` and `uint16!` instead of previous `si16!` and `ui16!`.
1 parent 1fb779f commit 0248e85

File tree

7 files changed

+204
-145
lines changed

7 files changed

+204
-145
lines changed

src/boot/words.reb

+25-12
Original file line numberDiff line numberDiff line change
@@ -27,25 +27,38 @@ any-object!
2727
any-block!
2828

2929
;- numeric types (used for "short" vector! construction)
30-
;- like: #[ui8! 4] which is same like: make vector! [unsigned integer! 8 4]
30+
;- like: #[u8! 4] which is same like: make vector! [unsigned integer! 8 4]
3131
; these numeric files are used in l-types.c and t-vector.c sources
3232
; and can be used for future struct! and routine! implementations
33-
si8!
34-
si16!
35-
si32!
36-
si64!
33+
i8!
34+
i16!
35+
i32!
36+
i64!
3737

38-
ui8!
39-
ui16!
40-
ui32!
41-
ui64!
38+
u8!
39+
u16!
40+
u32!
41+
u64!
4242

4343
f32!
4444
f64!
45-
;@@ O: Should be supported also longer variants like uint8! etc?
46-
; end of numeric types
4745

48-
datatypes
46+
int8!
47+
int16!
48+
int32!
49+
int64!
50+
51+
uint8!
52+
uint16!
53+
uint32!
54+
uint64!
55+
56+
float!
57+
double!
58+
byte!
59+
; end of numeric types (code in l-types.c expects, that next word is `datatypes`)
60+
61+
datatypes
4962

5063
native
5164
self

src/core/l-types.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -1094,7 +1094,7 @@ bad_hex: Trap0(RE_INVALID_CHARS);
10941094
return TRUE;
10951095

10961096
default:
1097-
if (type >= SYM_SI8X && type <= SYM_F64X) {
1097+
if (type >= SYM_I8X && type < SYM_DATATYPES) {
10981098
if (MT_Vector(value, val, REB_VECTOR)) return TRUE;
10991099
}
11001100
return FALSE;

src/core/t-vector.c

+21-10
Original file line numberDiff line numberDiff line change
@@ -487,16 +487,27 @@ void Set_Vector_Row(REBSER *ser, REBVAL *blk)
487487
// SIGNED / UNSIGNED
488488
if (IS_WORD(bp)) {
489489
switch (VAL_WORD_CANON(bp)) {
490-
case SYM_SI8X: type = 0; sign = 0; bits = 8; bp++; goto size_spec;
491-
case SYM_UI8X: type = 0; sign = 1; bits = 8; bp++; goto size_spec;
492-
case SYM_SI16X: type = 0; sign = 0; bits = 16; bp++; goto size_spec;
493-
case SYM_UI16X: type = 0; sign = 1; bits = 16; bp++; goto size_spec;
494-
case SYM_SI32X: type = 0; sign = 0; bits = 32; bp++; goto size_spec;
495-
case SYM_UI32X: type = 0; sign = 1; bits = 32; bp++; goto size_spec;
496-
case SYM_SI64X: type = 0; sign = 0; bits = 64; bp++; goto size_spec;
497-
case SYM_UI64X: type = 0; sign = 1; bits = 64; bp++; goto size_spec;
498-
case SYM_F32X: type = 1; sign = 0; bits = 32; bp++; goto size_spec;
499-
case SYM_F64X: type = 1; sign = 0; bits = 64; bp++; goto size_spec;
490+
case SYM_I8X:
491+
case SYM_INT8X: type = 0; sign = 0; bits = 8; bp++; goto size_spec;
492+
case SYM_U8X:
493+
case SYM_BYTEX:
494+
case SYM_UINT8X: type = 0; sign = 1; bits = 8; bp++; goto size_spec;
495+
case SYM_I16X:
496+
case SYM_INT16X: type = 0; sign = 0; bits = 16; bp++; goto size_spec;
497+
case SYM_U16X:
498+
case SYM_UINT16X: type = 0; sign = 1; bits = 16; bp++; goto size_spec;
499+
case SYM_I32X:
500+
case SYM_INT32X: type = 0; sign = 0; bits = 32; bp++; goto size_spec;
501+
case SYM_U32X:
502+
case SYM_UINT32X: type = 0; sign = 1; bits = 32; bp++; goto size_spec;
503+
case SYM_I64X:
504+
case SYM_INT64X: type = 0; sign = 0; bits = 64; bp++; goto size_spec;
505+
case SYM_U64X:
506+
case SYM_UINT64X: type = 0; sign = 1; bits = 64; bp++; goto size_spec;
507+
case SYM_F32X:
508+
case SYM_FLOATX: type = 1; sign = 0; bits = 32; bp++; goto size_spec;
509+
case SYM_F64X:
510+
case SYM_DOUBLEX: type = 1; sign = 0; bits = 64; bp++; goto size_spec;
500511

501512
case SYM_UNSIGNED: sign = 1; bp++; break;
502513
case SYM_SIGNED: sign = 0; bp++; break;

src/tests/units/codecs-test.r3

+1-1
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ if find codecs 'wav [
150150
bin: none
151151

152152
--test-- "Encode WAV"
153-
samples: #[si16! [0 -1000 -2000 -1000 0 1000 2000 1000 0]]
153+
samples: #[i16! [0 -1000 -2000 -1000 0 1000 2000 1000 0]]
154154
--assert binary? bin: encode 'wav :samples
155155
--assert object? snd: decode 'wav :bin
156156
--assert 'wave = snd/type

src/tests/units/make-test.r3

+1-1
Original file line numberDiff line numberDiff line change
@@ -347,7 +347,7 @@ Rebol [
347347
--assert error? try [make block! quote #FF ] ; issue!
348348
--assert error? try [make block! quote #[bitset! #{FF}] ] ; bitset!
349349
--assert error? try [make block! quote #[image! 1x1 #{FFFFFF}] ] ; image!
350-
--assert [0 0] = try [make block! quote #[ui32! 2 [0 0]] ] ; vector!
350+
--assert [0 0] = try [make block! quote #[u32! 2 [0 0]] ] ; vector!
351351
--assert [a: 1] = try [make block! quote #[object! [a: 1]] ] ; object!
352352
--assert error? try [make block! #[typeset! [#[datatype! integer!] #[datatype! percent!]]] ] ; typeset!
353353

src/tests/units/series-test.r3

+1-1
Original file line numberDiff line numberDiff line change
@@ -1002,7 +1002,7 @@ Rebol [
10021002

10031003
;@@ https://github.com/Oldes/Rebol-issues/issues/806
10041004
--assert #{0303} = remove-each v #{03010203} [v < 3]
1005-
--assert [3 3] = to block! remove-each v #[ui16! [3 1 2 3]] [v < 3]
1005+
--assert [3 3] = to block! remove-each v #[u16! [3 1 2 3]] [v < 3]
10061006

10071007
--test-- "remove-each/count result"
10081008
b: [a 1 b 2]

0 commit comments

Comments
 (0)