ruby-netcdf 0.6.6.1 → 0.7.1
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 +15 -0
- data/.gitignore +8 -0
- data/.rspec +2 -0
- data/.travis.yml +3 -0
- data/ChangeLog +51 -0
- data/Gemfile +4 -0
- data/Rakefile +1 -40
- data/bin/console +14 -0
- data/bin/setup +7 -0
- data/demo/demo5-netcdf4.rb +44 -0
- data/doc/Ref_man.html +340 -239
- data/doc/Ref_man.rd +91 -0
- data/doc/Ref_man_jp.html +940 -835
- data/doc/Ref_man_jp.rd +95 -0
- data/doc/to_html +3 -3
- data/extconf.rb +113 -78
- data/lib/netcdf.rb +89 -73
- data/lib/version.rb +5 -0
- data/netcdfraw.c +276 -169
- data/ruby-netcdf.gemspec +34 -0
- metadata +92 -97
data/lib/version.rb
ADDED
data/netcdfraw.c
CHANGED
@@ -24,6 +24,11 @@
|
|
24
24
|
#define SafeStringValue(s) Check_SafeStr(s)
|
25
25
|
#endif
|
26
26
|
|
27
|
+
/* for compatibility for NArray and NArray with big memory patch */
|
28
|
+
#ifndef NARRAY_BIGMEM
|
29
|
+
typedef int na_shape_t;
|
30
|
+
#endif
|
31
|
+
|
27
32
|
/* Data to NArray */
|
28
33
|
|
29
34
|
/* memcpy(ary->ptr,nc_ptr,na_sizeof[NA_SINT]*ary->total); \ */
|
@@ -202,7 +207,7 @@
|
|
202
207
|
ptr = (int32_t *) NA_PTR(na,0); \
|
203
208
|
}
|
204
209
|
|
205
|
-
#define NC_RAISE(status) rb_raise(err_status2class(status),(nc_strerror(status)))
|
210
|
+
#define NC_RAISE(status) rb_raise(err_status2class(status),"%s",(nc_strerror(status)))
|
206
211
|
#define NC_RAISE2(status, str) rb_raise(err_status2class(status),"%s (%s)",nc_strerror(status),(str) )
|
207
212
|
|
208
213
|
static VALUE mNumRu = 0;
|
@@ -343,9 +348,8 @@ NetCDF_dim_free(struct NetCDFDim *Netcdf_dim)
|
|
343
348
|
void
|
344
349
|
NetCDF_free(struct Netcdf *Netcdffile)
|
345
350
|
{
|
346
|
-
int status;
|
347
351
|
if (!Netcdffile->closed){
|
348
|
-
|
352
|
+
nc_close(Netcdffile->ncid); /* no error check -- not to stop during GC */
|
349
353
|
}
|
350
354
|
free(Netcdffile->name);
|
351
355
|
free(Netcdffile);
|
@@ -426,6 +430,7 @@ err_status2class(int status)
|
|
426
430
|
case(NC_FATAL):
|
427
431
|
return(rb_eNetcdfFatal);break;
|
428
432
|
}
|
433
|
+
return rb_eNetcdfError;
|
429
434
|
}
|
430
435
|
|
431
436
|
static const char*
|
@@ -555,6 +560,14 @@ NetCDF_var_clone(VALUE var)
|
|
555
560
|
return clone;
|
556
561
|
}
|
557
562
|
|
563
|
+
VALUE
|
564
|
+
NetCDF_inq_libvers(VALUE mod)
|
565
|
+
{
|
566
|
+
VALUE str;
|
567
|
+
str = rb_str_new2(nc_inq_libvers());
|
568
|
+
return(str);
|
569
|
+
}
|
570
|
+
|
558
571
|
VALUE
|
559
572
|
NetCDF_close(file)
|
560
573
|
VALUE file;
|
@@ -563,7 +576,7 @@ NetCDF_close(file)
|
|
563
576
|
int ncid;
|
564
577
|
struct Netcdf *Netcdffile;
|
565
578
|
|
566
|
-
if (rb_safe_level() >=
|
579
|
+
if (rb_safe_level() >= 3 && !OBJ_TAINTED(file)) {
|
567
580
|
rb_raise(rb_eSecurityError, "Insecure: can't close");
|
568
581
|
}
|
569
582
|
Data_Get_Struct(file,struct Netcdf,Netcdffile);
|
@@ -590,7 +603,7 @@ NetCDF_def_dim(VALUE file,VALUE dim_name,VALUE length)
|
|
590
603
|
struct NetCDFDim *Netcdf_dim;
|
591
604
|
VALUE Dimension;
|
592
605
|
|
593
|
-
rb_secure(
|
606
|
+
rb_secure(3);
|
594
607
|
Data_Get_Struct(file,struct Netcdf,Netcdffile);
|
595
608
|
|
596
609
|
Check_Type(dim_name,T_STRING);
|
@@ -733,7 +746,7 @@ NetCDF_put_att(VALUE file,VALUE att_name,VALUE value,VALUE atttype)
|
|
733
746
|
struct Netcdf *ncfile;
|
734
747
|
char *name;
|
735
748
|
|
736
|
-
rb_secure(
|
749
|
+
rb_secure(3);
|
737
750
|
Data_Get_Struct(file,struct Netcdf,ncfile);
|
738
751
|
Check_Type(att_name,T_STRING);
|
739
752
|
name = RSTRING_PTR(att_name);
|
@@ -751,7 +764,7 @@ NetCDF_put_att_var(VALUE var,VALUE att_name,VALUE value,VALUE atttype)
|
|
751
764
|
struct NetCDFVar *ncvar;
|
752
765
|
char *name;
|
753
766
|
|
754
|
-
rb_secure(
|
767
|
+
rb_secure(3);
|
755
768
|
Data_Get_Struct(var,struct NetCDFVar,ncvar);
|
756
769
|
Check_Type(att_name,T_STRING);
|
757
770
|
name = RSTRING_PTR(att_name);
|
@@ -778,7 +791,7 @@ NetCDF_def_var(VALUE file,VALUE var_name,VALUE vartype,VALUE dimensions)
|
|
778
791
|
struct NetCDFDim *Netcdf_dim;
|
779
792
|
VALUE Var;
|
780
793
|
|
781
|
-
rb_secure(
|
794
|
+
rb_secure(3);
|
782
795
|
Check_Type(var_name,T_STRING);
|
783
796
|
Check_Type(dimensions,T_ARRAY);
|
784
797
|
|
@@ -824,7 +837,6 @@ NetCDF_def_var(VALUE file,VALUE var_name,VALUE vartype,VALUE dimensions)
|
|
824
837
|
return Var;
|
825
838
|
}
|
826
839
|
|
827
|
-
|
828
840
|
VALUE
|
829
841
|
NetCDF_dim(VALUE file,VALUE dim_name)
|
830
842
|
{
|
@@ -949,7 +961,7 @@ NetCDF_redef(VALUE file)
|
|
949
961
|
int status;
|
950
962
|
struct Netcdf *Netcdffile;
|
951
963
|
|
952
|
-
rb_secure(
|
964
|
+
rb_secure(3);
|
953
965
|
Data_Get_Struct(file,struct Netcdf,Netcdffile);
|
954
966
|
ncid=Netcdffile->ncid;
|
955
967
|
status = nc_redef(ncid);
|
@@ -971,7 +983,7 @@ NetCDF_enddef(VALUE file)
|
|
971
983
|
int status;
|
972
984
|
struct Netcdf *Netcdffile;
|
973
985
|
|
974
|
-
rb_secure(
|
986
|
+
rb_secure(3);
|
975
987
|
Data_Get_Struct(file,struct Netcdf,Netcdffile);
|
976
988
|
ncid=Netcdffile->ncid;
|
977
989
|
status = nc_enddef(ncid);
|
@@ -998,7 +1010,7 @@ NetCDF_whether_in_define_mode(VALUE file)
|
|
998
1010
|
int status;
|
999
1011
|
struct Netcdf *Netcdffile;
|
1000
1012
|
|
1001
|
-
rb_secure(
|
1013
|
+
rb_secure(3);
|
1002
1014
|
Data_Get_Struct(file,struct Netcdf,Netcdffile);
|
1003
1015
|
ncid=Netcdffile->ncid;
|
1004
1016
|
status = nc_redef(ncid);
|
@@ -1149,7 +1161,7 @@ NetCDF_sync(VALUE file)
|
|
1149
1161
|
int status;
|
1150
1162
|
struct Netcdf *ncfile;
|
1151
1163
|
|
1152
|
-
rb_secure(
|
1164
|
+
rb_secure(3);
|
1153
1165
|
Data_Get_Struct(file,struct Netcdf,ncfile);
|
1154
1166
|
ncid=ncfile->ncid;
|
1155
1167
|
status = nc_sync(ncid);
|
@@ -1196,7 +1208,7 @@ NetCDF_dim_name(VALUE Dim,VALUE dimension_newname)
|
|
1196
1208
|
char *c_dim_name;
|
1197
1209
|
struct NetCDFDim *Netcdf_dim;
|
1198
1210
|
|
1199
|
-
rb_secure(
|
1211
|
+
rb_secure(3);
|
1200
1212
|
Data_Get_Struct(Dim,struct NetCDFDim,Netcdf_dim);
|
1201
1213
|
ncid=Netcdf_dim->ncid;
|
1202
1214
|
dimid=Netcdf_dim->dimid;
|
@@ -1354,6 +1366,113 @@ NetCDF_id2att(VALUE file,VALUE attnum)
|
|
1354
1366
|
|
1355
1367
|
}
|
1356
1368
|
|
1369
|
+
#if NCVER >= 400
|
1370
|
+
/* USAGE
|
1371
|
+
NetCDFVar#deflate(deflate_level, shuffle=false)
|
1372
|
+
*/
|
1373
|
+
VALUE
|
1374
|
+
NetCDF_var_deflate(int argc, VALUE *argv, VALUE Var)
|
1375
|
+
{
|
1376
|
+
int ncid, varid, status;
|
1377
|
+
struct NetCDFVar *Netcdf_var;
|
1378
|
+
|
1379
|
+
int shuffle;
|
1380
|
+
/* If non-zero, turn on the shuffle filter.
|
1381
|
+
|
1382
|
+
http://www.unidata.ucar.edu/software/netcdf/papers/AMS_2008.pdf :
|
1383
|
+
The shuffle algorithm changes the byte order in the data stream;
|
1384
|
+
when used with integers that are all close together, this
|
1385
|
+
results in a better compression ratio. There is no benefit
|
1386
|
+
from using the shuffle filter without also using
|
1387
|
+
compression.
|
1388
|
+
|
1389
|
+
MEMO by horinouchi: shuffling filter was also effective for float
|
1390
|
+
variables in some test (demo5-netcdf4.rb).
|
1391
|
+
*/
|
1392
|
+
int deflate_level;
|
1393
|
+
int deflate=1;
|
1394
|
+
/* Always set to non-zero:
|
1395
|
+
See https://www.unidata.ucar.edu/software/netcdf/docs/netcdf-c/nc_005fdef_005fvar_005fdeflate.html#nc_005fdef_005fvar_005fdeflate
|
1396
|
+
If non-zero, turn on the deflate filter at the
|
1397
|
+
level specified by the deflate_level parameter.
|
1398
|
+
*/
|
1399
|
+
|
1400
|
+
if (argc>2 || argc<1) rb_raise(rb_eArgError,
|
1401
|
+
"wrong # of arguments (%d). It must be 1 or 2", argc);
|
1402
|
+
|
1403
|
+
Data_Get_Struct(Var,struct NetCDFVar,Netcdf_var);
|
1404
|
+
ncid = Netcdf_var->ncid;
|
1405
|
+
varid = Netcdf_var->varid;
|
1406
|
+
|
1407
|
+
deflate_level = NUM2INT(argv[0]);
|
1408
|
+
|
1409
|
+
if (argc==1) {
|
1410
|
+
shuffle = 0; /* default: false */
|
1411
|
+
} else {
|
1412
|
+
if ( argv[1] == Qnil || argv[1] == Qfalse ) {
|
1413
|
+
shuffle = 0;
|
1414
|
+
} else {
|
1415
|
+
shuffle = 1;
|
1416
|
+
}
|
1417
|
+
}
|
1418
|
+
|
1419
|
+
status = nc_def_var_deflate(ncid, varid, shuffle, deflate, deflate_level);
|
1420
|
+
if(status != NC_NOERR) NC_RAISE(status);
|
1421
|
+
|
1422
|
+
return(Var);
|
1423
|
+
}
|
1424
|
+
|
1425
|
+
VALUE
|
1426
|
+
NetCDF_var_deflate_params(VALUE Var)
|
1427
|
+
{
|
1428
|
+
int ncid, varid, status;
|
1429
|
+
struct NetCDFVar *Netcdf_var;
|
1430
|
+
int shufflep, deflatep, deflate_levelp;
|
1431
|
+
VALUE sh, df, params;
|
1432
|
+
|
1433
|
+
Data_Get_Struct(Var,struct NetCDFVar,Netcdf_var);
|
1434
|
+
ncid = Netcdf_var->ncid;
|
1435
|
+
varid = Netcdf_var->varid;
|
1436
|
+
status = nc_inq_var_deflate(ncid, varid, &shufflep, &deflatep,
|
1437
|
+
&deflate_levelp);
|
1438
|
+
if(status != NC_NOERR) NC_RAISE(status);
|
1439
|
+
if (shufflep==0) {sh=Qfalse;} else {sh=Qtrue;}
|
1440
|
+
if (deflatep==0) {df=Qfalse;} else {df=Qtrue;}
|
1441
|
+
params = rb_ary_new3(3, sh, df, INT2NUM(deflate_levelp) );
|
1442
|
+
return(params);
|
1443
|
+
}
|
1444
|
+
|
1445
|
+
VALUE
|
1446
|
+
NetCDF_var_set_endian(VALUE Var, VALUE endian)
|
1447
|
+
{
|
1448
|
+
int ncid, varid, status;
|
1449
|
+
struct NetCDFVar *Netcdf_var;
|
1450
|
+
|
1451
|
+
Data_Get_Struct(Var,struct NetCDFVar,Netcdf_var);
|
1452
|
+
ncid = Netcdf_var->ncid;
|
1453
|
+
varid = Netcdf_var->varid;
|
1454
|
+
status = nc_def_var_endian(ncid, varid, NUM2INT(endian));
|
1455
|
+
if(status != NC_NOERR) NC_RAISE(status);
|
1456
|
+
return(Var);
|
1457
|
+
}
|
1458
|
+
|
1459
|
+
VALUE
|
1460
|
+
NetCDF_var_endian(VALUE Var)
|
1461
|
+
{
|
1462
|
+
int ncid, varid, status;
|
1463
|
+
struct NetCDFVar *Netcdf_var;
|
1464
|
+
int endian;
|
1465
|
+
|
1466
|
+
Data_Get_Struct(Var,struct NetCDFVar,Netcdf_var);
|
1467
|
+
ncid = Netcdf_var->ncid;
|
1468
|
+
varid = Netcdf_var->varid;
|
1469
|
+
status = nc_inq_var_endian(ncid, varid, &endian);
|
1470
|
+
if(status != NC_NOERR) NC_RAISE(status);
|
1471
|
+
return(INT2FIX(endian));
|
1472
|
+
}
|
1473
|
+
|
1474
|
+
#endif
|
1475
|
+
|
1357
1476
|
VALUE
|
1358
1477
|
NetCDF_var_id2att(VALUE Var,VALUE attnum)
|
1359
1478
|
{
|
@@ -1446,7 +1565,7 @@ NetCDF_att_copy(VALUE Att,VALUE Var_or_File)
|
|
1446
1565
|
struct Netcdf *ncfile;
|
1447
1566
|
struct NetCDFAtt *Netcdf_att_out;
|
1448
1567
|
|
1449
|
-
rb_secure(
|
1568
|
+
rb_secure(3);
|
1450
1569
|
Data_Get_Struct(Att,struct NetCDFAtt,Netcdf_att);
|
1451
1570
|
ncid_in=Netcdf_att->ncid;
|
1452
1571
|
varid_in=Netcdf_att->varid;
|
@@ -1523,7 +1642,7 @@ NetCDF_att_delete(VALUE Att)
|
|
1523
1642
|
char *c_att_name;
|
1524
1643
|
struct NetCDFAtt *Netcdf_att;
|
1525
1644
|
|
1526
|
-
rb_secure(
|
1645
|
+
rb_secure(3);
|
1527
1646
|
Data_Get_Struct(Att,struct NetCDFAtt,Netcdf_att);
|
1528
1647
|
|
1529
1648
|
ncid=Netcdf_att->ncid;
|
@@ -1545,7 +1664,7 @@ NetCDF_att_put(VALUE Att,VALUE value,VALUE atttype)
|
|
1545
1664
|
{
|
1546
1665
|
struct NetCDFAtt *ncatt;
|
1547
1666
|
|
1548
|
-
rb_secure(
|
1667
|
+
rb_secure(3);
|
1549
1668
|
Data_Get_Struct(Att,struct NetCDFAtt,ncatt);
|
1550
1669
|
return( NetCDF_put_att__(ncatt->ncid, ncatt->name, value,
|
1551
1670
|
atttype, ncatt->varid) );
|
@@ -1561,7 +1680,7 @@ NetCDF_att_get(VALUE Att)
|
|
1561
1680
|
struct NetCDFAtt *Netcdf_att;
|
1562
1681
|
nc_type xtypep;
|
1563
1682
|
size_t lenp;
|
1564
|
-
|
1683
|
+
na_shape_t attlen[1]; /* NArray uses int instead of size_t */
|
1565
1684
|
char *tp;
|
1566
1685
|
unsigned char *up;
|
1567
1686
|
short *sp;
|
@@ -1788,7 +1907,7 @@ NetCDF_var_rename(VALUE Var,VALUE var_new_name)
|
|
1788
1907
|
char *c_var_new_name;
|
1789
1908
|
struct NetCDFVar *Netcdf_var;
|
1790
1909
|
|
1791
|
-
rb_secure(
|
1910
|
+
rb_secure(3);
|
1792
1911
|
Data_Get_Struct(Var,struct NetCDFVar,Netcdf_var);
|
1793
1912
|
ncid=Netcdf_var->ncid;
|
1794
1913
|
varid=Netcdf_var->varid;
|
@@ -1937,7 +2056,7 @@ NetCDF_get_var_char(VALUE Var)
|
|
1937
2056
|
int ndimsp;
|
1938
2057
|
int *dimids;
|
1939
2058
|
size_t lengthp;
|
1940
|
-
|
2059
|
+
na_shape_t *shape; /* NArray uses int instead of size_t */
|
1941
2060
|
VALUE NArray;
|
1942
2061
|
|
1943
2062
|
Data_Get_Struct(Var,struct NetCDFVar,Netcdf_var);
|
@@ -1947,7 +2066,7 @@ NetCDF_get_var_char(VALUE Var)
|
|
1947
2066
|
if(status != NC_NOERR) NC_RAISE(status);
|
1948
2067
|
dimids = ALLOCA_N(int,ndimsp);
|
1949
2068
|
if (ndimsp != 0){
|
1950
|
-
shape = ALLOCA_N(
|
2069
|
+
shape = ALLOCA_N(na_shape_t,ndimsp);
|
1951
2070
|
for(i=0;i<ndimsp;i++){
|
1952
2071
|
status = nc_inq_vardimid(ncid,varid,dimids);
|
1953
2072
|
if(status != NC_NOERR) NC_RAISE(status);
|
@@ -1956,7 +2075,7 @@ NetCDF_get_var_char(VALUE Var)
|
|
1956
2075
|
}
|
1957
2076
|
} else {
|
1958
2077
|
ndimsp = 1;
|
1959
|
-
shape = ALLOCA_N(
|
2078
|
+
shape = ALLOCA_N(na_shape_t,1);
|
1960
2079
|
shape[0]=1;
|
1961
2080
|
}
|
1962
2081
|
|
@@ -1981,7 +2100,7 @@ NetCDF_get_var_byte(VALUE Var)
|
|
1981
2100
|
int ndimsp;
|
1982
2101
|
int *dimids;
|
1983
2102
|
size_t lengthp;
|
1984
|
-
|
2103
|
+
na_shape_t *shape; /* NArray uses int instead of size_t */
|
1985
2104
|
VALUE NArray;
|
1986
2105
|
|
1987
2106
|
Data_Get_Struct(Var,struct NetCDFVar,Netcdf_var);
|
@@ -1991,7 +2110,7 @@ NetCDF_get_var_byte(VALUE Var)
|
|
1991
2110
|
if(status != NC_NOERR) NC_RAISE(status);
|
1992
2111
|
dimids = ALLOCA_N(int,ndimsp);
|
1993
2112
|
if (ndimsp != 0){
|
1994
|
-
shape = ALLOCA_N(
|
2113
|
+
shape = ALLOCA_N(na_shape_t,ndimsp);
|
1995
2114
|
for(i=0;i<ndimsp;i++){
|
1996
2115
|
status = nc_inq_vardimid(ncid,varid,dimids);
|
1997
2116
|
if(status != NC_NOERR) NC_RAISE(status);
|
@@ -2000,7 +2119,7 @@ NetCDF_get_var_byte(VALUE Var)
|
|
2000
2119
|
}
|
2001
2120
|
} else {
|
2002
2121
|
ndimsp = 1;
|
2003
|
-
shape = ALLOCA_N(
|
2122
|
+
shape = ALLOCA_N(na_shape_t,1);
|
2004
2123
|
shape[0]=1;
|
2005
2124
|
}
|
2006
2125
|
|
@@ -2025,7 +2144,7 @@ NetCDF_get_var_sint(VALUE Var)
|
|
2025
2144
|
int ndimsp;
|
2026
2145
|
int *dimids;
|
2027
2146
|
size_t lengthp;
|
2028
|
-
|
2147
|
+
na_shape_t *shape; /* NArray uses int instead of size_t */
|
2029
2148
|
VALUE NArray;
|
2030
2149
|
|
2031
2150
|
Data_Get_Struct(Var,struct NetCDFVar,Netcdf_var);
|
@@ -2035,7 +2154,7 @@ NetCDF_get_var_sint(VALUE Var)
|
|
2035
2154
|
if(status != NC_NOERR) NC_RAISE(status);
|
2036
2155
|
dimids = ALLOCA_N(int,ndimsp);
|
2037
2156
|
if (ndimsp != 0){
|
2038
|
-
shape = ALLOCA_N(
|
2157
|
+
shape = ALLOCA_N(na_shape_t,ndimsp);
|
2039
2158
|
for(i=0;i<ndimsp;i++){
|
2040
2159
|
status = nc_inq_vardimid(ncid,varid,dimids);
|
2041
2160
|
if(status != NC_NOERR) NC_RAISE(status);
|
@@ -2044,7 +2163,7 @@ NetCDF_get_var_sint(VALUE Var)
|
|
2044
2163
|
}
|
2045
2164
|
} else {
|
2046
2165
|
ndimsp = 1;
|
2047
|
-
shape = ALLOCA_N(
|
2166
|
+
shape = ALLOCA_N(na_shape_t,1);
|
2048
2167
|
shape[0]=1;
|
2049
2168
|
}
|
2050
2169
|
|
@@ -2069,7 +2188,7 @@ NetCDF_get_var_int(VALUE Var)
|
|
2069
2188
|
int ndimsp;
|
2070
2189
|
int *dimids;
|
2071
2190
|
size_t lengthp;
|
2072
|
-
|
2191
|
+
na_shape_t *shape; /* NArray uses int instead of size_t */
|
2073
2192
|
VALUE NArray;
|
2074
2193
|
|
2075
2194
|
Data_Get_Struct(Var,struct NetCDFVar,Netcdf_var);
|
@@ -2079,7 +2198,7 @@ NetCDF_get_var_int(VALUE Var)
|
|
2079
2198
|
if(status != NC_NOERR) NC_RAISE(status);
|
2080
2199
|
dimids = ALLOCA_N(int,ndimsp);
|
2081
2200
|
if (ndimsp != 0){
|
2082
|
-
shape = ALLOCA_N(
|
2201
|
+
shape = ALLOCA_N(na_shape_t,ndimsp);
|
2083
2202
|
for(i=0;i<ndimsp;i++){
|
2084
2203
|
status = nc_inq_vardimid(ncid,varid,dimids);
|
2085
2204
|
if(status != NC_NOERR) NC_RAISE(status);
|
@@ -2088,7 +2207,7 @@ NetCDF_get_var_int(VALUE Var)
|
|
2088
2207
|
}
|
2089
2208
|
} else {
|
2090
2209
|
ndimsp = 1;
|
2091
|
-
shape = ALLOCA_N(
|
2210
|
+
shape = ALLOCA_N(na_shape_t,1);
|
2092
2211
|
shape[0]=1;
|
2093
2212
|
}
|
2094
2213
|
|
@@ -2113,7 +2232,7 @@ NetCDF_get_var_float(VALUE Var)
|
|
2113
2232
|
int ndimsp;
|
2114
2233
|
int *dimids;
|
2115
2234
|
size_t lengthp;
|
2116
|
-
|
2235
|
+
na_shape_t *shape; /* NArray uses int instead of size_t */
|
2117
2236
|
VALUE NArray;
|
2118
2237
|
|
2119
2238
|
Data_Get_Struct(Var,struct NetCDFVar,Netcdf_var);
|
@@ -2123,7 +2242,7 @@ NetCDF_get_var_float(VALUE Var)
|
|
2123
2242
|
if(status != NC_NOERR) NC_RAISE(status);
|
2124
2243
|
dimids = ALLOCA_N(int,ndimsp);
|
2125
2244
|
if (ndimsp != 0){
|
2126
|
-
shape = ALLOCA_N(
|
2245
|
+
shape = ALLOCA_N(na_shape_t,ndimsp);
|
2127
2246
|
for(i=0;i<ndimsp;i++){
|
2128
2247
|
status = nc_inq_vardimid(ncid,varid,dimids);
|
2129
2248
|
if(status != NC_NOERR) NC_RAISE(status);
|
@@ -2132,7 +2251,7 @@ NetCDF_get_var_float(VALUE Var)
|
|
2132
2251
|
}
|
2133
2252
|
} else {
|
2134
2253
|
ndimsp = 1;
|
2135
|
-
shape = ALLOCA_N(
|
2254
|
+
shape = ALLOCA_N(na_shape_t,1);
|
2136
2255
|
shape[0]=1;
|
2137
2256
|
}
|
2138
2257
|
|
@@ -2157,7 +2276,7 @@ NetCDF_get_var_double(VALUE Var)
|
|
2157
2276
|
int ndimsp;
|
2158
2277
|
int *dimids;
|
2159
2278
|
size_t lengthp;
|
2160
|
-
|
2279
|
+
na_shape_t *shape; /* NArray uses int instead of size_t */
|
2161
2280
|
VALUE NArray;
|
2162
2281
|
|
2163
2282
|
Data_Get_Struct(Var,struct NetCDFVar,Netcdf_var);
|
@@ -2167,7 +2286,7 @@ NetCDF_get_var_double(VALUE Var)
|
|
2167
2286
|
if(status != NC_NOERR) NC_RAISE(status);
|
2168
2287
|
dimids = ALLOCA_N(int,ndimsp);
|
2169
2288
|
if (ndimsp != 0){
|
2170
|
-
shape = ALLOCA_N(
|
2289
|
+
shape = ALLOCA_N(na_shape_t,ndimsp);
|
2171
2290
|
for(i=0;i<ndimsp;i++){
|
2172
2291
|
status = nc_inq_vardimid(ncid,varid,dimids);
|
2173
2292
|
if(status != NC_NOERR) NC_RAISE(status);
|
@@ -2176,7 +2295,7 @@ NetCDF_get_var_double(VALUE Var)
|
|
2176
2295
|
}
|
2177
2296
|
} else {
|
2178
2297
|
ndimsp = 1;
|
2179
|
-
shape = ALLOCA_N(
|
2298
|
+
shape = ALLOCA_N(na_shape_t,1);
|
2180
2299
|
shape[0]=1;
|
2181
2300
|
}
|
2182
2301
|
|
@@ -2198,13 +2317,12 @@ NetCDF_get_var1_char(VALUE Var,VALUE start)
|
|
2198
2317
|
unsigned char *ptr;
|
2199
2318
|
int i;
|
2200
2319
|
struct NetCDFVar *Netcdf_var;
|
2201
|
-
|
2320
|
+
na_shape_t l_start;
|
2202
2321
|
size_t *c_start;
|
2203
2322
|
int ndims;
|
2204
2323
|
int dimids[NC_MAX_DIMS];
|
2205
2324
|
size_t dimlen;
|
2206
|
-
|
2207
|
-
int nc_tlen=0;
|
2325
|
+
na_shape_t *c_count;
|
2208
2326
|
VALUE NArray;
|
2209
2327
|
|
2210
2328
|
|
@@ -2223,7 +2341,7 @@ NetCDF_get_var1_char(VALUE Var,VALUE start)
|
|
2223
2341
|
}
|
2224
2342
|
|
2225
2343
|
c_start=ALLOCA_N(size_t,ndims);
|
2226
|
-
c_count=ALLOCA_N(
|
2344
|
+
c_count=ALLOCA_N(na_shape_t,ndims);
|
2227
2345
|
for(i=0;i<ndims;i++){
|
2228
2346
|
l_start = NUM2INT(RARRAY_PTR(start)[ndims-1-i]);
|
2229
2347
|
status = nc_inq_vardimid(ncid,varid,dimids);
|
@@ -2236,7 +2354,6 @@ NetCDF_get_var1_char(VALUE Var,VALUE start)
|
|
2236
2354
|
c_start[i]=l_start;
|
2237
2355
|
|
2238
2356
|
c_count[i]=1;
|
2239
|
-
nc_tlen = 1+nc_tlen;
|
2240
2357
|
}
|
2241
2358
|
|
2242
2359
|
|
@@ -2260,13 +2377,12 @@ NetCDF_get_var1_byte(VALUE Var,VALUE start)
|
|
2260
2377
|
unsigned char *ptr;
|
2261
2378
|
int i;
|
2262
2379
|
struct NetCDFVar *Netcdf_var;
|
2263
|
-
|
2380
|
+
na_shape_t l_start;
|
2264
2381
|
size_t *c_start;
|
2265
2382
|
int ndims;
|
2266
2383
|
int dimids[NC_MAX_DIMS];
|
2267
2384
|
size_t dimlen;
|
2268
|
-
|
2269
|
-
int nc_tlen=0;
|
2385
|
+
na_shape_t *c_count;
|
2270
2386
|
VALUE NArray;
|
2271
2387
|
|
2272
2388
|
|
@@ -2285,7 +2401,7 @@ NetCDF_get_var1_byte(VALUE Var,VALUE start)
|
|
2285
2401
|
}
|
2286
2402
|
|
2287
2403
|
c_start=ALLOCA_N(size_t,ndims);
|
2288
|
-
c_count=ALLOCA_N(
|
2404
|
+
c_count=ALLOCA_N(na_shape_t,ndims);
|
2289
2405
|
for(i=0;i<ndims;i++){
|
2290
2406
|
l_start = NUM2INT(RARRAY_PTR(start)[ndims-1-i]);
|
2291
2407
|
status = nc_inq_vardimid(ncid,varid,dimids);
|
@@ -2298,7 +2414,6 @@ NetCDF_get_var1_byte(VALUE Var,VALUE start)
|
|
2298
2414
|
c_start[i]=l_start;
|
2299
2415
|
|
2300
2416
|
c_count[i]=1;
|
2301
|
-
nc_tlen = 1+nc_tlen;
|
2302
2417
|
}
|
2303
2418
|
|
2304
2419
|
|
@@ -2322,13 +2437,12 @@ NetCDF_get_var1_sint(VALUE Var,VALUE start)
|
|
2322
2437
|
short *ptr;
|
2323
2438
|
int i;
|
2324
2439
|
struct NetCDFVar *Netcdf_var;
|
2325
|
-
|
2440
|
+
na_shape_t l_start;
|
2326
2441
|
size_t *c_start;
|
2327
2442
|
int ndims;
|
2328
2443
|
int dimids[NC_MAX_DIMS];
|
2329
2444
|
size_t dimlen;
|
2330
|
-
|
2331
|
-
int nc_tlen=0;
|
2445
|
+
na_shape_t *c_count;
|
2332
2446
|
VALUE NArray;
|
2333
2447
|
|
2334
2448
|
Data_Get_Struct(Var,struct NetCDFVar,Netcdf_var);
|
@@ -2346,7 +2460,7 @@ NetCDF_get_var1_sint(VALUE Var,VALUE start)
|
|
2346
2460
|
}
|
2347
2461
|
|
2348
2462
|
c_start=ALLOCA_N(size_t,ndims);
|
2349
|
-
c_count=ALLOCA_N(
|
2463
|
+
c_count=ALLOCA_N(na_shape_t,ndims);
|
2350
2464
|
for(i=0;i<ndims;i++){
|
2351
2465
|
l_start = NUM2INT(RARRAY_PTR(start)[ndims-1-i]);
|
2352
2466
|
status = nc_inq_vardimid(ncid,varid,dimids);
|
@@ -2358,7 +2472,6 @@ NetCDF_get_var1_sint(VALUE Var,VALUE start)
|
|
2358
2472
|
}
|
2359
2473
|
c_start[i]=l_start;
|
2360
2474
|
c_count[i]=1;
|
2361
|
-
nc_tlen = nc_tlen+1;
|
2362
2475
|
}
|
2363
2476
|
|
2364
2477
|
Csint_to_NArray(NArray,ndims,c_count,ptr);
|
@@ -2380,13 +2493,12 @@ NetCDF_get_var1_int(VALUE Var,VALUE start)
|
|
2380
2493
|
int *ptr;
|
2381
2494
|
int i;
|
2382
2495
|
struct NetCDFVar *Netcdf_var;
|
2383
|
-
|
2496
|
+
na_shape_t l_start;
|
2384
2497
|
size_t *c_start;
|
2385
2498
|
int ndims;
|
2386
2499
|
int dimids[NC_MAX_DIMS];
|
2387
2500
|
size_t dimlen;
|
2388
|
-
|
2389
|
-
int nc_tlen=0;
|
2501
|
+
na_shape_t *c_count;
|
2390
2502
|
VALUE NArray;
|
2391
2503
|
|
2392
2504
|
Data_Get_Struct(Var,struct NetCDFVar,Netcdf_var);
|
@@ -2404,7 +2516,7 @@ NetCDF_get_var1_int(VALUE Var,VALUE start)
|
|
2404
2516
|
}
|
2405
2517
|
|
2406
2518
|
c_start=ALLOCA_N(size_t,ndims);
|
2407
|
-
c_count=ALLOCA_N(
|
2519
|
+
c_count=ALLOCA_N(na_shape_t,ndims);
|
2408
2520
|
for(i=0;i<ndims;i++){
|
2409
2521
|
l_start = NUM2INT(RARRAY_PTR(start)[ndims-1-i]);
|
2410
2522
|
status = nc_inq_vardimid(ncid,varid,dimids);
|
@@ -2416,7 +2528,6 @@ NetCDF_get_var1_int(VALUE Var,VALUE start)
|
|
2416
2528
|
}
|
2417
2529
|
c_start[i]=l_start;
|
2418
2530
|
c_count[i]=1;
|
2419
|
-
nc_tlen= nc_tlen+1;
|
2420
2531
|
}
|
2421
2532
|
|
2422
2533
|
Clint_to_NArray(NArray,ndims,c_count,ptr);
|
@@ -2438,13 +2549,12 @@ NetCDF_get_var1_float(VALUE Var,VALUE start)
|
|
2438
2549
|
float *ptr;
|
2439
2550
|
int i;
|
2440
2551
|
struct NetCDFVar *Netcdf_var;
|
2441
|
-
|
2552
|
+
na_shape_t l_start;
|
2442
2553
|
size_t *c_start;
|
2443
2554
|
int ndims;
|
2444
2555
|
int dimids[NC_MAX_DIMS];
|
2445
2556
|
size_t dimlen;
|
2446
|
-
|
2447
|
-
int nc_tlen=0;
|
2557
|
+
na_shape_t *c_count;
|
2448
2558
|
VALUE NArray;
|
2449
2559
|
|
2450
2560
|
Data_Get_Struct(Var,struct NetCDFVar,Netcdf_var);
|
@@ -2462,7 +2572,7 @@ NetCDF_get_var1_float(VALUE Var,VALUE start)
|
|
2462
2572
|
}
|
2463
2573
|
|
2464
2574
|
c_start=ALLOCA_N(size_t,ndims);
|
2465
|
-
c_count=ALLOCA_N(
|
2575
|
+
c_count=ALLOCA_N(na_shape_t,ndims);
|
2466
2576
|
for(i=0;i<ndims;i++){
|
2467
2577
|
l_start = NUM2INT(RARRAY_PTR(start)[ndims-1-i]);
|
2468
2578
|
status = nc_inq_vardimid(ncid, varid, dimids);
|
@@ -2474,7 +2584,6 @@ NetCDF_get_var1_float(VALUE Var,VALUE start)
|
|
2474
2584
|
}
|
2475
2585
|
c_start[i]=l_start;
|
2476
2586
|
c_count[i]=1;
|
2477
|
-
nc_tlen = nc_tlen+1;
|
2478
2587
|
}
|
2479
2588
|
|
2480
2589
|
Cfloat_to_NArray(NArray,ndims,c_count,ptr);
|
@@ -2496,13 +2605,12 @@ NetCDF_get_var1_double(VALUE Var,VALUE start)
|
|
2496
2605
|
double *ptr;
|
2497
2606
|
int i;
|
2498
2607
|
struct NetCDFVar *Netcdf_var;
|
2499
|
-
|
2608
|
+
na_shape_t l_start;
|
2500
2609
|
size_t *c_start;
|
2501
2610
|
int ndims;
|
2502
2611
|
int dimids[NC_MAX_DIMS];
|
2503
2612
|
size_t dimlen;
|
2504
|
-
|
2505
|
-
int nc_tlen=0;
|
2613
|
+
na_shape_t *c_count;
|
2506
2614
|
VALUE NArray;
|
2507
2615
|
|
2508
2616
|
Data_Get_Struct(Var,struct NetCDFVar,Netcdf_var);
|
@@ -2520,7 +2628,7 @@ NetCDF_get_var1_double(VALUE Var,VALUE start)
|
|
2520
2628
|
}
|
2521
2629
|
|
2522
2630
|
c_start=ALLOCA_N(size_t,ndims);
|
2523
|
-
c_count=ALLOCA_N(
|
2631
|
+
c_count=ALLOCA_N(na_shape_t,ndims);
|
2524
2632
|
for(i=0;i<ndims;i++){
|
2525
2633
|
l_start = NUM2INT(RARRAY_PTR(start)[ndims-1-i]);
|
2526
2634
|
status = nc_inq_vardimid(ncid,varid,dimids);
|
@@ -2532,7 +2640,6 @@ NetCDF_get_var1_double(VALUE Var,VALUE start)
|
|
2532
2640
|
}
|
2533
2641
|
c_start[i]=l_start;
|
2534
2642
|
c_count[i]=1;
|
2535
|
-
nc_tlen = nc_tlen+1;
|
2536
2643
|
}
|
2537
2644
|
|
2538
2645
|
Cdouble_to_NArray(NArray,ndims,c_count,ptr);
|
@@ -2554,14 +2661,13 @@ NetCDF_get_vars_char(VALUE Var,VALUE start,VALUE end,VALUE stride)
|
|
2554
2661
|
unsigned char *ptr;
|
2555
2662
|
int i;
|
2556
2663
|
struct NetCDFVar *Netcdf_var;
|
2557
|
-
|
2664
|
+
na_shape_t l_start, l_end;
|
2558
2665
|
size_t *c_start;
|
2559
2666
|
size_t *c_count;
|
2560
2667
|
ptrdiff_t *c_stride;
|
2561
|
-
|
2668
|
+
na_shape_t *shape; /* NArray uses int instead of size_t */
|
2562
2669
|
int ndims;
|
2563
2670
|
int *dimids;
|
2564
|
-
int nc_tlen=1;
|
2565
2671
|
size_t dimlen;
|
2566
2672
|
VALUE NArray;
|
2567
2673
|
|
@@ -2638,12 +2744,9 @@ NetCDF_get_vars_char(VALUE Var,VALUE start,VALUE end,VALUE stride)
|
|
2638
2744
|
c_count[i]=(l_end-c_start[i])/c_stride[i]+1;
|
2639
2745
|
}
|
2640
2746
|
}
|
2641
|
-
for(i=0;i<ndims;i++){
|
2642
|
-
nc_tlen = nc_tlen*c_count[i];
|
2643
|
-
}
|
2644
2747
|
|
2645
2748
|
|
2646
|
-
shape = ALLOCA_N(
|
2749
|
+
shape = ALLOCA_N(na_shape_t,ndims);
|
2647
2750
|
for(i=0;i<ndims;i++){
|
2648
2751
|
shape[ndims-1-i]=c_count[i];
|
2649
2752
|
}
|
@@ -2666,14 +2769,13 @@ NetCDF_get_vars_byte(VALUE Var,VALUE start,VALUE end,VALUE stride)
|
|
2666
2769
|
unsigned char *ptr;
|
2667
2770
|
int i;
|
2668
2771
|
struct NetCDFVar *Netcdf_var;
|
2669
|
-
|
2772
|
+
na_shape_t l_start, l_end;
|
2670
2773
|
size_t *c_start;
|
2671
2774
|
size_t *c_count;
|
2672
2775
|
ptrdiff_t *c_stride;
|
2673
|
-
|
2776
|
+
na_shape_t *shape; /* NArray uses int instead of size_t */
|
2674
2777
|
int ndims;
|
2675
2778
|
int *dimids;
|
2676
|
-
int nc_tlen=1;
|
2677
2779
|
size_t dimlen;
|
2678
2780
|
VALUE NArray;
|
2679
2781
|
|
@@ -2750,12 +2852,9 @@ NetCDF_get_vars_byte(VALUE Var,VALUE start,VALUE end,VALUE stride)
|
|
2750
2852
|
c_count[i]=(l_end-c_start[i])/c_stride[i]+1;
|
2751
2853
|
}
|
2752
2854
|
}
|
2753
|
-
for(i=0;i<ndims;i++){
|
2754
|
-
nc_tlen = nc_tlen*c_count[i];
|
2755
|
-
}
|
2756
2855
|
|
2757
2856
|
|
2758
|
-
shape = ALLOCA_N(
|
2857
|
+
shape = ALLOCA_N(na_shape_t,ndims);
|
2759
2858
|
for(i=0;i<ndims;i++){
|
2760
2859
|
shape[ndims-1-i]=c_count[i];
|
2761
2860
|
}
|
@@ -2778,14 +2877,13 @@ NetCDF_get_vars_sint(VALUE Var,VALUE start,VALUE end,VALUE stride)
|
|
2778
2877
|
short *ptr;
|
2779
2878
|
int i;
|
2780
2879
|
struct NetCDFVar *Netcdf_var;
|
2781
|
-
|
2880
|
+
na_shape_t l_start, l_end;
|
2782
2881
|
size_t *c_start;
|
2783
2882
|
size_t *c_count;
|
2784
2883
|
ptrdiff_t *c_stride;
|
2785
|
-
|
2884
|
+
na_shape_t *shape; /* NArray uses int instead of size_t */
|
2786
2885
|
int ndims;
|
2787
2886
|
int *dimids;
|
2788
|
-
int nc_tlen=1;
|
2789
2887
|
size_t dimlen;
|
2790
2888
|
VALUE NArray;
|
2791
2889
|
|
@@ -2863,11 +2961,8 @@ NetCDF_get_vars_sint(VALUE Var,VALUE start,VALUE end,VALUE stride)
|
|
2863
2961
|
}
|
2864
2962
|
}
|
2865
2963
|
|
2866
|
-
for(i=0;i<ndims;i++){
|
2867
|
-
nc_tlen = nc_tlen*c_count[i];
|
2868
|
-
}
|
2869
2964
|
|
2870
|
-
shape = ALLOCA_N(
|
2965
|
+
shape = ALLOCA_N(na_shape_t,ndims);
|
2871
2966
|
for(i=0;i<ndims;i++){
|
2872
2967
|
shape[ndims-1-i]=c_count[i];
|
2873
2968
|
}
|
@@ -2891,14 +2986,13 @@ NetCDF_get_vars_int(VALUE Var,VALUE start,VALUE end,VALUE stride)
|
|
2891
2986
|
int *ptr;
|
2892
2987
|
int i;
|
2893
2988
|
struct NetCDFVar *Netcdf_var;
|
2894
|
-
|
2989
|
+
na_shape_t l_start, l_end;
|
2895
2990
|
size_t *c_start;
|
2896
2991
|
size_t *c_count;
|
2897
2992
|
ptrdiff_t *c_stride;
|
2898
|
-
|
2993
|
+
na_shape_t *shape; /* NArray uses int instead of size_t */
|
2899
2994
|
int ndims;
|
2900
2995
|
int *dimids;
|
2901
|
-
int nc_tlen=1;
|
2902
2996
|
size_t dimlen;
|
2903
2997
|
VALUE NArray;
|
2904
2998
|
|
@@ -2976,11 +3070,8 @@ NetCDF_get_vars_int(VALUE Var,VALUE start,VALUE end,VALUE stride)
|
|
2976
3070
|
}
|
2977
3071
|
}
|
2978
3072
|
|
2979
|
-
for(i=0;i<ndims;i++){
|
2980
|
-
nc_tlen = nc_tlen*c_count[i];
|
2981
|
-
}
|
2982
3073
|
|
2983
|
-
shape = ALLOCA_N(
|
3074
|
+
shape = ALLOCA_N(na_shape_t,ndims);
|
2984
3075
|
for(i=0;i<ndims;i++){
|
2985
3076
|
shape[ndims-1-i]=c_count[i];
|
2986
3077
|
}
|
@@ -3004,14 +3095,13 @@ NetCDF_get_vars_float(VALUE Var,VALUE start,VALUE end,VALUE stride)
|
|
3004
3095
|
float *ptr;
|
3005
3096
|
int i;
|
3006
3097
|
struct NetCDFVar *Netcdf_var;
|
3007
|
-
|
3098
|
+
na_shape_t l_start, l_end;
|
3008
3099
|
size_t *c_start;
|
3009
3100
|
size_t *c_count;
|
3010
3101
|
ptrdiff_t *c_stride;
|
3011
|
-
|
3102
|
+
na_shape_t *shape; /* NArray uses int instead of size_t */
|
3012
3103
|
int ndims;
|
3013
3104
|
int *dimids;
|
3014
|
-
int nc_tlen=1;
|
3015
3105
|
size_t dimlen;
|
3016
3106
|
VALUE NArray;
|
3017
3107
|
|
@@ -3089,11 +3179,8 @@ NetCDF_get_vars_float(VALUE Var,VALUE start,VALUE end,VALUE stride)
|
|
3089
3179
|
}
|
3090
3180
|
}
|
3091
3181
|
|
3092
|
-
for(i=0;i<ndims;i++){
|
3093
|
-
nc_tlen = nc_tlen*c_count[i];
|
3094
|
-
}
|
3095
3182
|
|
3096
|
-
shape = ALLOCA_N(
|
3183
|
+
shape = ALLOCA_N(na_shape_t,ndims);
|
3097
3184
|
for(i=0;i<ndims;i++){
|
3098
3185
|
shape[ndims-1-i]=c_count[i];
|
3099
3186
|
}
|
@@ -3117,14 +3204,13 @@ NetCDF_get_vars_double(VALUE Var,VALUE start,VALUE end,VALUE stride)
|
|
3117
3204
|
double *ptr;
|
3118
3205
|
int i;
|
3119
3206
|
struct NetCDFVar *Netcdf_var;
|
3120
|
-
|
3207
|
+
na_shape_t l_start, l_end;
|
3121
3208
|
size_t *c_start;
|
3122
3209
|
size_t *c_count;
|
3123
3210
|
ptrdiff_t *c_stride;
|
3124
|
-
|
3211
|
+
na_shape_t *shape; /* NArray uses int instead of size_t */
|
3125
3212
|
int ndims;
|
3126
3213
|
int *dimids;
|
3127
|
-
int nc_tlen=1;
|
3128
3214
|
size_t dimlen;
|
3129
3215
|
VALUE NArray;
|
3130
3216
|
|
@@ -3202,11 +3288,8 @@ NetCDF_get_vars_double(VALUE Var,VALUE start,VALUE end,VALUE stride)
|
|
3202
3288
|
}
|
3203
3289
|
}
|
3204
3290
|
|
3205
|
-
for(i=0;i<ndims;i++){
|
3206
|
-
nc_tlen = nc_tlen*c_count[i];
|
3207
|
-
}
|
3208
3291
|
|
3209
|
-
shape = ALLOCA_N(
|
3292
|
+
shape = ALLOCA_N(na_shape_t,ndims);
|
3210
3293
|
for(i=0;i<ndims;i++){
|
3211
3294
|
shape[ndims-1-i]=c_count[i];
|
3212
3295
|
}
|
@@ -3228,15 +3311,15 @@ NetCDF_put_var_char(VALUE Var,VALUE NArray)
|
|
3228
3311
|
int varid;
|
3229
3312
|
int status;
|
3230
3313
|
unsigned char *ptr,scalar;
|
3231
|
-
|
3314
|
+
na_shape_t len,i=0;
|
3232
3315
|
struct NetCDFVar *Netcdf_var;
|
3233
|
-
|
3316
|
+
na_shape_t nc_tlen=1;
|
3234
3317
|
int ndimsp;
|
3235
3318
|
int dimids[NC_MAX_DIMS];
|
3236
3319
|
size_t lengthp;
|
3237
3320
|
char *var_name;
|
3238
3321
|
|
3239
|
-
rb_secure(
|
3322
|
+
rb_secure(3);
|
3240
3323
|
Data_Get_Struct(Var,struct NetCDFVar,Netcdf_var);
|
3241
3324
|
ncid=Netcdf_var->ncid;
|
3242
3325
|
varid=Netcdf_var->varid;
|
@@ -3273,15 +3356,15 @@ NetCDF_put_var_byte(VALUE Var,VALUE NArray)
|
|
3273
3356
|
int varid;
|
3274
3357
|
int status;
|
3275
3358
|
unsigned char *ptr,scalar;
|
3276
|
-
|
3359
|
+
na_shape_t len,i=0;
|
3277
3360
|
struct NetCDFVar *Netcdf_var;
|
3278
|
-
|
3361
|
+
na_shape_t nc_tlen=1;
|
3279
3362
|
int ndimsp;
|
3280
3363
|
int dimids[NC_MAX_DIMS];
|
3281
3364
|
size_t lengthp;
|
3282
3365
|
char *var_name;
|
3283
3366
|
|
3284
|
-
rb_secure(
|
3367
|
+
rb_secure(3);
|
3285
3368
|
Data_Get_Struct(Var,struct NetCDFVar,Netcdf_var);
|
3286
3369
|
ncid=Netcdf_var->ncid;
|
3287
3370
|
varid=Netcdf_var->varid;
|
@@ -3318,15 +3401,15 @@ NetCDF_put_var_short(VALUE Var,VALUE NArray)
|
|
3318
3401
|
int varid;
|
3319
3402
|
int status;
|
3320
3403
|
short *ptr,scalar;
|
3321
|
-
|
3404
|
+
na_shape_t len,i=0;
|
3322
3405
|
struct NetCDFVar *Netcdf_var;
|
3323
|
-
|
3406
|
+
na_shape_t nc_tlen=1;
|
3324
3407
|
int ndimsp;
|
3325
3408
|
int dimids[NC_MAX_DIMS];
|
3326
3409
|
size_t lengthp;
|
3327
3410
|
char *var_name;
|
3328
3411
|
|
3329
|
-
rb_secure(
|
3412
|
+
rb_secure(3);
|
3330
3413
|
Data_Get_Struct(Var,struct NetCDFVar,Netcdf_var);
|
3331
3414
|
ncid=Netcdf_var->ncid;
|
3332
3415
|
varid=Netcdf_var->varid;
|
@@ -3363,15 +3446,15 @@ NetCDF_put_var_int(VALUE Var,VALUE NArray)
|
|
3363
3446
|
int varid;
|
3364
3447
|
int status;
|
3365
3448
|
int *ptr,scalar;
|
3366
|
-
|
3449
|
+
na_shape_t len,i=0;
|
3367
3450
|
struct NetCDFVar *Netcdf_var;
|
3368
|
-
|
3451
|
+
na_shape_t nc_tlen=1;
|
3369
3452
|
int ndimsp;
|
3370
3453
|
int dimids[NC_MAX_DIMS];
|
3371
3454
|
size_t lengthp;
|
3372
3455
|
char *var_name;
|
3373
3456
|
|
3374
|
-
rb_secure(
|
3457
|
+
rb_secure(3);
|
3375
3458
|
Data_Get_Struct(Var,struct NetCDFVar,Netcdf_var);
|
3376
3459
|
ncid=Netcdf_var->ncid;
|
3377
3460
|
varid=Netcdf_var->varid;
|
@@ -3411,16 +3494,16 @@ NetCDF_put_var_float(VALUE Var,VALUE NArray)
|
|
3411
3494
|
int varid;
|
3412
3495
|
int status;
|
3413
3496
|
float *ptr,scalar;
|
3414
|
-
|
3497
|
+
na_shape_t len,i=0;
|
3415
3498
|
struct NetCDFVar *Netcdf_var;
|
3416
|
-
|
3499
|
+
na_shape_t nc_tlen=1;
|
3417
3500
|
int ndimsp;
|
3418
3501
|
int dimids[NC_MAX_DIMS];
|
3419
3502
|
size_t lengthp;
|
3420
3503
|
char *var_name;
|
3421
3504
|
|
3422
3505
|
|
3423
|
-
rb_secure(
|
3506
|
+
rb_secure(3);
|
3424
3507
|
Data_Get_Struct(Var,struct NetCDFVar,Netcdf_var);
|
3425
3508
|
ncid=Netcdf_var->ncid;
|
3426
3509
|
varid=Netcdf_var->varid;
|
@@ -3458,16 +3541,16 @@ NetCDF_put_var_double(VALUE Var,VALUE NArray)
|
|
3458
3541
|
int varid;
|
3459
3542
|
int status;
|
3460
3543
|
double *ptr,scalar;
|
3461
|
-
|
3544
|
+
na_shape_t len,i=0;
|
3462
3545
|
struct NetCDFVar *Netcdf_var;
|
3463
|
-
|
3546
|
+
na_shape_t nc_tlen=1;
|
3464
3547
|
int ndimsp;
|
3465
3548
|
int dimids[NC_MAX_DIMS];
|
3466
3549
|
size_t lengthp;
|
3467
3550
|
char *var_name;
|
3468
3551
|
|
3469
3552
|
|
3470
|
-
rb_secure(
|
3553
|
+
rb_secure(3);
|
3471
3554
|
Data_Get_Struct(Var,struct NetCDFVar,Netcdf_var);
|
3472
3555
|
ncid=Netcdf_var->ncid;
|
3473
3556
|
varid=Netcdf_var->varid;
|
@@ -3507,13 +3590,13 @@ NetCDF_put_var1_char(VALUE Var,VALUE NArray,VALUE start)
|
|
3507
3590
|
unsigned char *ptr;
|
3508
3591
|
int i;
|
3509
3592
|
struct NetCDFVar *Netcdf_var;
|
3510
|
-
|
3593
|
+
na_shape_t l_start;
|
3511
3594
|
size_t *c_start;
|
3512
3595
|
int ndims;
|
3513
3596
|
int *dimids;
|
3514
3597
|
size_t dimlen;
|
3515
3598
|
|
3516
|
-
rb_secure(
|
3599
|
+
rb_secure(3);
|
3517
3600
|
Data_Get_Struct(Var,struct NetCDFVar,Netcdf_var);
|
3518
3601
|
ncid=Netcdf_var->ncid;
|
3519
3602
|
varid=Netcdf_var->varid;
|
@@ -3558,13 +3641,13 @@ NetCDF_put_var1_byte(VALUE Var,VALUE NArray,VALUE start)
|
|
3558
3641
|
unsigned char *ptr;
|
3559
3642
|
int i;
|
3560
3643
|
struct NetCDFVar *Netcdf_var;
|
3561
|
-
|
3644
|
+
na_shape_t l_start;
|
3562
3645
|
size_t *c_start;
|
3563
3646
|
int ndims;
|
3564
3647
|
int *dimids;
|
3565
3648
|
size_t dimlen;
|
3566
3649
|
|
3567
|
-
rb_secure(
|
3650
|
+
rb_secure(3);
|
3568
3651
|
Data_Get_Struct(Var,struct NetCDFVar,Netcdf_var);
|
3569
3652
|
ncid=Netcdf_var->ncid;
|
3570
3653
|
varid=Netcdf_var->varid;
|
@@ -3609,13 +3692,13 @@ NetCDF_put_var1_sint(VALUE Var,VALUE NArray,VALUE start)
|
|
3609
3692
|
short *ptr;
|
3610
3693
|
int i;
|
3611
3694
|
struct NetCDFVar *Netcdf_var;
|
3612
|
-
|
3695
|
+
na_shape_t l_start;
|
3613
3696
|
size_t *c_start;
|
3614
3697
|
int ndims;
|
3615
3698
|
int *dimids;
|
3616
3699
|
size_t dimlen;
|
3617
3700
|
|
3618
|
-
rb_secure(
|
3701
|
+
rb_secure(3);
|
3619
3702
|
Data_Get_Struct(Var,struct NetCDFVar,Netcdf_var);
|
3620
3703
|
ncid=Netcdf_var->ncid;
|
3621
3704
|
varid=Netcdf_var->varid;
|
@@ -3659,13 +3742,13 @@ NetCDF_put_var1_int(VALUE Var,VALUE NArray,VALUE start)
|
|
3659
3742
|
int *ptr;
|
3660
3743
|
int i;
|
3661
3744
|
struct NetCDFVar *Netcdf_var;
|
3662
|
-
|
3745
|
+
na_shape_t l_start;
|
3663
3746
|
size_t *c_start;
|
3664
3747
|
int ndims;
|
3665
3748
|
int *dimids;
|
3666
3749
|
size_t dimlen;
|
3667
3750
|
|
3668
|
-
rb_secure(
|
3751
|
+
rb_secure(3);
|
3669
3752
|
Data_Get_Struct(Var,struct NetCDFVar,Netcdf_var);
|
3670
3753
|
ncid=Netcdf_var->ncid;
|
3671
3754
|
varid=Netcdf_var->varid;
|
@@ -3710,13 +3793,13 @@ NetCDF_put_var1_float(VALUE Var,VALUE NArray,VALUE start)
|
|
3710
3793
|
float *ptr;
|
3711
3794
|
int i;
|
3712
3795
|
struct NetCDFVar *Netcdf_var;
|
3713
|
-
|
3796
|
+
na_shape_t l_start;
|
3714
3797
|
size_t *c_start;
|
3715
3798
|
int ndims;
|
3716
3799
|
int *dimids;
|
3717
3800
|
size_t dimlen;
|
3718
3801
|
|
3719
|
-
rb_secure(
|
3802
|
+
rb_secure(3);
|
3720
3803
|
Data_Get_Struct(Var,struct NetCDFVar,Netcdf_var);
|
3721
3804
|
ncid=Netcdf_var->ncid;
|
3722
3805
|
varid=Netcdf_var->varid;
|
@@ -3761,13 +3844,13 @@ NetCDF_put_var1_double(VALUE Var,VALUE NArray,VALUE start)
|
|
3761
3844
|
double *ptr;
|
3762
3845
|
int i;
|
3763
3846
|
struct NetCDFVar *Netcdf_var;
|
3764
|
-
|
3847
|
+
na_shape_t l_start;
|
3765
3848
|
size_t *c_start;
|
3766
3849
|
int ndims;
|
3767
3850
|
int *dimids;
|
3768
3851
|
size_t dimlen;
|
3769
3852
|
|
3770
|
-
rb_secure(
|
3853
|
+
rb_secure(3);
|
3771
3854
|
Data_Get_Struct(Var,struct NetCDFVar,Netcdf_var);
|
3772
3855
|
ncid=Netcdf_var->ncid;
|
3773
3856
|
varid=Netcdf_var->varid;
|
@@ -3811,19 +3894,19 @@ NetCDF_put_vars_char(VALUE Var,VALUE NArray,VALUE start,VALUE end,VALUE stride)
|
|
3811
3894
|
int varid;
|
3812
3895
|
int status;
|
3813
3896
|
unsigned char *ptr,scalar;
|
3814
|
-
|
3897
|
+
na_shape_t len;
|
3815
3898
|
int c_count_all=1;
|
3816
3899
|
struct NetCDFVar *Netcdf_var;
|
3817
|
-
|
3900
|
+
na_shape_t l_start, l_end;
|
3818
3901
|
size_t *c_start;
|
3819
3902
|
size_t *c_count;
|
3820
3903
|
ptrdiff_t *c_stride;
|
3821
|
-
int ndims;
|
3822
|
-
|
3904
|
+
int ndims,i;
|
3905
|
+
na_shape_t *shape;
|
3823
3906
|
int *dimids;
|
3824
3907
|
size_t dimlen;
|
3825
3908
|
|
3826
|
-
rb_secure(
|
3909
|
+
rb_secure(3);
|
3827
3910
|
Data_Get_Struct(Var,struct NetCDFVar,Netcdf_var);
|
3828
3911
|
ncid=Netcdf_var->ncid;
|
3829
3912
|
varid=Netcdf_var->varid;
|
@@ -3917,19 +4000,19 @@ NetCDF_put_vars_byte(VALUE Var,VALUE NArray,VALUE start,VALUE end,VALUE stride)
|
|
3917
4000
|
int varid;
|
3918
4001
|
int status;
|
3919
4002
|
unsigned char *ptr,scalar;
|
3920
|
-
|
4003
|
+
na_shape_t len;
|
3921
4004
|
int c_count_all=1;
|
3922
4005
|
struct NetCDFVar *Netcdf_var;
|
3923
|
-
|
4006
|
+
na_shape_t l_start, l_end;
|
3924
4007
|
size_t *c_start;
|
3925
4008
|
size_t *c_count;
|
3926
4009
|
ptrdiff_t *c_stride;
|
3927
|
-
int ndims;
|
3928
|
-
|
4010
|
+
int ndims,i;
|
4011
|
+
na_shape_t *shape;
|
3929
4012
|
int *dimids;
|
3930
4013
|
size_t dimlen;
|
3931
4014
|
|
3932
|
-
rb_secure(
|
4015
|
+
rb_secure(3);
|
3933
4016
|
Data_Get_Struct(Var,struct NetCDFVar,Netcdf_var);
|
3934
4017
|
ncid=Netcdf_var->ncid;
|
3935
4018
|
varid=Netcdf_var->varid;
|
@@ -4023,19 +4106,19 @@ NetCDF_put_vars_sint(VALUE Var,VALUE NArray,VALUE start,VALUE end,VALUE stride)
|
|
4023
4106
|
int varid;
|
4024
4107
|
int status;
|
4025
4108
|
short *ptr,scalar;
|
4026
|
-
|
4109
|
+
na_shape_t len;
|
4027
4110
|
int c_count_all=1;
|
4028
4111
|
struct NetCDFVar *Netcdf_var;
|
4029
|
-
|
4112
|
+
na_shape_t l_start, l_end;
|
4030
4113
|
size_t *c_start;
|
4031
4114
|
size_t *c_count;
|
4032
4115
|
ptrdiff_t *c_stride;
|
4033
|
-
int ndims;
|
4034
|
-
|
4116
|
+
int ndims,i;
|
4117
|
+
na_shape_t *shape;
|
4035
4118
|
int *dimids;
|
4036
4119
|
size_t dimlen;
|
4037
4120
|
|
4038
|
-
rb_secure(
|
4121
|
+
rb_secure(3);
|
4039
4122
|
Data_Get_Struct(Var,struct NetCDFVar,Netcdf_var);
|
4040
4123
|
ncid=Netcdf_var->ncid;
|
4041
4124
|
varid=Netcdf_var->varid;
|
@@ -4130,19 +4213,19 @@ NetCDF_put_vars_int(VALUE Var,VALUE NArray,VALUE start,VALUE end,VALUE stride)
|
|
4130
4213
|
int varid;
|
4131
4214
|
int status;
|
4132
4215
|
int *ptr,scalar;
|
4133
|
-
|
4216
|
+
na_shape_t len;
|
4134
4217
|
int c_count_all=1;
|
4135
4218
|
struct NetCDFVar *Netcdf_var;
|
4136
|
-
|
4219
|
+
na_shape_t l_start, l_end;
|
4137
4220
|
size_t *c_start;
|
4138
4221
|
size_t *c_count;
|
4139
4222
|
ptrdiff_t *c_stride;
|
4140
|
-
int ndims;
|
4141
|
-
|
4223
|
+
int ndims,i;
|
4224
|
+
na_shape_t *shape;
|
4142
4225
|
int *dimids;
|
4143
4226
|
size_t dimlen;
|
4144
4227
|
|
4145
|
-
rb_secure(
|
4228
|
+
rb_secure(3);
|
4146
4229
|
Data_Get_Struct(Var,struct NetCDFVar,Netcdf_var);
|
4147
4230
|
ncid=Netcdf_var->ncid;
|
4148
4231
|
varid=Netcdf_var->varid;
|
@@ -4237,19 +4320,19 @@ NetCDF_put_vars_float(VALUE Var,VALUE NArray,VALUE start,VALUE end,VALUE stride)
|
|
4237
4320
|
int varid;
|
4238
4321
|
int status;
|
4239
4322
|
float *ptr,scalar;
|
4240
|
-
|
4323
|
+
na_shape_t len;
|
4241
4324
|
int c_count_all=1;
|
4242
4325
|
struct NetCDFVar *Netcdf_var;
|
4243
|
-
|
4326
|
+
na_shape_t l_start, l_end;
|
4244
4327
|
size_t *c_start;
|
4245
4328
|
size_t *c_count;
|
4246
4329
|
ptrdiff_t *c_stride;
|
4247
|
-
int ndims;
|
4248
|
-
|
4330
|
+
int ndims,i;
|
4331
|
+
na_shape_t *shape;
|
4249
4332
|
int *dimids;
|
4250
4333
|
size_t dimlen;
|
4251
4334
|
|
4252
|
-
rb_secure(
|
4335
|
+
rb_secure(3);
|
4253
4336
|
Data_Get_Struct(Var,struct NetCDFVar,Netcdf_var);
|
4254
4337
|
ncid=Netcdf_var->ncid;
|
4255
4338
|
varid=Netcdf_var->varid;
|
@@ -4344,19 +4427,19 @@ NetCDF_put_vars_double(VALUE Var,VALUE NArray,VALUE start,VALUE end,VALUE stride
|
|
4344
4427
|
int varid;
|
4345
4428
|
int status;
|
4346
4429
|
double *ptr,scalar;
|
4347
|
-
|
4430
|
+
na_shape_t len;
|
4348
4431
|
int c_count_all=1;
|
4349
4432
|
struct NetCDFVar *Netcdf_var;
|
4350
|
-
|
4433
|
+
na_shape_t l_start, l_end;
|
4351
4434
|
size_t *c_start;
|
4352
4435
|
size_t *c_count;
|
4353
4436
|
ptrdiff_t *c_stride;
|
4354
|
-
int ndims;
|
4355
|
-
|
4437
|
+
int ndims,i;
|
4438
|
+
na_shape_t *shape;
|
4356
4439
|
int *dimids;
|
4357
4440
|
size_t dimlen;
|
4358
4441
|
|
4359
|
-
rb_secure(
|
4442
|
+
rb_secure(3);
|
4360
4443
|
Data_Get_Struct(Var,struct NetCDFVar,Netcdf_var);
|
4361
4444
|
ncid=Netcdf_var->ncid;
|
4362
4445
|
varid=Netcdf_var->varid;
|
@@ -4498,9 +4581,27 @@ Init_netcdfraw(void)
|
|
4498
4581
|
rb_define_const(cNetCDF, "NC_SHARE", INT2FIX(NC_SHARE));
|
4499
4582
|
rb_define_const(cNetCDF, "NC_CLOBBER", INT2FIX(NC_CLOBBER));
|
4500
4583
|
rb_define_const(cNetCDF, "NC_NOCLOBBER", INT2FIX(NC_NOCLOBBER));
|
4584
|
+
#if NCVER >= 400
|
4585
|
+
rb_define_const(cNetCDF, "NC_64BIT_OFFSET", INT2FIX(NC_64BIT_OFFSET));
|
4586
|
+
/* NC_64BIT_OFFSET supports large files in the class data format */
|
4587
|
+
rb_define_const(cNetCDF, "NC_NETCDF4", INT2FIX(NC_NETCDF4));
|
4588
|
+
rb_define_const(cNetCDF, "NC_CLASSIC_MODEL", INT2FIX(NC_CLASSIC_MODEL));
|
4589
|
+
/* for use as ( NC_NETCDF4 | NC_CLASSIC_MODEL ) to ensure the classic
|
4590
|
+
data model in NetCDF4 by disabling new features like groups */
|
4591
|
+
rb_define_const(cNetCDF, "NC_ENDIAN_NATIVE", INT2FIX(NC_ENDIAN_NATIVE));
|
4592
|
+
rb_define_const(cNetCDF, "NC_ENDIAN_LITTLE", INT2FIX(NC_ENDIAN_LITTLE));
|
4593
|
+
rb_define_const(cNetCDF, "NC_ENDIAN_BIG", INT2FIX(NC_ENDIAN_BIG));
|
4594
|
+
#endif
|
4595
|
+
|
4596
|
+
#ifdef NARRAY_BIGMEM
|
4597
|
+
rb_define_const(cNetCDF, "SUPPORT_BIGMEM", Qtrue);
|
4598
|
+
#else
|
4599
|
+
rb_define_const(cNetCDF, "SUPPORT_BIGMEM", Qfalse);
|
4600
|
+
#endif
|
4501
4601
|
|
4502
4602
|
/* Difinitions of the ruby methods */
|
4503
4603
|
/* The methods of the NetCDF class */
|
4604
|
+
rb_define_singleton_method(cNetCDF,"libvers",NetCDF_inq_libvers,0);
|
4504
4605
|
rb_define_singleton_method(cNetCDF,"nc_open",NetCDF_open,2);
|
4505
4606
|
rb_define_method(cNetCDF,"clone",NetCDF_clone,0);
|
4506
4607
|
rb_define_method(cNetCDF,"close",NetCDF_close,0);
|
@@ -4551,6 +4652,12 @@ Init_netcdfraw(void)
|
|
4551
4652
|
rb_define_method(cNetCDFAtt,"get",NetCDF_att_get,0);
|
4552
4653
|
|
4553
4654
|
/* The methods of the NetCDFVar class */
|
4655
|
+
#if NCVER >= 400
|
4656
|
+
rb_define_method(cNetCDFVar,"deflate",NetCDF_var_deflate,-1);
|
4657
|
+
rb_define_method(cNetCDFVar,"deflate_params",NetCDF_var_deflate_params,0);
|
4658
|
+
rb_define_method(cNetCDFVar,"endian=",NetCDF_var_set_endian,1);
|
4659
|
+
rb_define_method(cNetCDFVar,"endian",NetCDF_var_endian,0);
|
4660
|
+
#endif
|
4554
4661
|
rb_define_method(cNetCDFVar,"clone",NetCDF_var_clone,0);
|
4555
4662
|
rb_define_method(cNetCDFVar,"name",NetCDF_var_inq_name,0);
|
4556
4663
|
rb_define_method(cNetCDFVar,"ndims",NetCDF_var_ndims,0);
|