ndtypes 0.2.0dev5 → 0.2.0dev6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CONTRIBUTING.md +12 -0
- data/Rakefile +8 -0
- data/ext/ruby_ndtypes/GPATH +0 -0
- data/ext/ruby_ndtypes/GRTAGS +0 -0
- data/ext/ruby_ndtypes/GTAGS +0 -0
- data/ext/ruby_ndtypes/extconf.rb +1 -1
- data/ext/ruby_ndtypes/include/ndtypes.h +231 -122
- data/ext/ruby_ndtypes/include/ruby_ndtypes.h +1 -1
- data/ext/ruby_ndtypes/lib/libndtypes.a +0 -0
- data/ext/ruby_ndtypes/lib/libndtypes.so.0.2.0dev3 +0 -0
- data/ext/ruby_ndtypes/ndtypes/Makefile +87 -0
- data/ext/ruby_ndtypes/ndtypes/config.h +68 -0
- data/ext/ruby_ndtypes/ndtypes/config.log +477 -0
- data/ext/ruby_ndtypes/ndtypes/config.status +1027 -0
- data/ext/ruby_ndtypes/ndtypes/doc/_static/style.css +7 -0
- data/ext/ruby_ndtypes/ndtypes/doc/_templates/layout.html +2 -0
- data/ext/ruby_ndtypes/ndtypes/doc/conf.py +40 -4
- data/ext/ruby_ndtypes/ndtypes/doc/images/xndlogo.png +0 -0
- data/ext/ruby_ndtypes/ndtypes/doc/ndtypes/types.rst +1 -1
- data/ext/ruby_ndtypes/ndtypes/doc/requirements.txt +2 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/Makefile +287 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/Makefile.in +20 -4
- data/ext/ruby_ndtypes/ndtypes/libndtypes/Makefile.vc +22 -3
- data/ext/ruby_ndtypes/ndtypes/libndtypes/alloc.c +1 -1
- data/ext/ruby_ndtypes/ndtypes/libndtypes/alloc.o +0 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/attr.o +0 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/compat/Makefile +73 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/compat/bpgrammar.c +246 -229
- data/ext/ruby_ndtypes/ndtypes/libndtypes/compat/bpgrammar.h +15 -11
- data/ext/ruby_ndtypes/ndtypes/libndtypes/compat/bpgrammar.o +0 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/compat/bpgrammar.y +38 -28
- data/ext/ruby_ndtypes/ndtypes/libndtypes/compat/bplexer.c +91 -91
- data/ext/ruby_ndtypes/ndtypes/libndtypes/compat/bplexer.h +1 -1
- data/ext/ruby_ndtypes/ndtypes/libndtypes/compat/bplexer.l +4 -3
- data/ext/ruby_ndtypes/ndtypes/libndtypes/compat/bplexer.o +0 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/compat/export.c +8 -7
- data/ext/ruby_ndtypes/ndtypes/libndtypes/compat/export.o +0 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/compat/import.c +2 -2
- data/ext/ruby_ndtypes/ndtypes/libndtypes/compat/import.o +0 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/context.o +0 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/copy.c +263 -182
- data/ext/ruby_ndtypes/ndtypes/libndtypes/copy.o +0 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/encodings.o +0 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/equal.c +67 -7
- data/ext/ruby_ndtypes/ndtypes/libndtypes/equal.o +0 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/grammar.c +1112 -1000
- data/ext/ruby_ndtypes/ndtypes/libndtypes/grammar.h +69 -58
- data/ext/ruby_ndtypes/ndtypes/libndtypes/grammar.o +0 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/grammar.y +150 -99
- data/ext/ruby_ndtypes/ndtypes/libndtypes/io.c +185 -15
- data/ext/ruby_ndtypes/ndtypes/libndtypes/io.o +0 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/lexer.c +301 -276
- data/ext/ruby_ndtypes/ndtypes/libndtypes/lexer.h +1 -1
- data/ext/ruby_ndtypes/ndtypes/libndtypes/lexer.l +9 -4
- data/ext/ruby_ndtypes/ndtypes/libndtypes/lexer.o +0 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/libndtypes.a +0 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/libndtypes.so +1 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/libndtypes.so.0 +1 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/libndtypes.so.0.2.0dev3 +0 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/match.c +729 -228
- data/ext/ruby_ndtypes/ndtypes/libndtypes/match.o +0 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/ndtypes.c +768 -403
- data/ext/ruby_ndtypes/ndtypes/libndtypes/ndtypes.h +1002 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/ndtypes.h.in +231 -122
- data/ext/ruby_ndtypes/ndtypes/libndtypes/ndtypes.o +0 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/parsefuncs.c +176 -84
- data/ext/ruby_ndtypes/ndtypes/libndtypes/parsefuncs.h +26 -14
- data/ext/ruby_ndtypes/ndtypes/libndtypes/parsefuncs.o +0 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/parser.c +57 -35
- data/ext/ruby_ndtypes/ndtypes/libndtypes/parser.o +0 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/primitive.c +420 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/primitive.o +0 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/seq.c +8 -8
- data/ext/ruby_ndtypes/ndtypes/libndtypes/seq.h +1 -1
- data/ext/ruby_ndtypes/ndtypes/libndtypes/seq.o +0 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/serialize/Makefile +48 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/serialize/deserialize.c +200 -116
- data/ext/ruby_ndtypes/ndtypes/libndtypes/serialize/deserialize.o +0 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/serialize/serialize.c +46 -4
- data/ext/ruby_ndtypes/ndtypes/libndtypes/serialize/serialize.o +0 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/substitute.c +58 -27
- data/ext/ruby_ndtypes/ndtypes/libndtypes/substitute.h +1 -1
- data/ext/ruby_ndtypes/ndtypes/libndtypes/substitute.o +0 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/symtable.c +3 -5
- data/ext/ruby_ndtypes/ndtypes/libndtypes/symtable.h +12 -4
- data/ext/ruby_ndtypes/ndtypes/libndtypes/symtable.o +0 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/tests/Makefile +55 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/tests/Makefile.in +8 -8
- data/ext/ruby_ndtypes/ndtypes/libndtypes/tests/Makefile.vc +5 -5
- data/ext/ruby_ndtypes/ndtypes/libndtypes/tests/runtest.c +274 -172
- data/ext/ruby_ndtypes/ndtypes/libndtypes/tests/test.h +24 -4
- data/ext/ruby_ndtypes/ndtypes/libndtypes/tests/test_array.c +2 -2
- data/ext/ruby_ndtypes/ndtypes/libndtypes/tests/test_buffer.c +14 -14
- data/ext/ruby_ndtypes/ndtypes/libndtypes/tests/test_match.c +32 -30
- data/ext/ruby_ndtypes/ndtypes/libndtypes/tests/test_parse.c +37 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/tests/test_parse_error.c +36 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/tests/test_parse_roundtrip.c +16 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/tests/test_record.c +5 -5
- data/ext/ruby_ndtypes/ndtypes/libndtypes/tests/test_typecheck.c +706 -253
- data/ext/ruby_ndtypes/ndtypes/libndtypes/tests/test_unify.c +132 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/unify.c +703 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/unify.o +0 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/util.c +335 -127
- data/ext/ruby_ndtypes/ndtypes/libndtypes/util.o +0 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/values.c +2 -2
- data/ext/ruby_ndtypes/ndtypes/libndtypes/values.o +0 -0
- data/ext/ruby_ndtypes/ndtypes/python/ndt_randtype.py +88 -71
- data/ext/ruby_ndtypes/ndtypes/python/ndt_support.py +0 -1
- data/ext/ruby_ndtypes/ndtypes/python/ndtypes/__init__.py +10 -13
- data/ext/ruby_ndtypes/ndtypes/python/ndtypes/_ndtypes.c +395 -314
- data/ext/ruby_ndtypes/ndtypes/python/ndtypes/libndtypes.a +0 -0
- data/ext/ruby_ndtypes/ndtypes/python/ndtypes/libndtypes.so +1 -0
- data/ext/ruby_ndtypes/ndtypes/python/ndtypes/libndtypes.so.0 +1 -0
- data/ext/ruby_ndtypes/ndtypes/python/ndtypes/libndtypes.so.0.2.0dev3 +0 -0
- data/ext/ruby_ndtypes/ndtypes/python/ndtypes/ndtypes.h +1002 -0
- data/ext/ruby_ndtypes/ndtypes/python/ndtypes/pyndtypes.h +15 -33
- data/ext/ruby_ndtypes/ndtypes/python/test_ndtypes.py +340 -132
- data/ext/ruby_ndtypes/ndtypes/setup.py +11 -2
- data/ext/ruby_ndtypes/ruby_ndtypes.c +364 -241
- data/ext/ruby_ndtypes/ruby_ndtypes.h +1 -1
- data/ext/ruby_ndtypes/ruby_ndtypes_internal.h +0 -1
- data/lib/ndtypes.rb +11 -0
- data/lib/ndtypes/version.rb +2 -2
- data/lib/ruby_ndtypes.so +0 -0
- data/ndtypes.gemspec +3 -0
- data/spec/ndtypes_spec.rb +6 -0
- metadata +98 -4
- data/ext/ruby_ndtypes/gc_guard.c +0 -36
- data/ext/ruby_ndtypes/gc_guard.h +0 -12
Binary file
|
@@ -178,22 +178,23 @@ ndt_type_seq_t *
|
|
178
178
|
ndt_type_seq_new(ndt_t *elt, ndt_context_t *ctx)
|
179
179
|
{
|
180
180
|
ndt_type_seq_t *seq;
|
181
|
-
ndt_t **ptr;
|
181
|
+
const ndt_t **ptr;
|
182
182
|
|
183
183
|
seq = ndt_alloc_size(sizeof *seq);
|
184
184
|
if (seq == NULL) {
|
185
|
-
|
185
|
+
ndt_decref(elt);
|
186
186
|
return ndt_memory_error(ctx);
|
187
187
|
}
|
188
188
|
|
189
189
|
ptr = ndt_alloc_size(2 * (sizeof *ptr));
|
190
190
|
if (ptr == NULL) {
|
191
191
|
ndt_free(seq);
|
192
|
-
|
192
|
+
ndt_decref(elt);
|
193
193
|
return ndt_memory_error(ctx);
|
194
194
|
}
|
195
195
|
|
196
196
|
ptr[0] = elt;
|
197
|
+
|
197
198
|
seq->len = 1;
|
198
199
|
seq->reserved = 2;
|
199
200
|
seq->ptr = ptr;
|
@@ -213,9 +214,9 @@ ndt_type_seq_del(ndt_type_seq_t *seq)
|
|
213
214
|
static int
|
214
215
|
ndt_type_seq_grow(ndt_type_seq_t *seq, ndt_context_t *ctx)
|
215
216
|
{
|
216
|
-
ndt_t **ptr;
|
217
|
+
const ndt_t **ptr;
|
217
218
|
|
218
|
-
ptr = ndt_realloc(seq->ptr, seq->reserved, 2 * (sizeof *ptr));
|
219
|
+
ptr = ndt_realloc((void *)seq->ptr, seq->reserved, 2 * (sizeof *ptr));
|
219
220
|
if (ptr == NULL) {
|
220
221
|
ndt_err_format(ctx, NDT_MemoryError, "out of memory");
|
221
222
|
return -1;
|
@@ -235,7 +236,6 @@ ndt_type_seq_append(ndt_type_seq_t *seq, ndt_t *elt, ndt_context_t *ctx)
|
|
235
236
|
if (seq->len == seq->reserved) {
|
236
237
|
if (ndt_type_seq_grow(seq, ctx) < 0) {
|
237
238
|
ndt_type_seq_del(seq);
|
238
|
-
ndt_free(elt);
|
239
239
|
return NULL;
|
240
240
|
}
|
241
241
|
}
|
@@ -249,7 +249,7 @@ ndt_type_seq_append(ndt_type_seq_t *seq, ndt_t *elt, ndt_context_t *ctx)
|
|
249
249
|
ndt_type_seq_t *
|
250
250
|
ndt_type_seq_finalize(ndt_type_seq_t *seq)
|
251
251
|
{
|
252
|
-
ndt_t **ptr;
|
252
|
+
const ndt_t **ptr;
|
253
253
|
|
254
254
|
if (seq == NULL) {
|
255
255
|
return NULL;
|
@@ -257,7 +257,7 @@ ndt_type_seq_finalize(ndt_type_seq_t *seq)
|
|
257
257
|
|
258
258
|
assert(seq->len <= seq->reserved);
|
259
259
|
|
260
|
-
ptr = ndt_realloc(seq->ptr, seq->len, sizeof *ptr);
|
260
|
+
ptr = ndt_realloc((void *)seq->ptr, seq->len, sizeof *ptr);
|
261
261
|
if (ptr == NULL) {
|
262
262
|
return seq; /* seq is still valid */
|
263
263
|
}
|
Binary file
|
@@ -0,0 +1,48 @@
|
|
1
|
+
|
2
|
+
CC = gcc
|
3
|
+
LD = gcc
|
4
|
+
|
5
|
+
CONFIGURE_CFLAGS = -I.. -Wall -Wextra -std=c11 -pedantic -O2 -g
|
6
|
+
NDT_CFLAGS = $(strip $(CONFIGURE_CFLAGS) $(CFLAGS))
|
7
|
+
NDT_CFLAGS_SHARED = $(NDT_CFLAGS) -fPIC
|
8
|
+
|
9
|
+
CONFIGURE_COV_CFLAGS = -I.. -Wall -Wextra -std=c11 -pedantic -O0 -g -fno-inline -fprofile-arcs -ftest-coverage
|
10
|
+
ifeq ($(MAKECMDGOALS), coverage)
|
11
|
+
NDT_CFLAGS = $(strip $(CONFIGURE_COV_CFLAGS) $(CFLAGS))
|
12
|
+
endif
|
13
|
+
|
14
|
+
|
15
|
+
OBJS = serialize.o deserialize.o
|
16
|
+
SHARED_OBJS = .objs/serialize.o .objs/deserialize.o
|
17
|
+
|
18
|
+
|
19
|
+
default: $(OBJS) $(SHARED_OBJS)
|
20
|
+
|
21
|
+
|
22
|
+
serialize.o:\
|
23
|
+
Makefile serialize.c ../ndtypes.h
|
24
|
+
$(CC) $(NDT_CFLAGS) -c serialize.c
|
25
|
+
|
26
|
+
.objs/serialize.o:\
|
27
|
+
Makefile serialize.c ../ndtypes.h
|
28
|
+
$(CC) $(NDT_CFLAGS_SHARED) -c serialize.c -o .objs/serialize.o
|
29
|
+
|
30
|
+
deserialize.o:\
|
31
|
+
Makefile deserialize.c ../ndtypes.h
|
32
|
+
$(CC) $(NDT_CFLAGS) -c deserialize.c
|
33
|
+
|
34
|
+
.objs/deserialize.o:\
|
35
|
+
Makefile deserialize.c ../ndtypes.h
|
36
|
+
$(CC) $(NDT_CFLAGS_SHARED) -c deserialize.c -o .objs/deserialize.o
|
37
|
+
|
38
|
+
|
39
|
+
FORCE:
|
40
|
+
|
41
|
+
clean: FORCE
|
42
|
+
rm -f *.o *.so *.gch *.gcda *.gcno *.gcov *.dyn *.dpi *.lock
|
43
|
+
cd .objs && rm -f *.o *.so *.gch *.gcda *.gcno *.gcov *.dyn *.dpi *.lock
|
44
|
+
|
45
|
+
distclean: clean
|
46
|
+
rm -f Makefile
|
47
|
+
|
48
|
+
|
@@ -40,8 +40,8 @@
|
|
40
40
|
#include "overflow.h"
|
41
41
|
|
42
42
|
|
43
|
-
static ndt_t *read_type(
|
44
|
-
|
43
|
+
static const ndt_t *read_type(const char * const ptr, int64_t offset,
|
44
|
+
const int64_t len, ndt_context_t *ctx);
|
45
45
|
|
46
46
|
|
47
47
|
|
@@ -247,7 +247,7 @@ copy_common(ndt_t *t, const common_t *f)
|
|
247
247
|
static ndt_t *
|
248
248
|
new_copy_common(const common_t *f, ndt_context_t *ctx)
|
249
249
|
{
|
250
|
-
ndt_t *t = ndt_new(f->tag, ctx);
|
250
|
+
ndt_t *t = ndt_new(f->tag, f->flags, ctx);
|
251
251
|
if (t == NULL) {
|
252
252
|
return NULL;
|
253
253
|
}
|
@@ -350,12 +350,12 @@ read_common_fields(common_t *fields, const char * const ptr,
|
|
350
350
|
return read_uint16(&fields->align, ptr, offset, len, ctx);
|
351
351
|
}
|
352
352
|
|
353
|
-
static ndt_t *
|
354
|
-
read_module(
|
355
|
-
|
353
|
+
static const ndt_t *
|
354
|
+
read_module(const common_t *fields, const char * const ptr, int64_t offset,
|
355
|
+
const int64_t len, ndt_context_t *ctx)
|
356
356
|
{
|
357
357
|
char *name;
|
358
|
-
ndt_t *type;
|
358
|
+
const ndt_t *type;
|
359
359
|
ndt_t *t;
|
360
360
|
|
361
361
|
offset = read_string(&name, ptr, offset, len, ctx);
|
@@ -363,7 +363,7 @@ read_module(ndt_meta_t *m, const common_t *fields, const char * const ptr,
|
|
363
363
|
return NULL;
|
364
364
|
}
|
365
365
|
|
366
|
-
type = read_type(
|
366
|
+
type = read_type(ptr, offset, len, ctx);
|
367
367
|
if (type == NULL) {
|
368
368
|
ndt_free(name);
|
369
369
|
return NULL;
|
@@ -371,7 +371,7 @@ read_module(ndt_meta_t *m, const common_t *fields, const char * const ptr,
|
|
371
371
|
|
372
372
|
t = new_copy_common(fields, ctx);
|
373
373
|
if (t == NULL) {
|
374
|
-
|
374
|
+
ndt_decref(type);
|
375
375
|
ndt_free(name);
|
376
376
|
return NULL;
|
377
377
|
}
|
@@ -381,9 +381,9 @@ read_module(ndt_meta_t *m, const common_t *fields, const char * const ptr,
|
|
381
381
|
return t;
|
382
382
|
}
|
383
383
|
|
384
|
-
static ndt_t *
|
385
|
-
read_function(
|
386
|
-
|
384
|
+
static const ndt_t *
|
385
|
+
read_function(common_t *fields, const char * const ptr, int64_t offset,
|
386
|
+
const int64_t len, ndt_context_t *ctx)
|
387
387
|
{
|
388
388
|
int64_t metaoffset;
|
389
389
|
int64_t nin;
|
@@ -412,9 +412,9 @@ read_function(ndt_meta_t *m, common_t *fields, const char * const ptr,
|
|
412
412
|
metaoffset = next_metaoffset(&offset, ptr, metaoffset, len, ctx);
|
413
413
|
if (metaoffset < 0) return NULL;
|
414
414
|
|
415
|
-
t->Function.types[i] = read_type(
|
415
|
+
t->Function.types[i] = read_type(ptr, offset, len, ctx);
|
416
416
|
if (t->Function.types[i] == NULL) {
|
417
|
-
|
417
|
+
ndt_decref(t);
|
418
418
|
return NULL;
|
419
419
|
}
|
420
420
|
}
|
@@ -425,15 +425,15 @@ read_function(ndt_meta_t *m, common_t *fields, const char * const ptr,
|
|
425
425
|
return t;
|
426
426
|
}
|
427
427
|
|
428
|
-
static ndt_t *
|
429
|
-
read_fixed_dim(
|
430
|
-
|
428
|
+
static const ndt_t *
|
429
|
+
read_fixed_dim(const common_t *fields, const char * const ptr, int64_t offset,
|
430
|
+
const int64_t len, ndt_context_t *ctx)
|
431
431
|
{
|
432
432
|
ndt_contig tag;
|
433
433
|
int64_t shape;
|
434
434
|
int64_t step;
|
435
435
|
int64_t itemsize;
|
436
|
-
ndt_t *type;
|
436
|
+
const ndt_t *type;
|
437
437
|
ndt_t *t;
|
438
438
|
|
439
439
|
offset = ndt_contig_from_uint8(&tag, ptr, offset, len, ctx);
|
@@ -448,14 +448,14 @@ read_fixed_dim(ndt_meta_t *m, const common_t *fields, const char * const ptr,
|
|
448
448
|
offset = read_pos_int64(&itemsize, ptr, offset, len, ctx);
|
449
449
|
if (offset < 0) return NULL;
|
450
450
|
|
451
|
-
type = read_type(
|
451
|
+
type = read_type(ptr, offset, len, ctx);
|
452
452
|
if (type == NULL) {
|
453
453
|
return NULL;
|
454
454
|
}
|
455
455
|
|
456
456
|
t = new_copy_common(fields, ctx);
|
457
457
|
if (t == NULL) {
|
458
|
-
|
458
|
+
ndt_decref(type);
|
459
459
|
return NULL;
|
460
460
|
}
|
461
461
|
t->FixedDim.tag = tag;
|
@@ -467,13 +467,13 @@ read_fixed_dim(ndt_meta_t *m, const common_t *fields, const char * const ptr,
|
|
467
467
|
return t;
|
468
468
|
}
|
469
469
|
|
470
|
-
static ndt_t *
|
471
|
-
read_symbolic_dim(
|
472
|
-
|
470
|
+
static const ndt_t *
|
471
|
+
read_symbolic_dim(const common_t *fields, const char * const ptr, int64_t offset,
|
472
|
+
const int64_t len, ndt_context_t *ctx)
|
473
473
|
{
|
474
474
|
ndt_contig tag;
|
475
475
|
char *name;
|
476
|
-
ndt_t *type;
|
476
|
+
const ndt_t *type;
|
477
477
|
ndt_t *t;
|
478
478
|
|
479
479
|
offset = ndt_contig_from_uint8(&tag, ptr, offset, len, ctx);
|
@@ -486,7 +486,7 @@ read_symbolic_dim(ndt_meta_t *m, const common_t *fields, const char * const ptr,
|
|
486
486
|
return NULL;
|
487
487
|
}
|
488
488
|
|
489
|
-
type = read_type(
|
489
|
+
type = read_type(ptr, offset, len, ctx);
|
490
490
|
if (type == NULL) {
|
491
491
|
ndt_free(name);
|
492
492
|
return NULL;
|
@@ -494,7 +494,7 @@ read_symbolic_dim(ndt_meta_t *m, const common_t *fields, const char * const ptr,
|
|
494
494
|
|
495
495
|
t = new_copy_common(fields, ctx);
|
496
496
|
if (t == NULL) {
|
497
|
-
|
497
|
+
ndt_decref(type);
|
498
498
|
ndt_free(name);
|
499
499
|
return NULL;
|
500
500
|
}
|
@@ -505,13 +505,13 @@ read_symbolic_dim(ndt_meta_t *m, const common_t *fields, const char * const ptr,
|
|
505
505
|
return t;
|
506
506
|
}
|
507
507
|
|
508
|
-
static ndt_t *
|
509
|
-
read_ellipsis_dim(
|
510
|
-
|
508
|
+
static const ndt_t *
|
509
|
+
read_ellipsis_dim(const common_t *fields, const char * const ptr, int64_t offset,
|
510
|
+
const int64_t len, ndt_context_t *ctx)
|
511
511
|
{
|
512
512
|
ndt_contig tag;
|
513
513
|
char *name;
|
514
|
-
ndt_t *type;
|
514
|
+
const ndt_t *type;
|
515
515
|
ndt_t *t;
|
516
516
|
|
517
517
|
offset = ndt_contig_from_uint8(&tag, ptr, offset, len, ctx);
|
@@ -528,7 +528,7 @@ read_ellipsis_dim(ndt_meta_t *m, const common_t *fields, const char * const ptr,
|
|
528
528
|
name = NULL;
|
529
529
|
}
|
530
530
|
|
531
|
-
type = read_type(
|
531
|
+
type = read_type(ptr, offset, len, ctx);
|
532
532
|
if (type == NULL) {
|
533
533
|
ndt_free(name);
|
534
534
|
return NULL;
|
@@ -536,7 +536,7 @@ read_ellipsis_dim(ndt_meta_t *m, const common_t *fields, const char * const ptr,
|
|
536
536
|
|
537
537
|
t = new_copy_common(fields, ctx);
|
538
538
|
if (t == NULL) {
|
539
|
-
|
539
|
+
ndt_decref(type);
|
540
540
|
ndt_free(name);
|
541
541
|
return NULL;
|
542
542
|
}
|
@@ -547,16 +547,16 @@ read_ellipsis_dim(ndt_meta_t *m, const common_t *fields, const char * const ptr,
|
|
547
547
|
return t;
|
548
548
|
}
|
549
549
|
|
550
|
-
static ndt_t *
|
551
|
-
read_var_dim(
|
552
|
-
|
550
|
+
static const ndt_t *
|
551
|
+
read_var_dim(const common_t *fields, const char * const ptr, int64_t offset,
|
552
|
+
const int64_t len, ndt_context_t *ctx)
|
553
553
|
{
|
554
554
|
int64_t itemsize;
|
555
555
|
int32_t noffsets;
|
556
|
-
|
556
|
+
ndt_offsets_t *offsets = NULL;
|
557
557
|
int32_t nslices = 0;
|
558
558
|
ndt_slice_t *slices = NULL;
|
559
|
-
ndt_t *type;
|
559
|
+
const ndt_t *type;
|
560
560
|
ndt_t *t;
|
561
561
|
|
562
562
|
offset = read_pos_int64(&itemsize, ptr, offset, len, ctx);
|
@@ -568,26 +568,28 @@ read_var_dim(ndt_meta_t *m, const common_t *fields, const char * const ptr,
|
|
568
568
|
offset = read_pos_int32(&nslices, ptr, offset, len, ctx);
|
569
569
|
if (offset < 0) return NULL;
|
570
570
|
|
571
|
-
|
572
|
-
|
573
|
-
|
574
|
-
|
571
|
+
if (noffsets > 0) {
|
572
|
+
offsets = ndt_offsets_new(noffsets, ctx);
|
573
|
+
if (offsets == NULL) {
|
574
|
+
return NULL;
|
575
|
+
}
|
575
576
|
|
576
|
-
|
577
|
-
|
578
|
-
|
579
|
-
|
577
|
+
offset = read_int32_array((int32_t *)offsets->v, noffsets, ptr, offset, len, ctx);
|
578
|
+
if (offset < 0) {
|
579
|
+
ndt_decref_offsets(offsets);
|
580
|
+
return NULL;
|
581
|
+
}
|
580
582
|
}
|
581
583
|
|
582
584
|
slices = ndt_alloc(nslices, sizeof *slices);
|
583
585
|
if (slices == NULL) {
|
584
|
-
|
586
|
+
ndt_decref_offsets(offsets);
|
585
587
|
return ndt_memory_error(ctx);
|
586
588
|
}
|
587
589
|
|
588
590
|
offset = read_ndt_slice_array(slices, nslices, ptr, offset, len, ctx);
|
589
591
|
if (offset < 0) {
|
590
|
-
|
592
|
+
ndt_decref_offsets(offsets);
|
591
593
|
ndt_free(slices);
|
592
594
|
return NULL;
|
593
595
|
}
|
@@ -597,38 +599,79 @@ read_var_dim(ndt_meta_t *m, const common_t *fields, const char * const ptr,
|
|
597
599
|
slices = NULL;
|
598
600
|
}
|
599
601
|
|
600
|
-
type = read_type(
|
602
|
+
type = read_type(ptr, offset, len, ctx);
|
601
603
|
if (type == NULL) {
|
602
|
-
|
604
|
+
ndt_decref_offsets(offsets);
|
603
605
|
ndt_free(slices);
|
604
606
|
return NULL;
|
605
607
|
}
|
606
608
|
|
607
609
|
t = new_copy_common(fields, ctx);
|
608
610
|
if (t == NULL) {
|
609
|
-
|
611
|
+
ndt_decref_offsets(offsets);
|
610
612
|
ndt_free(slices);
|
611
|
-
|
613
|
+
ndt_decref(type);
|
612
614
|
return NULL;
|
613
615
|
}
|
614
616
|
t->VarDim.type = type;
|
615
|
-
t->Concrete.VarDim.flag = ExternalOffsets;
|
616
617
|
t->Concrete.VarDim.itemsize = itemsize;
|
617
|
-
t->Concrete.VarDim.noffsets = noffsets;
|
618
618
|
t->Concrete.VarDim.offsets = offsets;
|
619
619
|
t->Concrete.VarDim.nslices = nslices;
|
620
620
|
t->Concrete.VarDim.slices = slices;
|
621
621
|
|
622
|
-
|
623
|
-
|
624
|
-
|
622
|
+
return t;
|
623
|
+
}
|
624
|
+
|
625
|
+
static const ndt_t *
|
626
|
+
read_var_dim_elem(const common_t *fields, const char * const ptr, int64_t offset,
|
627
|
+
const int64_t len, ndt_context_t *ctx)
|
628
|
+
{
|
629
|
+
ndt_t *t;
|
630
|
+
int64_t index;
|
631
|
+
|
632
|
+
offset = read_pos_int64(&index, ptr, offset, len, ctx);
|
633
|
+
if (offset < 0) return NULL;
|
634
|
+
|
635
|
+
t = (ndt_t *)read_var_dim(fields, ptr, offset, len, ctx);
|
636
|
+
if (t == NULL) {
|
637
|
+
return NULL;
|
638
|
+
}
|
639
|
+
t->tag = VarDimElem;
|
640
|
+
t->VarDimElem.index = index;
|
641
|
+
|
642
|
+
return t;
|
643
|
+
}
|
644
|
+
|
645
|
+
static const ndt_t *
|
646
|
+
read_array(const common_t *fields, const char * const ptr, int64_t offset,
|
647
|
+
const int64_t len, ndt_context_t *ctx)
|
648
|
+
{
|
649
|
+
const ndt_t *type;
|
650
|
+
ndt_t *t;
|
651
|
+
int64_t itemsize;
|
652
|
+
|
653
|
+
offset = read_pos_int64(&itemsize, ptr, offset, len, ctx);
|
654
|
+
if (offset < 0) return NULL;
|
655
|
+
|
656
|
+
type = read_type(ptr, offset, len, ctx);
|
657
|
+
if (type == NULL) {
|
658
|
+
return NULL;
|
659
|
+
}
|
660
|
+
|
661
|
+
t = new_copy_common(fields, ctx);
|
662
|
+
if (t == NULL) {
|
663
|
+
ndt_decref(type);
|
664
|
+
return NULL;
|
665
|
+
}
|
666
|
+
t->Array.itemsize = itemsize;
|
667
|
+
t->Array.type = type;
|
625
668
|
|
626
669
|
return t;
|
627
670
|
}
|
628
671
|
|
629
672
|
static ndt_t *
|
630
|
-
read_tuple(
|
631
|
-
|
673
|
+
read_tuple(const common_t *fields, const char * const ptr, int64_t offset,
|
674
|
+
const int64_t len, ndt_context_t *ctx)
|
632
675
|
{
|
633
676
|
int64_t metaoffset;
|
634
677
|
enum ndt_variadic flag;
|
@@ -641,7 +684,7 @@ read_tuple(ndt_meta_t *m, const common_t *fields, const char * const ptr,
|
|
641
684
|
offset = read_pos_int64(&shape, ptr, offset, len, ctx);
|
642
685
|
if (offset < 0) return NULL;
|
643
686
|
|
644
|
-
t = ndt_tuple_new(flag, shape, ctx);
|
687
|
+
t = ndt_tuple_new(flag, shape, 0, ctx);
|
645
688
|
if (t == NULL) {
|
646
689
|
return NULL;
|
647
690
|
}
|
@@ -661,7 +704,7 @@ read_tuple(ndt_meta_t *m, const common_t *fields, const char * const ptr,
|
|
661
704
|
metaoffset = next_metaoffset(&offset, ptr, metaoffset, len, ctx);
|
662
705
|
if (metaoffset < 0) goto error;
|
663
706
|
|
664
|
-
t->Tuple.types[i] = read_type(
|
707
|
+
t->Tuple.types[i] = read_type(ptr, offset, len, ctx);
|
665
708
|
if (t->Tuple.types[i] == NULL) {
|
666
709
|
goto error;
|
667
710
|
}
|
@@ -670,13 +713,13 @@ read_tuple(ndt_meta_t *m, const common_t *fields, const char * const ptr,
|
|
670
713
|
return t;
|
671
714
|
|
672
715
|
error:
|
673
|
-
|
716
|
+
ndt_decref(t);
|
674
717
|
return NULL;
|
675
718
|
}
|
676
719
|
|
677
|
-
static ndt_t *
|
678
|
-
read_record(
|
679
|
-
|
720
|
+
static const ndt_t *
|
721
|
+
read_record(const common_t *fields, const char * const ptr, int64_t offset,
|
722
|
+
const int64_t len, ndt_context_t *ctx)
|
680
723
|
{
|
681
724
|
int64_t metaoffset;
|
682
725
|
enum ndt_variadic flag;
|
@@ -689,7 +732,7 @@ read_record(ndt_meta_t *m, const common_t *fields, const char * const ptr,
|
|
689
732
|
offset = read_pos_int64(&shape, ptr, offset, len, ctx);
|
690
733
|
if (offset < 0) return NULL;
|
691
734
|
|
692
|
-
t = ndt_record_new(flag, shape, ctx);
|
735
|
+
t = ndt_record_new(flag, shape, 0, ctx);
|
693
736
|
if (t == NULL) {
|
694
737
|
return NULL;
|
695
738
|
}
|
@@ -712,7 +755,7 @@ read_record(ndt_meta_t *m, const common_t *fields, const char * const ptr,
|
|
712
755
|
metaoffset = next_metaoffset(&offset, ptr, metaoffset, len, ctx);
|
713
756
|
if (metaoffset < 0) goto error;
|
714
757
|
|
715
|
-
t->Record.types[i] = read_type(
|
758
|
+
t->Record.types[i] = read_type(ptr, offset, len, ctx);
|
716
759
|
if (t->Record.types[i] == NULL) {
|
717
760
|
goto error;
|
718
761
|
}
|
@@ -721,25 +764,63 @@ read_record(ndt_meta_t *m, const common_t *fields, const char * const ptr,
|
|
721
764
|
return t;
|
722
765
|
|
723
766
|
error:
|
724
|
-
|
767
|
+
ndt_decref(t);
|
725
768
|
return NULL;
|
726
769
|
}
|
727
770
|
|
728
|
-
static ndt_t *
|
729
|
-
|
730
|
-
|
771
|
+
static const ndt_t *
|
772
|
+
read_union(const common_t *fields, const char * const ptr, int64_t offset,
|
773
|
+
const int64_t len, ndt_context_t *ctx)
|
774
|
+
{
|
775
|
+
int64_t metaoffset;
|
776
|
+
int64_t ntags;
|
777
|
+
ndt_t *t;
|
778
|
+
|
779
|
+
offset = read_pos_int64(&ntags, ptr, offset, len, ctx);
|
780
|
+
if (offset < 0) return NULL;
|
781
|
+
|
782
|
+
t = ndt_union_new(ntags, 0, ctx);
|
783
|
+
if (t == NULL) {
|
784
|
+
return NULL;
|
785
|
+
}
|
786
|
+
copy_common(t, fields);
|
787
|
+
|
788
|
+
offset = read_string_array(t->Union.tags, ntags, ptr, offset, len, ctx);
|
789
|
+
if (offset < 0) goto error;
|
790
|
+
|
791
|
+
metaoffset = offset;
|
792
|
+
for (int64_t i = 0; i < ntags; i++) {
|
793
|
+
metaoffset = next_metaoffset(&offset, ptr, metaoffset, len, ctx);
|
794
|
+
if (metaoffset < 0) goto error;
|
795
|
+
|
796
|
+
t->Union.types[i] = read_type(ptr, offset, len, ctx);
|
797
|
+
if (t->Union.types[i] == NULL) {
|
798
|
+
goto error;
|
799
|
+
}
|
800
|
+
}
|
801
|
+
|
802
|
+
return t;
|
803
|
+
|
804
|
+
error:
|
805
|
+
ndt_decref(t);
|
806
|
+
return NULL;
|
807
|
+
}
|
808
|
+
|
809
|
+
static const ndt_t *
|
810
|
+
read_ref(const common_t *fields, const char * const ptr, int64_t offset,
|
811
|
+
const int64_t len, ndt_context_t *ctx)
|
731
812
|
{
|
732
|
-
ndt_t *type;
|
813
|
+
const ndt_t *type;
|
733
814
|
ndt_t *t;
|
734
815
|
|
735
|
-
type = read_type(
|
816
|
+
type = read_type(ptr, offset, len, ctx);
|
736
817
|
if (type == NULL) {
|
737
818
|
return NULL;
|
738
819
|
}
|
739
820
|
|
740
821
|
t = new_copy_common(fields, ctx);
|
741
822
|
if (t == NULL) {
|
742
|
-
|
823
|
+
ndt_decref(type);
|
743
824
|
return NULL;
|
744
825
|
}
|
745
826
|
t->Ref.type = type;
|
@@ -747,18 +828,18 @@ read_ref(ndt_meta_t *m, const common_t *fields, const char * const ptr,
|
|
747
828
|
return t;
|
748
829
|
}
|
749
830
|
|
750
|
-
static ndt_t *
|
751
|
-
read_constr(
|
752
|
-
|
831
|
+
static const ndt_t *
|
832
|
+
read_constr(const common_t *fields, const char * const ptr, int64_t offset,
|
833
|
+
const int64_t len, ndt_context_t *ctx)
|
753
834
|
{
|
754
835
|
char *name;
|
755
|
-
ndt_t *type;
|
836
|
+
const ndt_t *type;
|
756
837
|
ndt_t *t;
|
757
838
|
|
758
839
|
offset = read_string(&name, ptr, offset, len, ctx);
|
759
840
|
if (offset < 0) return NULL;
|
760
841
|
|
761
|
-
type = read_type(
|
842
|
+
type = read_type(ptr, offset, len, ctx);
|
762
843
|
if (type == NULL) {
|
763
844
|
ndt_free(name);
|
764
845
|
return NULL;
|
@@ -766,7 +847,7 @@ read_constr(ndt_meta_t *m, const common_t *fields, const char * const ptr,
|
|
766
847
|
|
767
848
|
t = new_copy_common(fields, ctx);
|
768
849
|
if (t == NULL) {
|
769
|
-
|
850
|
+
ndt_decref(type);
|
770
851
|
ndt_free(name);
|
771
852
|
return NULL;
|
772
853
|
}
|
@@ -776,19 +857,19 @@ read_constr(ndt_meta_t *m, const common_t *fields, const char * const ptr,
|
|
776
857
|
return t;
|
777
858
|
}
|
778
859
|
|
779
|
-
static ndt_t *
|
780
|
-
read_nominal(
|
781
|
-
|
860
|
+
static const ndt_t *
|
861
|
+
read_nominal(const common_t *fields, const char * const ptr, int64_t offset,
|
862
|
+
const int64_t len, ndt_context_t *ctx)
|
782
863
|
{
|
783
864
|
char *name;
|
784
|
-
ndt_t *type;
|
865
|
+
const ndt_t *type;
|
785
866
|
const ndt_typedef_t *d;
|
786
867
|
ndt_t *t;
|
787
868
|
|
788
869
|
offset = read_string(&name, ptr, offset, len, ctx);
|
789
870
|
if (offset < 0) return NULL;
|
790
871
|
|
791
|
-
type = read_type(
|
872
|
+
type = read_type(ptr, offset, len, ctx);
|
792
873
|
if (type == NULL) {
|
793
874
|
ndt_free(name);
|
794
875
|
return NULL;
|
@@ -797,14 +878,14 @@ read_nominal(ndt_meta_t *m, const common_t *fields, const char * const ptr,
|
|
797
878
|
d = ndt_typedef_find(name, ctx);
|
798
879
|
if (d == NULL) {
|
799
880
|
ndt_free(name);
|
800
|
-
|
881
|
+
ndt_decref(type);
|
801
882
|
return NULL;
|
802
883
|
}
|
803
884
|
|
804
885
|
t = new_copy_common(fields, ctx);
|
805
886
|
if (t == NULL) {
|
806
887
|
ndt_free(name);
|
807
|
-
|
888
|
+
ndt_decref(type);
|
808
889
|
return NULL;
|
809
890
|
}
|
810
891
|
t->Nominal.name = name;
|
@@ -814,7 +895,7 @@ read_nominal(ndt_meta_t *m, const common_t *fields, const char * const ptr,
|
|
814
895
|
return t;
|
815
896
|
}
|
816
897
|
|
817
|
-
static ndt_t *
|
898
|
+
static const ndt_t *
|
818
899
|
read_categorical(const common_t *fields, const char * const ptr, int64_t offset,
|
819
900
|
const int64_t len, ndt_context_t *ctx)
|
820
901
|
{
|
@@ -847,7 +928,7 @@ read_categorical(const common_t *fields, const char * const ptr, int64_t offset,
|
|
847
928
|
return t;
|
848
929
|
}
|
849
930
|
|
850
|
-
static ndt_t *
|
931
|
+
static const ndt_t *
|
851
932
|
read_fixed_string(const common_t *fields, const char * const ptr, int64_t offset,
|
852
933
|
const int64_t len, ndt_context_t *ctx)
|
853
934
|
{
|
@@ -871,7 +952,7 @@ read_fixed_string(const common_t *fields, const char * const ptr, int64_t offset
|
|
871
952
|
return t;
|
872
953
|
}
|
873
954
|
|
874
|
-
static ndt_t *
|
955
|
+
static const ndt_t *
|
875
956
|
read_fixed_bytes(const common_t *fields, const char * const ptr, int64_t offset,
|
876
957
|
const int64_t len, ndt_context_t *ctx)
|
877
958
|
{
|
@@ -895,7 +976,7 @@ read_fixed_bytes(const common_t *fields, const char * const ptr, int64_t offset,
|
|
895
976
|
return t;
|
896
977
|
}
|
897
978
|
|
898
|
-
static ndt_t *
|
979
|
+
static const ndt_t *
|
899
980
|
read_bytes(const common_t *fields, const char * const ptr, int64_t offset,
|
900
981
|
const int64_t len, ndt_context_t *ctx)
|
901
982
|
{
|
@@ -914,7 +995,7 @@ read_bytes(const common_t *fields, const char * const ptr, int64_t offset,
|
|
914
995
|
return t;
|
915
996
|
}
|
916
997
|
|
917
|
-
static ndt_t *
|
998
|
+
static const ndt_t *
|
918
999
|
read_char(const common_t *fields, const char * const ptr, int64_t offset,
|
919
1000
|
const int64_t len, ndt_context_t *ctx)
|
920
1001
|
{
|
@@ -933,7 +1014,7 @@ read_char(const common_t *fields, const char * const ptr, int64_t offset,
|
|
933
1014
|
return t;
|
934
1015
|
}
|
935
1016
|
|
936
|
-
static ndt_t *
|
1017
|
+
static const ndt_t *
|
937
1018
|
read_typevar(const common_t *fields, const char * const ptr, int64_t offset,
|
938
1019
|
const int64_t len, ndt_context_t *ctx)
|
939
1020
|
{
|
@@ -953,8 +1034,8 @@ read_typevar(const common_t *fields, const char * const ptr, int64_t offset,
|
|
953
1034
|
return t;
|
954
1035
|
}
|
955
1036
|
|
956
|
-
static ndt_t *
|
957
|
-
read_type(
|
1037
|
+
static const ndt_t *
|
1038
|
+
read_type(const char * const ptr, int64_t offset, const int64_t len,
|
958
1039
|
ndt_context_t *ctx)
|
959
1040
|
{
|
960
1041
|
common_t fields;
|
@@ -963,17 +1044,20 @@ read_type(ndt_meta_t *m, const char * const ptr, int64_t offset, const int64_t l
|
|
963
1044
|
if (offset < 0) return NULL;
|
964
1045
|
|
965
1046
|
switch (fields.tag) {
|
966
|
-
case Module: return read_module(
|
967
|
-
case Function: return read_function(
|
968
|
-
case FixedDim: return read_fixed_dim(
|
969
|
-
case SymbolicDim: return read_symbolic_dim(
|
970
|
-
case EllipsisDim: return read_ellipsis_dim(
|
971
|
-
case VarDim: return read_var_dim(
|
972
|
-
case
|
973
|
-
case
|
974
|
-
case
|
975
|
-
case
|
976
|
-
case
|
1047
|
+
case Module: return read_module(&fields, ptr, offset, len, ctx);
|
1048
|
+
case Function: return read_function(&fields, ptr, offset, len, ctx);
|
1049
|
+
case FixedDim: return read_fixed_dim(&fields, ptr, offset, len, ctx);
|
1050
|
+
case SymbolicDim: return read_symbolic_dim(&fields, ptr, offset, len, ctx);
|
1051
|
+
case EllipsisDim: return read_ellipsis_dim(&fields, ptr, offset, len, ctx);
|
1052
|
+
case VarDim: return read_var_dim(&fields, ptr, offset, len, ctx);
|
1053
|
+
case VarDimElem: return read_var_dim_elem(&fields, ptr, offset, len, ctx);
|
1054
|
+
case Array: return read_array(&fields, ptr, offset, len, ctx);
|
1055
|
+
case Tuple: return read_tuple(&fields, ptr, offset, len, ctx);
|
1056
|
+
case Record: return read_record(&fields, ptr, offset, len, ctx);
|
1057
|
+
case Union: return read_union(&fields, ptr, offset, len, ctx);
|
1058
|
+
case Ref: return read_ref(&fields, ptr, offset, len, ctx);
|
1059
|
+
case Constr: return read_constr(&fields, ptr, offset, len, ctx);
|
1060
|
+
case Nominal: return read_nominal(&fields, ptr, offset, len, ctx);
|
977
1061
|
case Categorical: return read_categorical(&fields, ptr, offset, len, ctx);
|
978
1062
|
case FixedString: return read_fixed_string(&fields, ptr, offset, len, ctx);
|
979
1063
|
case FixedBytes: return read_fixed_bytes(&fields, ptr, offset, len, ctx);
|
@@ -981,16 +1065,17 @@ read_type(ndt_meta_t *m, const char * const ptr, int64_t offset, const int64_t l
|
|
981
1065
|
case Char: return read_char(&fields, ptr, offset, len, ctx);
|
982
1066
|
case Typevar: return read_typevar(&fields, ptr, offset, len, ctx);
|
983
1067
|
|
984
|
-
case Bool:
|
985
|
-
case Int8: case Int16: case Int32: case Int64:
|
986
|
-
case Uint8: case Uint16: case Uint32: case Uint64:
|
987
|
-
case Float16: case Float32: case Float64:
|
988
|
-
case Complex32: case Complex64: case Complex128:
|
989
1068
|
case String:
|
1069
|
+
case Bool:
|
1070
|
+
case SignedKind: case Int8: case Int16: case Int32: case Int64:
|
1071
|
+
case UnsignedKind: case Uint8: case Uint16: case Uint32: case Uint64:
|
1072
|
+
case FloatKind: case BFloat16: case Float16: case Float32: case Float64:
|
1073
|
+
case ComplexKind: case BComplex32: case Complex32: case Complex64: case Complex128:
|
1074
|
+
return ndt_primitive(fields.tag, fields.flags, ctx);
|
990
1075
|
|
991
1076
|
case AnyKind:
|
992
|
-
case ScalarKind:
|
993
|
-
case
|
1077
|
+
case ScalarKind:
|
1078
|
+
case FixedStringKind: case FixedBytesKind:
|
994
1079
|
return new_copy_common(&fields, ctx);
|
995
1080
|
}
|
996
1081
|
|
@@ -999,9 +1084,8 @@ read_type(ndt_meta_t *m, const char * const ptr, int64_t offset, const int64_t l
|
|
999
1084
|
return NULL;
|
1000
1085
|
}
|
1001
1086
|
|
1002
|
-
ndt_t *
|
1003
|
-
ndt_deserialize(
|
1004
|
-
ndt_context_t *ctx)
|
1087
|
+
const ndt_t *
|
1088
|
+
ndt_deserialize(const char * const ptr, int64_t len, ndt_context_t *ctx)
|
1005
1089
|
{
|
1006
|
-
return read_type(
|
1090
|
+
return read_type(ptr, 0, len, ctx);
|
1007
1091
|
}
|