rb-grib 0.3.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ext/extconf.rb +43 -9
- data/ext/grib.c +16 -8
- data/lib/numru/grib.rb +18 -0
- data/lib/numru/grib/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4d18ea1987ea7a51327997b6217d551a007fbf70
|
4
|
+
data.tar.gz: 1c1e66d6f85bd72655c31a29d39bbf51240783e3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 87952a90b57f7d670d03515e6422df16a742d9467ff05dab50fff6206fba3492ca7b568437338576ade22f9c1d2e6bc387c63bc7ecb5598a8c849d82c5b27b01
|
7
|
+
data.tar.gz: a9c17bbc6050b4c0e66cadb2748dd742e08eff5ab86c69de8a1ca38dc1dda011711100038a07301d8cdeb811929eb14b9af7beb112a5afb81309a8b0a605b3e0
|
data/ext/extconf.rb
CHANGED
@@ -1,23 +1,57 @@
|
|
1
1
|
require "mkmf"
|
2
2
|
|
3
|
+
na_path = RbConfig::CONFIG["sitearchdir"]
|
3
4
|
begin
|
4
5
|
require "rubygems"
|
6
|
+
gem = true
|
7
|
+
rescue LoadError
|
8
|
+
gem = false
|
9
|
+
end
|
10
|
+
if gem
|
11
|
+
if ( na_type = ENV["NARRAY_TYPE"] )
|
12
|
+
nas = [na_type]
|
13
|
+
else
|
14
|
+
nas = %w(narray numru-narray)
|
15
|
+
end
|
5
16
|
if Gem::Specification.respond_to?(:find_by_name)
|
6
|
-
|
7
|
-
|
17
|
+
nas.each do |na|
|
18
|
+
begin
|
19
|
+
if ( spec = Gem::Specification.find_by_name(na) )
|
20
|
+
na_type = na
|
21
|
+
na_path = spec.full_gem_path
|
22
|
+
case na_type
|
23
|
+
when "narray"
|
24
|
+
na_path = File.join(na_path, "src")
|
25
|
+
when "numru-narray"
|
26
|
+
na_path = File.join(na_path, "ext", "numru", "narray")
|
27
|
+
end
|
28
|
+
break
|
29
|
+
end
|
30
|
+
rescue LoadError
|
31
|
+
end
|
8
32
|
end
|
9
33
|
else
|
10
|
-
|
11
|
-
|
34
|
+
nas.each do |na|
|
35
|
+
if ( spec = Gem.source_index.find_name(na) ).any?
|
36
|
+
na_type = na
|
37
|
+
na_path = spec[0].full_gem_path
|
38
|
+
case na_type
|
39
|
+
when "narray"
|
40
|
+
na_path = File.join(na_path, "src")
|
41
|
+
when "numru-narray"
|
42
|
+
na_path = File.join(na_path, "ext", "numru", "narray")
|
43
|
+
end
|
44
|
+
break
|
45
|
+
end
|
12
46
|
end
|
13
47
|
end
|
14
|
-
gem_path = File.join(gem_path, "ext", "numru", "narray")
|
15
|
-
rescue LoadError
|
16
|
-
dir_config("narray", RbConfig::CONFIG["sitearchdir"])
|
17
48
|
end
|
18
49
|
|
19
|
-
|
20
|
-
|
50
|
+
dir_config("narray", na_path, na_path)
|
51
|
+
unless have_header("narray.h")
|
52
|
+
$stderr.print "narray.h does not found. Specify the path.\n"
|
53
|
+
$stderr.print "e.g., gem install rb-grib -- --with-narray-include=path\n"
|
54
|
+
exit(-1)
|
21
55
|
end
|
22
56
|
|
23
57
|
dir_config("grib_api")
|
data/ext/grib.c
CHANGED
@@ -10,11 +10,13 @@ typedef int na_shape_t;
|
|
10
10
|
|
11
11
|
#define MAX_VALUE_LENGTH 1024
|
12
12
|
|
13
|
+
#define CHECK_ERROR(func) raise_error(func, #func)
|
14
|
+
|
13
15
|
// error check
|
14
16
|
static void
|
15
|
-
|
17
|
+
raise_error(int code, const char* func)
|
16
18
|
{
|
17
|
-
if (code) rb_raise(rb_eRuntimeError, "%s", grib_get_error_message(code));
|
19
|
+
if (code) rb_raise(rb_eRuntimeError, "grib-api function failed:\n function: %s\n message: %s", func, grib_get_error_message(code));
|
18
20
|
};
|
19
21
|
|
20
22
|
|
@@ -245,7 +247,7 @@ push_msg_var(var_list **pvar, grib_handle *handle, VALUE file)
|
|
245
247
|
|
246
248
|
len = MAX_VALUE_LENGTH;
|
247
249
|
bzero(vname, len);
|
248
|
-
|
250
|
+
CHECK_ERROR(grib_get_string(handle, "typeOfLevel", vname, &len));
|
249
251
|
if (strcmp(vname, "unknown")==0 || strcmp(vname,"isobaricInhPa")== 0 || strcmp(vname,"pl")==0)
|
250
252
|
strcpy(var_new->ltype, vname);
|
251
253
|
else {
|
@@ -405,7 +407,7 @@ rg_file_initialize(int argc, VALUE *argv, VALUE self)
|
|
405
407
|
grib_handle *handle;
|
406
408
|
var_list *var = NULL;
|
407
409
|
while ((handle = grib_handle_new_from_file(0, file, &error))) {
|
408
|
-
|
410
|
+
raise_error(error, "grib_handle_new_from_file(0, file, &error)");
|
409
411
|
if (handle == NULL)
|
410
412
|
rb_raise(rb_eRuntimeError, "unable to create handle in %s", fname);
|
411
413
|
push_msg_var(&var, handle, self);
|
@@ -673,14 +675,14 @@ rg_message_get_value(int argc, VALUE *argv, VALUE self)
|
|
673
675
|
len = MAX_VALUE_LENGTH;
|
674
676
|
bzero(value, len);
|
675
677
|
if (grib_get_string(message->handle, name, value, &len) == GRIB_SUCCESS) {
|
676
|
-
|
678
|
+
CHECK_ERROR(grib_get_long(message->handle, name, &l));
|
677
679
|
if (atol(value) == l)
|
678
680
|
ret = LONG2NUM(l);
|
679
681
|
else
|
680
682
|
ret = rb_str_new2(value);
|
681
683
|
}
|
682
684
|
} else {
|
683
|
-
|
685
|
+
CHECK_ERROR(grib_get_long(message->handle, name, &l));
|
684
686
|
ret = LONG2NUM(l);
|
685
687
|
}
|
686
688
|
} else {
|
@@ -727,9 +729,9 @@ rg_message_get_data(VALUE self)
|
|
727
729
|
Data_Get_Struct(self, rg_message, message);
|
728
730
|
int error;
|
729
731
|
grib_iterator *iter = grib_iterator_new(message->handle, 0, &error);
|
730
|
-
|
732
|
+
raise_error(error, "grib_iterator_new(message->handle, 0, &error);");
|
731
733
|
long np;
|
732
|
-
|
734
|
+
CHECK_ERROR(grib_get_long(message->handle, "numberOfPoints", &np));
|
733
735
|
double *lon, *lat, *value;
|
734
736
|
VALUE na_lon, na_lat, na_value;
|
735
737
|
struct NARRAY *nary;
|
@@ -808,4 +810,10 @@ void Init_grib()
|
|
808
810
|
|
809
811
|
rb_define_const(cGrib, "KEYS_ITERATOR_ALL_KEYS", ULONG2NUM(GRIB_KEYS_ITERATOR_ALL_KEYS));
|
810
812
|
rb_define_const(cGrib, "KEYS_ITERATOR_SKIP_READ_ONLY", ULONG2NUM(GRIB_KEYS_ITERATOR_SKIP_READ_ONLY));
|
813
|
+
|
814
|
+
#ifdef NARRAY_BIGMEM
|
815
|
+
rb_define_const(cGrib, "SUPPORT_BIGMEM", Qtrue);
|
816
|
+
#else
|
817
|
+
rb_define_const(cGrib, "SUPPORT_BIGMEM", Qfalse);
|
818
|
+
#endif
|
811
819
|
}
|
data/lib/numru/grib.rb
CHANGED
@@ -4,3 +4,21 @@ require "numru/grib/setenv.rb"
|
|
4
4
|
require "numru/grib/version.rb"
|
5
5
|
require "numru/grib.so"
|
6
6
|
require "numru/grib/grib.rb"
|
7
|
+
|
8
|
+
if defined?(NumRu::NArray)
|
9
|
+
unless NumRu::Grib::SUPPORT_BIGMEM
|
10
|
+
$stderr.print <<EOM
|
11
|
+
rb-grib was compiled with NArray but NumRu::NArray is used.
|
12
|
+
Check and use consistent narray!
|
13
|
+
EOM
|
14
|
+
raise LoadError, "failed to load rb-grib"
|
15
|
+
end
|
16
|
+
else
|
17
|
+
if NumRu::Grib::SUPPORT_BIGMEM
|
18
|
+
$stderr.print <<EOM
|
19
|
+
rb-grib was compiled with NumRu::NArray but NArray is used.
|
20
|
+
Check and use consistent narray!
|
21
|
+
EOM
|
22
|
+
raise LoadError, "failed to load rb-grib"
|
23
|
+
end
|
24
|
+
end
|
data/lib/numru/grib/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rb-grib
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Seiya Nishizawa
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-08-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|