librtree 0.8.2 → 0.8.3
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/rtree/rtree.c +41 -71
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a175d9b929078c0a8d94c7adbb7af7eb728acda5a401a99f95504fa30f129470
|
4
|
+
data.tar.gz: c5042bd9893f64c112d3940d549fa9dde8503121ced5507ddf2392840950aac0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
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
|
-
|
28
|
-
VALUE obj = Data_Make_Struct(cls, lrt_t, NULL, lrt_free, lrt);
|
17
|
+
rtree_t *rtree;;
|
29
18
|
|
30
|
-
|
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
|
-
|
44
|
-
Data_Get_Struct(self,
|
34
|
+
rtree_t *rtree;
|
35
|
+
Data_Get_Struct(self, rtree_t, rtree);
|
45
36
|
|
46
|
-
if ((
|
47
|
-
rb_raise(rb_eNoMemError, "failed to
|
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
|
-
|
55
|
-
Data_Get_Struct(self,
|
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
|
-
|
65
|
-
Data_Get_Struct(self,
|
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
|
-
|
76
|
-
Data_Get_Struct(self,
|
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
|
-
|
136
|
-
Data_Get_Struct(self,
|
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
|
-
|
173
|
-
Data_Get_Struct(self,
|
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
|
-
|
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
|
-
|
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
|
-
|
285
|
-
Data_Get_Struct(self,
|
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
|
-
|
308
|
-
|
309
|
-
Data_Get_Struct(
|
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 ((
|
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 =
|
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
|
-
|
347
|
-
Data_Get_Struct(self,
|
348
|
-
return INT2NUM(f(
|
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
|
-
|
384
|
-
Data_Get_Struct(self,
|
385
|
-
return DBL2NUM(state_unit_sphere_volume(
|
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.
|
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-
|
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
|
99
|
-
|
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
|