librtree 0.8.2 → 0.8.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
|