librtree 0.8.2 → 0.8.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/ext/rtree/rtree.c +41 -71
  3. metadata +5 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9f559b211be3e93ded31a86b61c68ea28cdea151ef62d0c64a79aa38131fa5a7
4
- data.tar.gz: 7df99f8990a461d60e2276a20891be62c1dc27e6279a2226f2fec6d63d30f5dd
3
+ metadata.gz: a175d9b929078c0a8d94c7adbb7af7eb728acda5a401a99f95504fa30f129470
4
+ data.tar.gz: c5042bd9893f64c112d3940d549fa9dde8503121ced5507ddf2392840950aac0
5
5
  SHA512:
6
- metadata.gz: d6c204e2ba3a7b26fe2ab8ba1148b159a21cc697061d672fa2ccff85924dc56c2a9f19b6241d68e5ec96e3b5f955ffc617ecfc26bc9db94cb0f2190e3178e693
7
- data.tar.gz: c831af24c76a719bfae623a5b525840cf910065426833589d8c04160524e576daf4ad13daf2793387931599187ad80f6bc596aaf21b72334e5230a449cda818d
6
+ metadata.gz: c106ef413a5d28068882ce4c9a24d9d1cb7124b925722915482d59809fdb71b556326e6bca3ebc1fcb9191edb9d799a6233054ae417e9f3c8d3ae5f871057c08
7
+ data.tar.gz: b14066ff0a21bfea29efb91fd52018906358b2ef6eb9ba9337869af62a4be4f2e17b6686f7788fda038b96015630b0b005d0c0a9133899b96e163ac630e49c7d
data/ext/rtree/rtree.c CHANGED
@@ -6,29 +6,20 @@
6
6
  #include <errno.h>
7
7
  #include <stdint.h>
8
8
 
9
- typedef struct
10
- {
11
- rtree_t *rtree;
12
- } lrt_t;
13
-
14
9
  static void lrt_free(void *p)
15
10
  {
16
- lrt_t *lrt = p;
17
-
18
- if (lrt->rtree)
19
- {
20
- rtree_destroy(lrt->rtree);
21
- lrt->rtree = NULL;
22
- }
11
+ rtree_t *rtree = p;
12
+ rtree_destroy(rtree);
23
13
  }
24
14
 
25
15
  static VALUE lrt_alloc(VALUE cls)
26
16
  {
27
- lrt_t *lrt;
28
- VALUE obj = Data_Make_Struct(cls, lrt_t, NULL, lrt_free, lrt);
17
+ rtree_t *rtree;;
29
18
 
30
- lrt->rtree = NULL;
19
+ if ((rtree = rtree_alloc()) == NULL)
20
+ rb_raise(rb_eNoMemError, "failed to alloc rtree");
31
21
 
22
+ VALUE obj = Data_Wrap_Struct(cls, NULL, lrt_free, rtree);
32
23
  return obj;
33
24
  }
34
25
 
@@ -40,31 +31,28 @@ static VALUE lrt_init(VALUE self, VALUE dim_obj, VALUE flags_obj)
40
31
  Check_Type(dim_obj, T_FIXNUM);
41
32
  state_flags_t flags = FIX2UINT(flags_obj);
42
33
 
43
- lrt_t *lrt;
44
- Data_Get_Struct(self, lrt_t, lrt);
34
+ rtree_t *rtree;
35
+ Data_Get_Struct(self, rtree_t, rtree);
45
36
 
46
- if ((lrt->rtree = rtree_new(dim, flags)) == NULL)
47
- rb_raise(rb_eNoMemError, "failed to create rtree");
37
+ if ((rtree_init(rtree, dim, flags)) != 0)
38
+ rb_raise(rb_eNoMemError, "failed to init rtree");
48
39
 
49
40
  return self;
50
41
  }
51
42
 
52
43
  static VALUE lrt_release(VALUE self)
53
44
  {
54
- lrt_t *lrt;
55
- Data_Get_Struct(self, lrt_t, lrt);
56
-
57
- free(lrt->rtree);
58
-
45
+ rtree_t *rtree;
46
+ Data_Get_Struct(self, rtree_t, rtree);
47
+ rtree_destroy(rtree);
59
48
  return self;
60
49
  }
61
50
 
62
51
  static VALUE lrt_height(VALUE self)
63
52
  {
64
- lrt_t *lrt;
65
- Data_Get_Struct(self, lrt_t, lrt);
66
-
67
- return INT2NUM(rtree_height(lrt->rtree));
53
+ rtree_t *rtree;
54
+ Data_Get_Struct(self, rtree_t, rtree);
55
+ return INT2NUM(rtree_height(rtree));
68
56
  }
69
57
 
70
58
  static VALUE lrt_add_rect(VALUE self, VALUE id_obj, VALUE coord_obj)
@@ -72,11 +60,9 @@ static VALUE lrt_add_rect(VALUE self, VALUE id_obj, VALUE coord_obj)
72
60
  Check_Type(coord_obj, T_ARRAY);
73
61
  Check_Type(id_obj, T_FIXNUM);
74
62
 
75
- lrt_t *lrt;
76
- Data_Get_Struct(self, lrt_t, lrt);
63
+ rtree_t *rtree;
64
+ Data_Get_Struct(self, rtree_t, rtree);
77
65
 
78
- rtree_t
79
- *rtree = lrt->rtree;
80
66
  rtree_id_t
81
67
  id = FIX2ULONG(id_obj);
82
68
  size_t
@@ -132,11 +118,10 @@ static VALUE lrt_update(VALUE self)
132
118
  if (!rb_block_given_p())
133
119
  rb_raise(rb_eArgError, "Expected block");
134
120
 
135
- lrt_t *lrt;
136
- Data_Get_Struct(self, lrt_t, lrt);
137
- rtree_t *rtree = lrt->rtree;
138
- size_t len = 2 * state_dims(rtree->state);
121
+ rtree_t *rtree;
122
+ Data_Get_Struct(self, rtree_t, rtree);
139
123
 
124
+ size_t len = 2 * state_dims(rtree->state);
140
125
  int err = rtree_update(rtree, update_cb, &len);
141
126
 
142
127
  if (err != 0)
@@ -169,11 +154,9 @@ static VALUE lrt_search(VALUE self, VALUE coord_obj)
169
154
 
170
155
  Check_Type(coord_obj, T_ARRAY);
171
156
 
172
- lrt_t *lrt;
173
- Data_Get_Struct(self, lrt_t, lrt);
157
+ rtree_t *rtree;
158
+ Data_Get_Struct(self, rtree_t, rtree);
174
159
 
175
- rtree_t
176
- *rtree = lrt->rtree;
177
160
  size_t
178
161
  len = RARRAY_LEN(coord_obj),
179
162
  dim = state_dims(rtree->state);
@@ -215,10 +198,7 @@ static VALUE deserialise(VALUE cls, VALUE io_obj, deserialise_t *f)
215
198
  rb_raise(rb_eRuntimeError, "Failed read from stream");
216
199
  }
217
200
 
218
- lrt_t *lrt;
219
- VALUE obj = Data_Make_Struct(cls, lrt_t, NULL, lrt_free, lrt);
220
-
221
- lrt->rtree = rtree;
201
+ VALUE obj = Data_Wrap_Struct(cls, NULL, lrt_free, rtree);
222
202
 
223
203
  return obj;
224
204
  }
@@ -259,10 +239,7 @@ static VALUE lrt_csv_read(VALUE cls,
259
239
  rb_raise(rb_eRuntimeError, "Failed read from stream");
260
240
  }
261
241
 
262
- lrt_t *lrt;
263
- VALUE obj = Data_Make_Struct(cls, lrt_t, NULL, lrt_free, lrt);
264
-
265
- lrt->rtree = rtree;
242
+ VALUE obj = Data_Wrap_Struct(cls, NULL, lrt_free, rtree);
266
243
 
267
244
  return obj;
268
245
  }
@@ -281,9 +258,8 @@ static VALUE serialise(VALUE self, VALUE io_obj, serialise_t *f)
281
258
  rb_io_check_writable(io);
282
259
  FILE *fp = rb_io_stdio_file(io);
283
260
 
284
- lrt_t *lrt;
285
- Data_Get_Struct(self, lrt_t, lrt);
286
- rtree_t *rtree = lrt->rtree;
261
+ rtree_t *rtree;
262
+ Data_Get_Struct(self, rtree_t, rtree);
287
263
 
288
264
  int err = f(rtree, fp);
289
265
  if (err != 0)
@@ -304,12 +280,10 @@ static VALUE lrt_bsrt_write(VALUE self, VALUE io_obj)
304
280
 
305
281
  static VALUE lrt_identical(VALUE self, VALUE other)
306
282
  {
307
- lrt_t *lrt_self, *lrt_other;
308
- Data_Get_Struct(self, lrt_t, lrt_self);
309
- Data_Get_Struct(other, lrt_t, lrt_other);
310
- rtree_t
311
- *rtree_self = lrt_self->rtree,
312
- *rtree_other = lrt_other->rtree;
283
+ rtree_t *rtree_self, *rtree_other;
284
+
285
+ Data_Get_Struct(self, rtree_t, rtree_self);
286
+ Data_Get_Struct(other, rtree_t, rtree_other);
313
287
 
314
288
  if (rtree_identical(rtree_self, rtree_other))
315
289
  return Qtrue;
@@ -319,12 +293,12 @@ static VALUE lrt_identical(VALUE self, VALUE other)
319
293
 
320
294
  static VALUE lrt_clone(VALUE self)
321
295
  {
322
- lrt_t *lrt;
323
- Data_Get_Struct(self, lrt_t, lrt);
324
296
  rtree_t *rtree;
297
+ Data_Get_Struct(self, rtree_t, rtree);
325
298
 
299
+ rtree_t *clone;
326
300
  errno = 0;
327
- if ((rtree = rtree_clone(lrt->rtree)) == NULL)
301
+ if ((clone = rtree_clone(rtree)) == NULL)
328
302
  {
329
303
  if (errno)
330
304
  rb_sys_fail(__func__);
@@ -332,20 +306,17 @@ static VALUE lrt_clone(VALUE self)
332
306
  rb_raise(rb_eRuntimeError, "Failed clone");
333
307
  }
334
308
 
335
- lrt_t *lrt_cloned;
336
309
  VALUE cls = CLASS_OF(self);
337
- VALUE obj = Data_Make_Struct(cls, lrt_t, NULL, lrt_free, lrt_cloned);
338
-
339
- lrt_cloned->rtree = rtree;
310
+ VALUE obj = Data_Wrap_Struct(cls, NULL, lrt_free, clone);
340
311
 
341
312
  return obj;
342
313
  }
343
314
 
344
315
  static VALUE state_size_access(VALUE self, size_t (*f)(const state_t*))
345
316
  {
346
- lrt_t *lrt;
347
- Data_Get_Struct(self, lrt_t, lrt);
348
- return INT2NUM(f(lrt->rtree->state));
317
+ rtree_t *rtree;
318
+ Data_Get_Struct(self, rtree_t, rtree);
319
+ return INT2NUM(f(rtree->state));
349
320
  }
350
321
 
351
322
  static VALUE lrt_dim(VALUE self)
@@ -380,12 +351,11 @@ static VALUE lrt_branching_factor(VALUE self)
380
351
 
381
352
  static VALUE lrt_unit_sphere_volume(VALUE self)
382
353
  {
383
- lrt_t *lrt;
384
- Data_Get_Struct(self, lrt_t, lrt);
385
- return DBL2NUM(state_unit_sphere_volume(lrt->rtree->state));
354
+ rtree_t *rtree;
355
+ Data_Get_Struct(self, rtree_t, rtree);
356
+ return DBL2NUM(state_unit_sphere_volume(rtree->state));
386
357
  }
387
358
 
388
-
389
359
  void Init_rtree(void)
390
360
  {
391
361
  VALUE cls = rb_const_get(rb_cObject, rb_intern("RTreeC"));
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: librtree
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.2
4
+ version: 0.8.3
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-05-22 00:00:00.000000000 Z
11
+ date: 2021-05-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -95,8 +95,8 @@ dependencies:
95
95
  - !ruby/object:Gem::Version
96
96
  version: '1'
97
97
  description: |
98
- A Ruby extension for librtree implementing the R-tree
99
- spatial-index of Guttman-Green.
98
+ A Ruby extension implementing the R-tree spatial-index of
99
+ Guttman-Green.
100
100
  email: j.j.green@gmx.co.uk
101
101
  executables: []
102
102
  extensions:
@@ -126,7 +126,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
126
126
  - !ruby/object:Gem::Version
127
127
  version: '0'
128
128
  requirements:
129
- - The librtree library
129
+ - The librtree library (1.0.2 or later)
130
130
  rubygems_version: 3.1.2
131
131
  signing_key:
132
132
  specification_version: 4