Skip to content

Commit 77b3ebf

Browse files
authored
Merge pull request #1736 from silx-kit/merge-int-types
Merge signed and unsigned integer types
2 parents 3a95df8 + 8991998 commit 77b3ebf

File tree

17 files changed

+187
-126
lines changed

17 files changed

+187
-126
lines changed

packages/app/src/metadata-viewer/utils.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import {
22
isH5WebComplex,
3+
isIntegerType,
34
isNumericType,
45
isScalarShape,
56
} from '@h5web/shared/guards';
@@ -29,7 +30,15 @@ export function renderShape(shape: Shape): string {
2930
export function renderType(type: DType): string {
3031
if (isNumericType(type)) {
3132
const { endianness, size } = type;
32-
return `${type.class}, ${size}-bit${endianness ? `, ${endianness}` : ''}`;
33+
34+
const endiannessStr = endianness ? `, ${endianness}` : '';
35+
const signStr = isIntegerType(type)
36+
? type.signed
37+
? ' (signed)'
38+
: ' (unsigned)'
39+
: '';
40+
41+
return `${type.class}${signStr}, ${size}-bit${endiannessStr}`;
3342
}
3443

3544
if (type.class === DTypeClass.String) {

packages/app/src/providers/h5grove/__snapshots__/h5grove-api.test.ts.snap

Lines changed: 45 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ exports[`test file matches snapshot 1`] = `
1515
"type": {
1616
"class": "Integer",
1717
"endianness": "little-endian",
18+
"signed": true,
1819
"size": 8,
1920
},
2021
"value": -128,
@@ -35,6 +36,7 @@ exports[`test file matches snapshot 1`] = `
3536
"type": {
3637
"class": "Integer",
3738
"endianness": "little-endian",
39+
"signed": true,
3840
"size": 8,
3941
},
4042
"value": Int8Array [
@@ -59,6 +61,7 @@ exports[`test file matches snapshot 1`] = `
5961
"type": {
6062
"class": "Integer",
6163
"endianness": "little-endian",
64+
"signed": true,
6265
"size": 16,
6366
},
6467
"value": -32768,
@@ -79,6 +82,7 @@ exports[`test file matches snapshot 1`] = `
7982
"type": {
8083
"class": "Integer",
8184
"endianness": "little-endian",
85+
"signed": true,
8286
"size": 16,
8387
},
8488
"value": Int16Array [
@@ -103,6 +107,7 @@ exports[`test file matches snapshot 1`] = `
103107
"type": {
104108
"class": "Integer",
105109
"endianness": "little-endian",
110+
"signed": true,
106111
"size": 32,
107112
},
108113
"value": -2147483648,
@@ -120,6 +125,7 @@ exports[`test file matches snapshot 1`] = `
120125
"type": {
121126
"class": "Integer",
122127
"endianness": "big-endian",
128+
"signed": true,
123129
"size": 32,
124130
},
125131
"value": 0,
@@ -140,6 +146,7 @@ exports[`test file matches snapshot 1`] = `
140146
"type": {
141147
"class": "Integer",
142148
"endianness": "little-endian",
149+
"signed": true,
143150
"size": 32,
144151
},
145152
"value": Int32Array [
@@ -164,6 +171,7 @@ exports[`test file matches snapshot 1`] = `
164171
"type": {
165172
"class": "Integer",
166173
"endianness": "little-endian",
174+
"signed": true,
167175
"size": 64,
168176
},
169177
"value": -9223372036854776000,
@@ -184,6 +192,7 @@ exports[`test file matches snapshot 1`] = `
184192
"type": {
185193
"class": "Integer",
186194
"endianness": "little-endian",
195+
"signed": true,
187196
"size": 64,
188197
},
189198
"value": [
@@ -206,8 +215,9 @@ exports[`test file matches snapshot 1`] = `
206215
},
207216
"shape": [],
208217
"type": {
209-
"class": "Integer (unsigned)",
218+
"class": "Integer",
210219
"endianness": "little-endian",
220+
"signed": false,
211221
"size": 8,
212222
},
213223
"value": 255,
@@ -226,8 +236,9 @@ exports[`test file matches snapshot 1`] = `
226236
3,
227237
],
228238
"type": {
229-
"class": "Integer (unsigned)",
239+
"class": "Integer",
230240
"endianness": "little-endian",
241+
"signed": false,
231242
"size": 8,
232243
},
233244
"value": Uint8Array [
@@ -250,8 +261,9 @@ exports[`test file matches snapshot 1`] = `
250261
},
251262
"shape": [],
252263
"type": {
253-
"class": "Integer (unsigned)",
264+
"class": "Integer",
254265
"endianness": "little-endian",
266+
"signed": false,
255267
"size": 16,
256268
},
257269
"value": 65535,
@@ -270,8 +282,9 @@ exports[`test file matches snapshot 1`] = `
270282
3,
271283
],
272284
"type": {
273-
"class": "Integer (unsigned)",
285+
"class": "Integer",
274286
"endianness": "little-endian",
287+
"signed": false,
275288
"size": 16,
276289
},
277290
"value": Uint16Array [
@@ -294,8 +307,9 @@ exports[`test file matches snapshot 1`] = `
294307
},
295308
"shape": [],
296309
"type": {
297-
"class": "Integer (unsigned)",
310+
"class": "Integer",
298311
"endianness": "little-endian",
312+
"signed": false,
299313
"size": 32,
300314
},
301315
"value": 4294967295,
@@ -314,8 +328,9 @@ exports[`test file matches snapshot 1`] = `
314328
3,
315329
],
316330
"type": {
317-
"class": "Integer (unsigned)",
331+
"class": "Integer",
318332
"endianness": "little-endian",
333+
"signed": false,
319334
"size": 32,
320335
},
321336
"value": Uint32Array [
@@ -338,8 +353,9 @@ exports[`test file matches snapshot 1`] = `
338353
},
339354
"shape": [],
340355
"type": {
341-
"class": "Integer (unsigned)",
356+
"class": "Integer",
342357
"endianness": "little-endian",
358+
"signed": false,
343359
"size": 64,
344360
},
345361
"value": 18446744073709552000,
@@ -359,8 +375,9 @@ exports[`test file matches snapshot 1`] = `
359375
2,
360376
],
361377
"type": {
362-
"class": "Integer (unsigned)",
378+
"class": "Integer",
363379
"endianness": "little-endian",
380+
"signed": false,
364381
"size": 64,
365382
},
366383
"value": [
@@ -1255,6 +1272,7 @@ exports[`test file matches snapshot 1`] = `
12551272
"bigint": {
12561273
"class": "Integer",
12571274
"endianness": "little-endian",
1275+
"signed": true,
12581276
"size": 64,
12591277
},
12601278
"double": {
@@ -1318,6 +1336,7 @@ exports[`test file matches snapshot 1`] = `
13181336
"bigint": {
13191337
"class": "Integer",
13201338
"endianness": "little-endian",
1339+
"signed": true,
13211340
"size": 64,
13221341
},
13231342
"double": {
@@ -1428,12 +1447,14 @@ exports[`test file matches snapshot 1`] = `
14281447
"bigint": {
14291448
"class": "Integer",
14301449
"endianness": "little-endian",
1450+
"signed": true,
14311451
"size": 64,
14321452
},
14331453
"bool": {
14341454
"base": {
14351455
"class": "Integer",
14361456
"endianness": "little-endian",
1457+
"signed": true,
14371458
"size": 8,
14381459
},
14391460
"class": "Boolean",
@@ -1523,8 +1544,9 @@ exports[`test file matches snapshot 1`] = `
15231544
},
15241545
"vlen": {
15251546
"base": {
1526-
"class": "Integer (unsigned)",
1547+
"class": "Integer",
15271548
"endianness": "little-endian",
1549+
"signed": false,
15281550
"size": 64,
15291551
},
15301552
"class": "Array (variable length)",
@@ -1611,8 +1633,9 @@ exports[`test file matches snapshot 1`] = `
16111633
"shape": null,
16121634
"type": {
16131635
"base": {
1614-
"class": "Integer (unsigned)",
1636+
"class": "Integer",
16151637
"endianness": "little-endian",
1638+
"signed": false,
16161639
"size": 8,
16171640
},
16181641
"class": "Boolean",
@@ -1642,6 +1665,7 @@ exports[`test file matches snapshot 1`] = `
16421665
"base": {
16431666
"class": "Integer",
16441667
"endianness": "little-endian",
1668+
"signed": true,
16451669
"size": 8,
16461670
},
16471671
"class": "Boolean",
@@ -1671,6 +1695,7 @@ exports[`test file matches snapshot 1`] = `
16711695
"base": {
16721696
"class": "Integer",
16731697
"endianness": "little-endian",
1698+
"signed": true,
16741699
"size": 8,
16751700
},
16761701
"class": "Boolean",
@@ -1703,6 +1728,7 @@ exports[`test file matches snapshot 1`] = `
17031728
"base": {
17041729
"class": "Integer",
17051730
"endianness": "little-endian",
1731+
"signed": true,
17061732
"size": 8,
17071733
},
17081734
"class": "Boolean",
@@ -1739,8 +1765,9 @@ exports[`test file matches snapshot 1`] = `
17391765
"shape": [],
17401766
"type": {
17411767
"base": {
1742-
"class": "Integer (unsigned)",
1768+
"class": "Integer",
17431769
"endianness": "little-endian",
1770+
"signed": false,
17441771
"size": 8,
17451772
},
17461773
"class": "Enumeration",
@@ -1774,6 +1801,7 @@ exports[`test file matches snapshot 1`] = `
17741801
"base": {
17751802
"class": "Integer",
17761803
"endianness": "little-endian",
1804+
"signed": true,
17771805
"size": 32,
17781806
},
17791807
"class": "Enumeration",
@@ -1808,8 +1836,9 @@ exports[`test file matches snapshot 1`] = `
18081836
],
18091837
"type": {
18101838
"base": {
1811-
"class": "Integer (unsigned)",
1839+
"class": "Integer",
18121840
"endianness": "little-endian",
1841+
"signed": false,
18131842
"size": 8,
18141843
},
18151844
"class": "Enumeration",
@@ -1857,8 +1886,9 @@ exports[`test file matches snapshot 1`] = `
18571886
],
18581887
"type": {
18591888
"base": {
1860-
"class": "Integer (unsigned)",
1889+
"class": "Integer",
18611890
"endianness": "little-endian",
1891+
"signed": false,
18621892
"size": 8,
18631893
},
18641894
"class": "Enumeration",
@@ -1910,6 +1940,7 @@ exports[`test file matches snapshot 1`] = `
19101940
"base": {
19111941
"class": "Integer",
19121942
"endianness": "little-endian",
1943+
"signed": true,
19131944
"size": 8,
19141945
},
19151946
"class": "Array (variable length)",
@@ -1971,6 +2002,7 @@ exports[`test file matches snapshot 1`] = `
19712002
"base": {
19722003
"class": "Integer",
19732004
"endianness": "little-endian",
2005+
"signed": true,
19742006
"size": 64,
19752007
},
19762008
"class": "Array (variable length)",

packages/app/src/providers/h5grove/utils.test.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ import {
1212
referenceType,
1313
strType,
1414
timeType,
15-
uintType,
1615
unknownType,
1716
} from '@h5web/shared/hdf5-utils';
1817
import { describe, expect, it } from 'vitest';
@@ -23,10 +22,10 @@ import { parseDType } from './utils';
2322
describe('parseDType', () => {
2423
it('should convert integer types', () => {
2524
expect(parseDType({ class: 0, size: 1, order: 0, sign: 1 })).toStrictEqual(
26-
intType(8, H5T_ORDER.LE),
25+
intType(true, 8, H5T_ORDER.LE),
2726
);
2827
expect(parseDType({ class: 0, size: 8, order: 1, sign: 0 })).toStrictEqual(
29-
uintType(64, H5T_ORDER.BE),
28+
intType(false, 64, H5T_ORDER.BE),
3029
);
3130
});
3231

@@ -83,7 +82,7 @@ describe('parseDType', () => {
8382
base: { class: 0, size: 4, order: 0, sign: 0 },
8483
members: { FOO: 41, BAR: 42 },
8584
}),
86-
).toStrictEqual(enumType(uintType(), { FOO: 41, BAR: 42 }));
85+
).toStrictEqual(enumType(intType(false), { FOO: 41, BAR: 42 }));
8786

8887
expect(
8988
parseDType({
@@ -92,7 +91,7 @@ describe('parseDType', () => {
9291
base: { class: 0, size: 1, order: 0, sign: 1 },
9392
members: { FALSE: 0, TRUE: 1 },
9493
}),
95-
).toStrictEqual(boolType(intType(8)));
94+
).toStrictEqual(boolType(intType(true, 8)));
9695
});
9796

9897
it('should convert array types', () => {

packages/app/src/providers/h5grove/utils.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { isNumericType } from '@h5web/shared/guards';
2-
import { H5T_CLASS } from '@h5web/shared/h5t';
2+
import { H5T_CLASS, H5T_SIGN } from '@h5web/shared/h5t';
33
import {
44
type Attribute,
55
type ChildEntity,
@@ -16,7 +16,7 @@ import {
1616
compoundOrCplxType,
1717
enumOrBoolType,
1818
floatType,
19-
intOrUintType,
19+
intType,
2020
opaqueType,
2121
referenceType,
2222
strType,
@@ -162,7 +162,7 @@ export function parseDType(type: H5GroveType): DType {
162162
const { class: h5tClass, size } = type;
163163

164164
if (h5tClass === H5T_CLASS.INTEGER) {
165-
return intOrUintType(type.sign, size * 8, type.order);
165+
return intType(type.sign === H5T_SIGN.SIGN_2, size * 8, type.order);
166166
}
167167

168168
if (h5tClass === H5T_CLASS.FLOAT) {

0 commit comments

Comments
 (0)