gmt 0.2.1 → 0.2.4

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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/ext/gmt/gmt.c +49 -6
  3. data/lib/gmt.rb +6 -0
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 022e26f3ae09a259ba342cab4ed53d469ce9adba239cb1d6def587c383537293
4
- data.tar.gz: 18a9d16c538a093b3cd1d4daa6e48861f15b8d6687b7dea63eda45d688c42767
3
+ metadata.gz: 47175ab0f9f220eec500e98bb1b392ec93ae42b61e13c851bae392a0dd4d9d08
4
+ data.tar.gz: 0f24492604a31c82461d730be0afbc508849ff757939ac99596020f8ffe0c6f7
5
5
  SHA512:
6
- metadata.gz: 0d5edbe55be22cdfeb039bfa8cdd91d20fc067c300546a60f5a72e51bba1e602b78067ae035cc1cc68826afbd6bdc1348f815c44308532597b5bad3785b0a874
7
- data.tar.gz: 80d956f883d259d96f81c46b2f99e8c0463ee6f37a96f1f7b9fbf9e664deedba0dada8194bf48b0ca4d747f04f0f85f63b24c09acfeb3cf1ee0153aad487086e
6
+ metadata.gz: 7fb19342fb1e3480531f02e1d9ca34203791820952c2d683d5294af027a5f9cc8205f9f2ed07fa452b7a0f9bb4dd51b9bafe36e7b08934e745fea6410cfb4c30
7
+ data.tar.gz: 8e59daf96977b38a4498c7934d04ec302c7044a50af43e07ad36118742c87070d1d1eb268578f4c3a17c41a3c04912d3db1afd849b0e16d96cce98b7b13f9172
data/ext/gmt/gmt.c CHANGED
@@ -1,4 +1,6 @@
1
1
  #include <ruby.h>
2
+ #include <ruby/version.h>
3
+
2
4
  #include <gmt.h>
3
5
  #include <gmt_version.h>
4
6
 
@@ -27,6 +29,26 @@ static void raise_if_error(int err, const char *module)
27
29
  rb_raise(rb_eRuntimeError, "failed call to GMT module %s", module);
28
30
  }
29
31
 
32
+ static void gmt_free(void*);
33
+
34
+ static rb_data_type_t data_type = {
35
+ .wrap_struct_name = "ruby-gmt-wrap",
36
+ .function = {
37
+ .dmark = NULL,
38
+ .dfree = gmt_free,
39
+ .dsize = NULL,
40
+ #if RUBY_API_VERSION_CODE < 20700
41
+ .reserved = { NULL, NULL }
42
+ #else
43
+ .dcompact = NULL,
44
+ .reserved = { NULL }
45
+ #endif
46
+ },
47
+ .parent = NULL,
48
+ .data = NULL,
49
+ .flags = RUBY_TYPED_FREE_IMMEDIATELY
50
+ };
51
+
30
52
  /* ruby object interface */
31
53
 
32
54
  static void gmt_free(void *p)
@@ -38,13 +60,18 @@ static void gmt_free(void *p)
38
60
  GMT_Destroy_Session(gmt->session);
39
61
  gmt->session = NULL;
40
62
  }
63
+
64
+ free(gmt);
41
65
  }
42
66
 
43
- static VALUE gmt_alloc(VALUE klass)
67
+ static VALUE gmt_alloc(VALUE cls)
44
68
  {
45
69
  gmt_t *gmt;
46
70
 
47
- VALUE obj = Data_Make_Struct(klass, gmt_t, NULL, gmt_free, gmt);
71
+ if ((gmt = malloc(sizeof(gmt_t))) == NULL)
72
+ rb_raise(rb_eNoMemError, "failed to alloc GMT struct");
73
+
74
+ VALUE obj = TypedData_Wrap_Struct(cls, &data_type, gmt);
48
75
 
49
76
  gmt->session = NULL;
50
77
 
@@ -55,7 +82,7 @@ static VALUE gmt_init(VALUE self)
55
82
  {
56
83
  gmt_t *gmt;
57
84
 
58
- Data_Get_Struct(self, gmt_t, gmt);
85
+ TypedData_Get_Struct(self, gmt_t, &data_type, gmt);
59
86
 
60
87
  gmt->session =
61
88
  GMT_Create_Session("Session name", 2, 0, NULL);
@@ -70,7 +97,7 @@ static VALUE gmt_release(VALUE self)
70
97
  {
71
98
  gmt_t *gmt;
72
99
 
73
- Data_Get_Struct(self, gmt_t, gmt);
100
+ TypedData_Get_Struct(self, gmt_t, &data_type, gmt);
74
101
 
75
102
  if (gmt->session)
76
103
  {
@@ -89,7 +116,7 @@ static VALUE gmt_simple(const char *name, int argc, VALUE *argv, VALUE self)
89
116
  rb_scan_args(argc, argv, "*1", &files, &opts);
90
117
 
91
118
  gmt_t *gmt;
92
- Data_Get_Struct(self, gmt_t, gmt);
119
+ TypedData_Get_Struct(self, gmt_t, &data_type, gmt);
93
120
  raise_unless_class_data(gmt);
94
121
 
95
122
  void *session = gmt->session;
@@ -114,7 +141,7 @@ static VALUE gmt_simple(const char *name, int argc, VALUE *argv, VALUE self)
114
141
 
115
142
  The "modern mode" modules (which have a slicker way of routing and
116
143
  combining postscript output) will probably need a different treatment,
117
- possibly a more attractive on from the Ruby perspective; for now we
144
+ possibly a more attractive one from the Ruby perspective; for now we
118
145
  just limit ourselves to the classic mode.
119
146
  */
120
147
 
@@ -203,6 +230,10 @@ GMT_FUN(gmtinfo)
203
230
  GMT_FUN(gmtset)
204
231
  GMT_FUN(grdinfo)
205
232
 
233
+ #if API_AT_LEAST(6, 3, 0)
234
+ GMT_FUN(grdselect)
235
+ #endif
236
+
206
237
  /* Mathematical operations on tables or grids */
207
238
 
208
239
  GMT_FUN(gmtmath)
@@ -233,6 +264,10 @@ GMT_FUN(grd2kml)
233
264
  GMT_FUN(grd2rgb) /* https://github.com/GenericMappingTools/gmt/pull/425 */
234
265
  #endif
235
266
 
267
+ #if API_AT_LEAST(6, 2, 0)
268
+ GMT_FUN(gmtbinstats)
269
+ #endif
270
+
236
271
  /* trends in 1-D and 2-D data */
237
272
 
238
273
  GMT_FUN(fitcircle)
@@ -366,6 +401,10 @@ void Init_gmt(void)
366
401
  RB_DPM(gmtset);
367
402
  RB_DPM(grdinfo);
368
403
 
404
+ #if API_AT_LEAST(6, 3, 0)
405
+ RB_DPM(grdselect);
406
+ #endif
407
+
369
408
  /* Mathematical operations on tables or grids */
370
409
 
371
410
  RB_DPM(gmtmath);
@@ -377,6 +416,10 @@ void Init_gmt(void)
377
416
 
378
417
  /* Convert or extract subsets of data */
379
418
 
419
+ #if API_AT_LEAST(6, 2, 0)
420
+ RB_DPM(gmtbinstats);
421
+ #endif
422
+
380
423
  RB_DPM(gmtconnect);
381
424
  RB_DPM(gmtconvert);
382
425
  RB_DPM(gmtselect);
data/lib/gmt.rb CHANGED
@@ -402,6 +402,9 @@ class GMT
402
402
  # Get information about grid files
403
403
  wrapper_other :grdinfo
404
404
 
405
+ # Make selections or determine common regions from 2-D grids, images or 3-D cubes
406
+ wrapper_other :grdselect
407
+
405
408
 
406
409
  # @!group Mathematical operations on tables or grids
407
410
 
@@ -426,6 +429,9 @@ class GMT
426
429
 
427
430
  # @!group Convert or extract subsets of data
428
431
 
432
+ # Bin spatial data and determine statistics per bin
433
+ wrapper_other :gmtbinstats
434
+
429
435
  # Connect segments into more complete lines or polygons
430
436
  wrapper_other :gmtconnect
431
437
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gmt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - J.J. Green
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-01-18 00:00:00.000000000 Z
11
+ date: 2022-09-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler