ndtypes 0.2.0dev6 → 0.2.0dev8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/ext/ruby_ndtypes/GRTAGS +0 -0
- data/ext/ruby_ndtypes/GTAGS +0 -0
- data/ext/ruby_ndtypes/include/ruby_ndtypes.h +90 -0
- 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/config.log +3 -3
- data/ext/ruby_ndtypes/ndtypes/libndtypes/grammar.c +756 -807
- data/ext/ruby_ndtypes/ndtypes/libndtypes/grammar.o +0 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/grammar.y +3 -13
- data/ext/ruby_ndtypes/ndtypes/libndtypes/io.c +2 -2
- data/ext/ruby_ndtypes/ndtypes/libndtypes/io.o +0 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/libndtypes.a +0 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/libndtypes.so.0.2.0dev3 +0 -0
- data/ext/ruby_ndtypes/ndtypes/libndtypes/tests/test_match.c +5 -5
- data/ext/ruby_ndtypes/ndtypes/libndtypes/tests/test_parse.c +12 -12
- data/ext/ruby_ndtypes/ndtypes/libndtypes/tests/test_parse_error.c +8 -8
- data/ext/ruby_ndtypes/ndtypes/libndtypes/tests/test_parse_roundtrip.c +6 -6
- data/ext/ruby_ndtypes/ndtypes/libndtypes/tests/test_typecheck.c +6 -6
- data/ext/ruby_ndtypes/ndtypes/python/ndtypes/_ndtypes.c +2 -2
- data/ext/ruby_ndtypes/ndtypes/python/ndtypes/libndtypes.a +0 -0
- data/ext/ruby_ndtypes/ndtypes/python/ndtypes/libndtypes.so.0.2.0dev3 +0 -0
- data/ext/ruby_ndtypes/ndtypes/python/test_ndtypes.py +22 -4
- data/ext/ruby_ndtypes/ruby_ndtypes.c +0 -20
- data/ext/ruby_ndtypes/ruby_ndtypes.h +90 -0
- data/lib/ndtypes.rb +6 -0
- data/lib/ndtypes/version.rb +2 -2
- data/lib/ruby_ndtypes.so +0 -0
- metadata +2 -2
Binary file
|
@@ -123,8 +123,6 @@ yylex(YYSTYPE *val, YYLTYPE *loc, yyscan_t scanner, ndt_context_t *ctx)
|
|
123
123
|
%type <ndt> fixed_string
|
124
124
|
%type <ndt> bytes
|
125
125
|
%type <ndt> fixed_bytes
|
126
|
-
%type <ndt> array_dimensions
|
127
|
-
%type <ndt> array
|
128
126
|
%type <ndt> ref
|
129
127
|
|
130
128
|
%type <ndt> tuple_type
|
@@ -225,7 +223,7 @@ datashape_with_ellipsis:
|
|
225
223
|
| fixed_ellipsis { $$ = $1; }
|
226
224
|
| NAME_UPPER LBRACK fixed_ellipsis RBRACK { $$ = mk_contig($1, (ndt_t *)$3, ctx); if ($$ == NULL) YYABORT; }
|
227
225
|
| VAR ELLIPSIS STAR dtype { $$ = mk_var_ellipsis($4, ctx); if ($$ == NULL) YYABORT; }
|
228
|
-
|
|
226
|
+
| ARRAY ELLIPSIS STAR datashape { $$ = mk_array_ellipsis($4, ctx); if ($$ == NULL) YYABORT; }
|
229
227
|
|
230
228
|
fixed_ellipsis:
|
231
229
|
ELLIPSIS STAR dimensions_tail { $$ = mk_ellipsis_dim(NULL, $3, ctx); if ($$ == NULL) YYABORT; }
|
@@ -246,7 +244,8 @@ dimensions_nooption:
|
|
246
244
|
| NAME_UPPER STAR dimensions_tail { $$ = mk_symbolic_dim($1, $3, ctx); if ($$ == NULL) YYABORT; }
|
247
245
|
| VAR arguments_opt STAR dimensions_tail { $$ = mk_var_dim($2, $4, false, ctx); if ($$ == NULL) YYABORT; }
|
248
246
|
| QUESTIONMARK VAR arguments_opt STAR dimensions_tail { $$ = mk_var_dim($3, $5, true, ctx); if ($$ == NULL) YYABORT; }
|
249
|
-
|
247
|
+
| ARRAY STAR datashape { $$ = mk_array($3, false, ctx); if ($$ == NULL) YYABORT; }
|
248
|
+
| QUESTIONMARK ARRAY STAR datashape { $$ = mk_array($4, true, ctx); if ($$ == NULL) YYABORT; }
|
250
249
|
|
251
250
|
dimensions_tail:
|
252
251
|
dtype { $$ = $1; }
|
@@ -347,15 +346,6 @@ encoding:
|
|
347
346
|
bytes:
|
348
347
|
option_opt BYTES arguments_opt { $$ = mk_bytes($3, $1, ctx); if ($$ == NULL) YYABORT; }
|
349
348
|
|
350
|
-
array_dimensions:
|
351
|
-
array { $$ = $1; }
|
352
|
-
| option_opt ARRAY ELLIPSIS OF datashape { $$ = mk_array_ellipsis($5, ctx); if ($$ == NULL) YYABORT; }
|
353
|
-
| option_opt ARRAY ELLIPSIS OF array { $$ = mk_array_ellipsis($5, ctx); if ($$ == NULL) YYABORT; }
|
354
|
-
|
355
|
-
array:
|
356
|
-
option_opt ARRAY OF datashape { $$ = mk_array($4, $1, ctx); if ($$ == NULL) YYABORT; }
|
357
|
-
| option_opt ARRAY OF array { $$ = mk_array($4, $1, ctx); if ($$ == NULL) YYABORT; }
|
358
|
-
|
359
349
|
fixed_bytes:
|
360
350
|
option_opt FIXED_BYTES LPAREN attribute_seq RPAREN { $$ = mk_fixed_bytes($4, $1, ctx); if ($$ == NULL) YYABORT; }
|
361
351
|
|
@@ -610,7 +610,7 @@ datashape(buf_t *buf, const ndt_t *t, int d, ndt_context_t *ctx)
|
|
610
610
|
|
611
611
|
if (t->EllipsisDim.name) {
|
612
612
|
if (strcmp(t->EllipsisDim.name, "array") == 0) {
|
613
|
-
n = ndt_snprintf(ctx, buf, "array...
|
613
|
+
n = ndt_snprintf(ctx, buf, "array... * ");
|
614
614
|
}
|
615
615
|
else {
|
616
616
|
n = ndt_snprintf(ctx, buf, "%s... * ", t->EllipsisDim.name);
|
@@ -628,7 +628,7 @@ datashape(buf_t *buf, const ndt_t *t, int d, ndt_context_t *ctx)
|
|
628
628
|
}
|
629
629
|
|
630
630
|
case Array: {
|
631
|
-
n = ndt_snprintf(ctx, buf, "array
|
631
|
+
n = ndt_snprintf(ctx, buf, "array * ");
|
632
632
|
if (n < 0) return -1;
|
633
633
|
|
634
634
|
return datashape(buf, t->Array.type, d, ctx);
|
Binary file
|
Binary file
|
Binary file
|
@@ -2384,14 +2384,14 @@ const match_testcase_t match_tests[] = {
|
|
2384
2384
|
"!10 * 3 * 2 * float64", 0 },
|
2385
2385
|
|
2386
2386
|
/* array... */
|
2387
|
-
{ "array...
|
2387
|
+
{ "array... * float64",
|
2388
2388
|
"2 * 3 * float64", 0 },
|
2389
2389
|
|
2390
|
-
{ "array...
|
2391
|
-
"array
|
2390
|
+
{ "array... * float64",
|
2391
|
+
"array * float64", 1 },
|
2392
2392
|
|
2393
|
-
{ "array...
|
2394
|
-
"array
|
2393
|
+
{ "array... * float64",
|
2394
|
+
"array * array * float64", 1 },
|
2395
2395
|
|
2396
2396
|
/* END MANUALLY GENERATED */
|
2397
2397
|
|
@@ -45,8 +45,8 @@ const char *parse_tests[] = {
|
|
45
45
|
"10 * L * Any",
|
46
46
|
"10 * 10 * L * Any",
|
47
47
|
"var * Any",
|
48
|
-
"array
|
49
|
-
"array
|
48
|
+
"array * Any",
|
49
|
+
"array * array * Any",
|
50
50
|
"... * Any",
|
51
51
|
"10 * Any",
|
52
52
|
"Any",
|
@@ -259,26 +259,26 @@ const char *parse_tests[] = {
|
|
259
259
|
"1286044356 * LbR6JPFI * 2096958782 * uint8",
|
260
260
|
"categorical(-507014936.36, -25910, 'xM3Mys0XqH', 4265882500)",
|
261
261
|
"var * var * FixedBytesKind",
|
262
|
-
"array
|
263
|
-
"array
|
262
|
+
"array * FixedBytesKind",
|
263
|
+
"array * array * FixedBytesKind",
|
264
264
|
"var * var * var * fixed_bytes(size=2816010912, align=16)",
|
265
|
-
"array
|
265
|
+
"array * fixed_bytes(size=2816010912, align=16)",
|
266
266
|
"36 * 16 * fixed_bytes(size=912328236, align=2)",
|
267
267
|
"var * var * float64",
|
268
|
-
"array
|
268
|
+
"array * float64",
|
269
269
|
"var * var * var * ZcTmBXnKPi",
|
270
|
-
"array
|
270
|
+
"array * ZcTmBXnKPi",
|
271
271
|
"categorical('omhwkoWVWw', 43, 946986991)",
|
272
272
|
"var * float32",
|
273
273
|
"var * var * var * uint16",
|
274
274
|
"var * var * var * ScalarKind",
|
275
|
-
"array
|
275
|
+
"array * ScalarKind",
|
276
276
|
"fixed_bytes(size=280180380, align=2)",
|
277
277
|
"fixed_string(1901614748, 'utf-32')",
|
278
278
|
"var * M7",
|
279
279
|
"var * bytes(align=2)",
|
280
280
|
"var * var * ULy8(char)",
|
281
|
-
"array
|
281
|
+
"array * ULy8(char)",
|
282
282
|
"fixed_bytes(size=1882259744, align=16)",
|
283
283
|
"categorical(-136747211.015, -58, -83)",
|
284
284
|
"3739637665 * 1476113530 * 1701021063 * IKd * 450514382 * WXn",
|
@@ -286,7 +286,7 @@ const char *parse_tests[] = {
|
|
286
286
|
"var * R8KFFEabJ",
|
287
287
|
"var * QoFb",
|
288
288
|
"var * fixed_string(1233383142, 'utf-32')",
|
289
|
-
"array
|
289
|
+
"array * fixed_string(1233383142, 'utf-32')",
|
290
290
|
"fixed_bytes(size=2882797968, align=4)",
|
291
291
|
"fixed_bytes(size=1233209904, align=8)",
|
292
292
|
"WhRsMHHXYp(categorical(145))",
|
@@ -349,7 +349,7 @@ const char *parse_tests[] = {
|
|
349
349
|
"2 * 3 * ThisRecord of {first: (int64, complex128), second: string}",
|
350
350
|
"2 * 3 * ThisRecord of {first: (int64, complex128), second: string} | ThatTuple of (bytes, string)",
|
351
351
|
"2 * 3 * Int of int64 | ThisRecord of {first: (int64, complex128), second: string} | ThatTuple of (bytes, string)",
|
352
|
-
"array
|
352
|
+
"array * Int of int64 | ThisRecord of {first: (int64, complex128), second: uint8} | ThatTuple of (float64, float64)",
|
353
353
|
|
354
354
|
"fixed(shape=10) * complex128",
|
355
355
|
|
@@ -377,7 +377,7 @@ const char *parse_tests[] = {
|
|
377
377
|
|
378
378
|
/* var..., array... */
|
379
379
|
"var... * (int8, int64)",
|
380
|
-
"array...
|
380
|
+
"array... * (int8, int64)",
|
381
381
|
|
382
382
|
/* END MANUALLY GENERATED */
|
383
383
|
|
@@ -396,7 +396,7 @@ const char *parse_error_tests[] = {
|
|
396
396
|
"?[10 * 10 $ X * Any$",
|
397
397
|
"?[10 * 10 $ X * Any$",
|
398
398
|
"$var * Any",
|
399
|
-
"$array
|
399
|
+
"$array * Any",
|
400
400
|
"=var * Any",
|
401
401
|
"$[var * Any]",
|
402
402
|
"xxx[var * Any]",
|
@@ -27748,13 +27748,13 @@ const char *parse_error_tests[] = {
|
|
27748
27748
|
"fixed_bytes(1342281638, align=xxx)",
|
27749
27749
|
"Y5vtk * var * 905934102 * 1310846899 * fixed[3359714476] * LKgwlEDf * 2822334059 * ; PKI_8Ob8(fixed_string(795133707))",
|
27750
27750
|
"?(E00Lr_HMM * ... * UAzC * var * M4nJaK * , var * var * 1002912577 * PZPD)",
|
27751
|
-
"?(E00Lr_HMM * ... * UAzC * array
|
27751
|
+
"?(E00Lr_HMM * ... * UAzC * array * M4nJaK * , array * array * 1002912577 * PZPD)",
|
27752
27752
|
"?ref(fixed_string(3865363101, 'ucs-10'))",
|
27753
27753
|
"fixed[3622391868] * SUc9IusL * CaPaWth4m * CEwSPY_6Z * HPW * SbvgP * 29709a97707 * 1300296096 * Fixed * VA8O",
|
27754
27754
|
"fixed[1603107638)] * 2764230114 * IRXLe * Odlw6RSx * ... * Fixed * var * 2484716214 * ScalarKind",
|
27755
|
-
"fixed[1603107638)] * 2764230114 * IRXLe * Odlw6RSx * ... * Fixed * array
|
27755
|
+
"fixed[1603107638)] * 2764230114 * IRXLe * Odlw6RSx * ... * Fixed * array * 2484716214 * ScalarKind",
|
27756
27756
|
"ZmQxcy * var * 1098824011 * var * var * (,,,)",
|
27757
|
-
"ZmQxcy * array
|
27757
|
+
"ZmQxcy * array * 1098824011 * array * array * (,,,)",
|
27758
27758
|
"ref(?x1869144321 * Y3_Dm0 * int32)",
|
27759
27759
|
"categorical[\"a\", 1619552300, 490620000000000000000000000000000000000000, 18772, -84, 'l']",
|
27760
27760
|
"?fixed[2889099917] * ... * var * JgdIXy5M * var * Wr2[categorical['gLsA7BM43V', 16460]]",
|
@@ -27762,7 +27762,7 @@ const char *parse_error_tests[] = {
|
|
27762
27762
|
"?var * Fixed * FdN_HERKv * 4204012258 * var * fixed[233758212000000000000000000000000000] * Fixed * FixedBytesKind",
|
27763
27763
|
"?categorical[30987, -16536, -270032755.642, -189, -823800099]",
|
27764
27764
|
"?Fixed * 1998811088 * var * var * var * var * bytes(align=-58)",
|
27765
|
-
"?Fixed * 1998811088 * array
|
27765
|
+
"?Fixed * 1998811088 * array * array * array * array * bytes(align=-58)",
|
27766
27766
|
"257051452 * QRgi * Fixed * 4147849906 * var * P4h8i8 * var * 3924618173 * fixed[207255421] * int100",
|
27767
27767
|
"categorical[408786241.474, 2840608325, 44038, 1763886348, \"jOt', 24]",
|
27768
27768
|
"?[OQ78AW32d[categorical[49]%]",
|
@@ -27866,9 +27866,9 @@ const char *parse_error_tests[] = {
|
|
27866
27866
|
|
27867
27867
|
/* var... and array... */
|
27868
27868
|
"var... of float64",
|
27869
|
-
"var...
|
27870
|
-
"array...
|
27871
|
-
"array...
|
27869
|
+
"var... of (int64, str)",
|
27870
|
+
"array... of float64",
|
27871
|
+
"array... of (int64, str)",
|
27872
27872
|
/* END MANUALLY GENERATED */
|
27873
27873
|
|
27874
27874
|
NULL
|
@@ -276,7 +276,7 @@ const char *parse_roundtrip_tests[] = {
|
|
276
276
|
/* BEGIN RANDOM */
|
277
277
|
"fixed_bytes(size=1342281600, align=16)",
|
278
278
|
"var * var * var * (...)",
|
279
|
-
"array
|
279
|
+
"array * (...)",
|
280
280
|
"categorical(-84, 18772, 49062, 1619552300, 'a', 'l')",
|
281
281
|
"categorical(24, 44038, 1763886348, 2840608325, 1.2e-32, 'jOt')",
|
282
282
|
"categorical(-2049848438, 94, 3577056037, 3599739756, 1.2e-32)",
|
@@ -284,15 +284,15 @@ const char *parse_roundtrip_tests[] = {
|
|
284
284
|
"1286044356 * LbR6JPFI * 2096958782 * uint8",
|
285
285
|
"categorical(-25910, 4265882500, 1.2e-32, 'xM3Mys0XqH')",
|
286
286
|
"var * var * FixedBytesKind",
|
287
|
-
"array
|
287
|
+
"array * FixedBytesKind",
|
288
288
|
"var * var * var * fixed_bytes(size=2816010912, align=16)",
|
289
289
|
"36 * 16 * fixed_bytes(size=912328236, align=2)",
|
290
290
|
"var * var * var * ZcTmBXnKPi",
|
291
291
|
"categorical(946986991, 43, 'omhwkoWVWw')",
|
292
292
|
"var * float32",
|
293
|
-
"array
|
293
|
+
"array * float32",
|
294
294
|
"var * var * var * uint16",
|
295
|
-
"array
|
295
|
+
"array * uint16",
|
296
296
|
"var * var * var * ScalarKind",
|
297
297
|
"fixed_bytes(size=280180300, align=2)",
|
298
298
|
"fixed_string(1901614748, 'utf32')",
|
@@ -308,7 +308,7 @@ const char *parse_roundtrip_tests[] = {
|
|
308
308
|
"fixed_bytes(size=1233209904, align=8)",
|
309
309
|
"WhRsMHHXYp(categorical(145))",
|
310
310
|
"var * var * bytes(align=2)",
|
311
|
-
"array
|
311
|
+
"array * fixed_bytes(size=2882797900, align=2)",
|
312
312
|
"categorical(-85, -49, -26791, 8094, 1780, 1.2e-32, 'pX')",
|
313
313
|
"D6nfBg_(categorical(16278, 26651, 147170982, 1.2e-32, 'ylR7'))",
|
314
314
|
"categorical(482331467, 3229733591, -1.2e-32, 1.2e-32)",
|
@@ -358,7 +358,7 @@ const char *parse_roundtrip_tests[] = {
|
|
358
358
|
|
359
359
|
/* var... and array... */
|
360
360
|
"var... * float64",
|
361
|
-
"array...
|
361
|
+
"array... * float64",
|
362
362
|
|
363
363
|
/* END MANUALLY GENERATED */
|
364
364
|
|
@@ -801,28 +801,28 @@ const typecheck_testcase_t typecheck_tests[] = {
|
|
801
801
|
{ .loc = loc(),
|
802
802
|
.success=true,
|
803
803
|
|
804
|
-
.signature="array...
|
805
|
-
.args={"array
|
804
|
+
.signature="array... * float64 -> array... * int64",
|
805
|
+
.args={"array * float64"},
|
806
806
|
.kwargs={NULL},
|
807
807
|
|
808
808
|
.outer_dims=1,
|
809
809
|
.nin=1,
|
810
810
|
.nout=1,
|
811
811
|
.nargs=2,
|
812
|
-
.types={ "array
|
812
|
+
.types={ "array * float64", "array * int64" } },
|
813
813
|
|
814
814
|
{ .loc = loc(),
|
815
815
|
.success=true,
|
816
816
|
|
817
|
-
.signature="array...
|
818
|
-
.args={"array
|
817
|
+
.signature="array... * array * float64, array... * uint8 -> array... * array * int64",
|
818
|
+
.args={"array * array * float64", "array * uint8"},
|
819
819
|
.kwargs={NULL},
|
820
820
|
|
821
821
|
.outer_dims=1,
|
822
822
|
.nin=2,
|
823
823
|
.nout=1,
|
824
824
|
.nargs=3,
|
825
|
-
.types={ "array
|
825
|
+
.types={ "array * array * float64", "array * uint8", "array * array * int64" } },
|
826
826
|
|
827
827
|
{ .loc=NULL, .success=false, .signature= NULL, .args={NULL}, .kwargs={NULL} }
|
828
828
|
};
|
@@ -229,7 +229,7 @@ from_string(PyObject *v)
|
|
229
229
|
return NULL;
|
230
230
|
}
|
231
231
|
|
232
|
-
|
232
|
+
return t;
|
233
233
|
}
|
234
234
|
|
235
235
|
static PyObject *
|
@@ -1100,7 +1100,7 @@ static PyMethodDef ndtype_methods [] =
|
|
1100
1100
|
/* Boolean functions on array types */
|
1101
1101
|
{ "is_c_contiguous", (PyCFunction)ndtype_ndt_is_c_contiguous, METH_NOARGS, doc_is_c_contiguous },
|
1102
1102
|
{ "is_f_contiguous", (PyCFunction)ndtype_ndt_is_f_contiguous, METH_NOARGS, doc_is_f_contiguous },
|
1103
|
-
{ "is_var_contiguous", (PyCFunction)
|
1103
|
+
{ "is_var_contiguous", (PyCFunction)ndtype_ndt_is_var_contiguous, METH_NOARGS, NULL },
|
1104
1104
|
|
1105
1105
|
/* Binary functions */
|
1106
1106
|
{ "at", (PyCFunction)ndtype_at, METH_VARARGS|METH_KEYWORDS, NULL },
|
Binary file
|
Binary file
|
@@ -601,10 +601,11 @@ class TestEllipsisDim(unittest.TestCase):
|
|
601
601
|
self.assertRaises(TypeError, getattr, t, 'shape')
|
602
602
|
self.assertRaises(TypeError, getattr, t, 'strides')
|
603
603
|
|
604
|
+
|
604
605
|
class TestArray(unittest.TestCase):
|
605
606
|
|
606
607
|
def test_array_predicates(self):
|
607
|
-
t = ndt("array
|
608
|
+
t = ndt("array * complex128")
|
608
609
|
check_serialize(self, t)
|
609
610
|
|
610
611
|
self.assertFalse(t.isabstract())
|
@@ -621,7 +622,7 @@ class TestArray(unittest.TestCase):
|
|
621
622
|
|
622
623
|
def test_array_dim_common_fields(self):
|
623
624
|
dt = "{a: complex64, b: float64}"
|
624
|
-
t = ndt("array
|
625
|
+
t = ndt("array * %s" % dt)
|
625
626
|
check_serialize(self, t)
|
626
627
|
dtype = ndt(dt)
|
627
628
|
|
@@ -637,8 +638,25 @@ class TestArray(unittest.TestCase):
|
|
637
638
|
|
638
639
|
def test_array_invariants(self):
|
639
640
|
# Mixing array with fixed/var dimensions is disallowed.
|
640
|
-
self.assertRaises(TypeError, ndt, "array
|
641
|
-
self.assertRaises(TypeError, ndt, "array
|
641
|
+
self.assertRaises(TypeError, ndt, "array * 2 * int64")
|
642
|
+
self.assertRaises(TypeError, ndt, "array * var * int64")
|
643
|
+
|
644
|
+
def test_array_geojson(self):
|
645
|
+
typedef("id", """
|
646
|
+
String of string
|
647
|
+
| Int of int64
|
648
|
+
""")
|
649
|
+
|
650
|
+
typedef("position", "array * float64")
|
651
|
+
|
652
|
+
typedef("geometry", """
|
653
|
+
Point of position
|
654
|
+
| MultiPoint of array * position
|
655
|
+
| LineString of array * position
|
656
|
+
| MultiLineString of array * array * position
|
657
|
+
| Polygon of array * position
|
658
|
+
| MultiPolygon of array * array * position
|
659
|
+
""")
|
642
660
|
|
643
661
|
|
644
662
|
class TestTuple(unittest.TestCase):
|
@@ -12,7 +12,6 @@ static const rb_data_type_t NdtObject_type;
|
|
12
12
|
/* Class declarations. */
|
13
13
|
VALUE cNDTypes;
|
14
14
|
VALUE mNDTypes_GCGuard;
|
15
|
-
static VALUE cNDTypes_RBuf;
|
16
15
|
|
17
16
|
static VALUE rb_eValueError;
|
18
17
|
|
@@ -941,36 +940,29 @@ rb_ndtypes_from_type(const ndt_t *type)
|
|
941
940
|
return self;
|
942
941
|
}
|
943
942
|
|
944
|
-
/* Return 1 if obj is of type NDTypes. 0 otherwise. */
|
945
943
|
int
|
946
944
|
rb_ndtypes_check_type(VALUE obj)
|
947
945
|
{
|
948
946
|
return NDT_CHECK_TYPE(obj);
|
949
947
|
}
|
950
948
|
|
951
|
-
/* Get a pointer to the NdtObject struct that is contained within obj. */
|
952
949
|
NdtObject *
|
953
950
|
rb_ndtypes_get_ndt_object(VALUE obj)
|
954
951
|
{
|
955
952
|
NdtObject *ndt_p;
|
956
|
-
|
957
953
|
if (!NDT_CHECK_TYPE(obj)) {
|
958
954
|
/* raise error */
|
959
955
|
}
|
960
|
-
|
961
956
|
GET_NDT(obj, ndt_p);
|
962
|
-
|
963
957
|
return ndt_p;
|
964
958
|
}
|
965
959
|
|
966
|
-
/* Get an allocated Ruby object of type NDTypes. ndt_p should have been allocated already. */
|
967
960
|
VALUE
|
968
961
|
rb_ndtypes_make_ndt_object(NdtObject *ndt_p)
|
969
962
|
{
|
970
963
|
return MAKE_NDT(cNDTypes, ndt_p);
|
971
964
|
}
|
972
965
|
|
973
|
-
/* Perform allocation and get a Ruby object of type NDTypes. */
|
974
966
|
VALUE
|
975
967
|
rb_ndtypes_wrap_ndt_object(void)
|
976
968
|
{
|
@@ -979,7 +971,6 @@ rb_ndtypes_wrap_ndt_object(void)
|
|
979
971
|
return WRAP_NDT(cNDTypes, ndt_p);
|
980
972
|
}
|
981
973
|
|
982
|
-
/* Get pointer to the internal ndt_t object from the NDTypes Ruby object ndt. */
|
983
974
|
const ndt_t *
|
984
975
|
rb_ndtypes_const_ndt(VALUE ndt)
|
985
976
|
{
|
@@ -994,11 +985,6 @@ rb_ndtypes_const_ndt(VALUE ndt)
|
|
994
985
|
return ndt_p->ndt;
|
995
986
|
}
|
996
987
|
|
997
|
-
/* Function for taking a source type and moving it accross the subtree.
|
998
|
-
|
999
|
-
@param src NDTypes Ruby object of the source XND object.
|
1000
|
-
@param t Pointer to type of the view of XND object.
|
1001
|
-
*/
|
1002
988
|
VALUE
|
1003
989
|
rb_ndtypes_move_subtree(VALUE src, ndt_t *t)
|
1004
990
|
{
|
@@ -1021,11 +1007,6 @@ rb_ndtypes_move_subtree(VALUE src, ndt_t *t)
|
|
1021
1007
|
return dest;
|
1022
1008
|
}
|
1023
1009
|
|
1024
|
-
/* Create NDT object from String. Returns the same object if type is NDT.
|
1025
|
-
|
1026
|
-
@param type String object containing description of type.
|
1027
|
-
@return New NDT object.
|
1028
|
-
*/
|
1029
1010
|
VALUE
|
1030
1011
|
rb_ndtypes_from_object(VALUE type)
|
1031
1012
|
{
|
@@ -1073,7 +1054,6 @@ void Init_ruby_ndtypes(void)
|
|
1073
1054
|
|
1074
1055
|
/* define classes */
|
1075
1056
|
cNDTypes = rb_define_class("NDTypes", rb_cObject);
|
1076
|
-
cNDTypes_RBuf = rb_define_class_under(cNDTypes, "RBuf", rb_cObject);
|
1077
1057
|
mNDTypes_GCGuard = rb_define_module_under(cNDTypes, "GCGuard");
|
1078
1058
|
|
1079
1059
|
/* errors */
|
@@ -18,14 +18,104 @@ extern "C" {
|
|
18
18
|
typedef struct NdtObject NdtObject;
|
19
19
|
extern VALUE cNDTypes;
|
20
20
|
|
21
|
+
/**
|
22
|
+
* @brief Return 1 if obj is of type NDTypes. 0 otherwise.
|
23
|
+
*
|
24
|
+
* @param obj Ruby object whose type has to be checked.
|
25
|
+
*
|
26
|
+
* @return Boolean value whether it is NDT object or not.
|
27
|
+
*/
|
28
|
+
|
21
29
|
int rb_ndtypes_check_type(VALUE obj);
|
30
|
+
|
31
|
+
/**
|
32
|
+
* @brief Get a pointer to the NdtObject struct that obj contains.
|
33
|
+
*
|
34
|
+
* @details This function unwraps the Ruby object obj passed to it and
|
35
|
+
* returns a pointer to the `NdtObject` struct that is contained within it.
|
36
|
+
* You must passed an NDT Ruby object.
|
37
|
+
*
|
38
|
+
* @param obj Ruby object of type NDT.
|
39
|
+
*
|
40
|
+
* @return Pointer to the NdtObject encapsulated within the Ruby object.
|
41
|
+
*/
|
22
42
|
NdtObject * rb_ndtypes_get_ndt_object(VALUE obj);
|
43
|
+
|
44
|
+
/**
|
45
|
+
* @brief Calls TypedData_Make_Struct and returns a Ruby object wrapping over ndt_p.
|
46
|
+
*
|
47
|
+
* @details This function calls the TypedData_Make_Struct macro from the Ruby
|
48
|
+
* C API for wrapping over argument passed to it. The ndt_p pointer must be allocated
|
49
|
+
* and data assingned to its contents before calling this function.
|
50
|
+
*
|
51
|
+
* @param ndt_p Pointer to NdtObject allocated by the caller.
|
52
|
+
*
|
53
|
+
* @return Ruby object wrapping over NdtObject.
|
54
|
+
*/
|
23
55
|
VALUE rb_ndtypes_make_ndt_object(NdtObject *ndt_p);
|
56
|
+
|
57
|
+
/**
|
58
|
+
* @brief Perform allocation using TypedData_Wrap_Struct and return a Ruby NDT object.
|
59
|
+
*
|
60
|
+
* @details This function does not set any of the data within the struct and assigns
|
61
|
+
* the NdtObject struct within the Ruby object to NULL. For allocating an already allocated
|
62
|
+
* NdtObject within a Ruby object use the rb_ndtypes_make_ndt_object() function.
|
63
|
+
*
|
64
|
+
* @return NDT Ruby object.
|
65
|
+
*/
|
24
66
|
VALUE rb_ndtypes_wrap_ndt_object(void);
|
67
|
+
|
68
|
+
/**
|
69
|
+
* @brief Unwrap the Ruby object ndt and return the pointer to ndt_t placed within it.
|
70
|
+
*
|
71
|
+
* @param ndt Ruby NDT object.
|
72
|
+
*
|
73
|
+
* @return Pointer to ndt_t type wrapped within the passed Ruby object.
|
74
|
+
*/
|
25
75
|
const ndt_t * rb_ndtypes_const_ndt(VALUE ndt);
|
76
|
+
|
77
|
+
/**
|
78
|
+
* @brief Function for taking a source type and moving it across the subtree.
|
79
|
+
*
|
80
|
+
* @param src NDTypes Ruby object of the source XND object.
|
81
|
+
* @param t Pointer to type of the view of XND object.
|
82
|
+
*
|
83
|
+
* @return NDT Ruby object of the moved subtree.
|
84
|
+
*/
|
26
85
|
VALUE rb_ndtypes_move_subtree(VALUE src, ndt_t *t);
|
86
|
+
|
87
|
+
/**
|
88
|
+
* @brief Create NDT object from Ruby String. Returns the same object if type is NDT.
|
89
|
+
* If you pass a String as an argument, read the string and create an NDT from it.
|
90
|
+
*
|
91
|
+
* @param type Ruby object. Can be Ruby String or NDT object.
|
92
|
+
*
|
93
|
+
* @return Ruby object of type NDT.
|
94
|
+
*/
|
27
95
|
VALUE rb_ndtypes_from_object(VALUE type);
|
96
|
+
|
97
|
+
/**
|
98
|
+
* @brief Make Ruby aware of the error condition raised by libndtypes by using
|
99
|
+
* the set_error_info() Ruby C API function.
|
100
|
+
*
|
101
|
+
* @param ctx Struct of type ndt_context_t.
|
102
|
+
*
|
103
|
+
* @return Ruby error class object.
|
104
|
+
*/
|
105
|
+
|
28
106
|
VALUE rb_ndtypes_set_error(ndt_context_t *ctx);
|
107
|
+
|
108
|
+
/**
|
109
|
+
* @brief Create an NDT Ruby object from an ndt_t struct.
|
110
|
+
*
|
111
|
+
* @details The caller can use this function for creating a Ruby NDT
|
112
|
+
* object from a ndt_t struct that has already been allocated using one
|
113
|
+
* of the allocation functions from libndtypes like ndt_from_string().
|
114
|
+
*
|
115
|
+
* @param type An allocated pointer to a struct of type ndt_t.
|
116
|
+
*
|
117
|
+
* @return Ruby object of type NDT.
|
118
|
+
*/
|
29
119
|
VALUE rb_ndtypes_from_type(const ndt_t *type);
|
30
120
|
|
31
121
|
#define INT2BOOL(t) (t ? Qtrue : Qfalse)
|