librtree 1.0.0 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -0
- data/README.md +8 -7
- data/ext/rtree/lib/README.md +9 -0
- data/ext/rtree/lib/node.c +28 -0
- data/ext/rtree/lib/package.c +4 -4
- data/ext/rtree/lib/rtree/node.h +4 -0
- data/ext/rtree/lib/rtree/package.h +4 -4
- data/ext/rtree/lib/rtree-base.c +7 -0
- data/ext/rtree/lib/rtree.h +1 -0
- data/ext/rtree/rtree.c +11 -0
- data/lib/rtree.rb +4 -4
- metadata +18 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7dbcdf3078b84e506da1a5afb4e0f31db7490ef8b57860c3d670dae5422bb283
|
4
|
+
data.tar.gz: 9c63a1227bbf656f12360acda82a0f7a7c369d27a25ae1352c906af769f5c2d3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6c54dae2e5b2e4601c6730fd7e3d50e7f87c5af3a067b7b9c2167c8f43c8c43d52429f7db18db17116cfc958f54587b7009ee92a69d59843048ca53b6b422878
|
7
|
+
data.tar.gz: 1c9aa746ba96bd5413add8a1629a2c84da513e0ed5467d553a10dcfe6f2c776b15d9dd45afac3ff2a33b6cef40633bc7937bffceb0f877c7c03f30ac34bdd8eb
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,14 @@
|
|
1
1
|
Changelog
|
2
2
|
---------
|
3
3
|
|
4
|
+
### 1.0.1, 16-03-2023
|
5
|
+
|
6
|
+
- Update to 1.1.4 of embedded `librtree`
|
7
|
+
- The `#empty?` method uses faster `rtree_empty` of the latest
|
8
|
+
version of the embedded library
|
9
|
+
- Added the `simplecov` gem and configured (Ruby) coverage in
|
10
|
+
CI runs
|
11
|
+
|
4
12
|
### 1.0.0, 24-02-2023
|
5
13
|
|
6
14
|
- The `librtree` library is no longer a requirement: the code
|
data/README.md
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
librtree-ruby
|
2
2
|
-------------
|
3
3
|
|
4
|
-
A Ruby native extension
|
5
|
-
|
4
|
+
A Ruby native extension implementing the R-tree spatial index of
|
5
|
+
Guttman-Green. The code is an embedded version of [librtree][3].
|
6
6
|
|
7
7
|
|
8
8
|
### Installing dependencies
|
@@ -47,12 +47,12 @@ will import the **RTree** class, its usage is described [here][5].
|
|
47
47
|
This is only needed if you want work on the extension, not for
|
48
48
|
a Gem install.
|
49
49
|
|
50
|
-
First install the dependencies
|
51
|
-
|
52
|
-
|
50
|
+
First install the dependencies as above. Then clone the repository and
|
51
|
+
install the extension's Ruby dependencies, there are several ways to do
|
52
|
+
this.
|
53
53
|
|
54
|
-
If using [rbenv][4], then first set a local version of Ruby to
|
55
|
-
|
54
|
+
If using [rbenv][4], then first set a local version of Ruby to use,
|
55
|
+
then install the gems into your local cache
|
56
56
|
|
57
57
|
rbenv local 2.7.0
|
58
58
|
bundle install
|
@@ -80,6 +80,7 @@ run the tests:
|
|
80
80
|
bundle exec rake compile
|
81
81
|
bundle exec rake spec
|
82
82
|
|
83
|
+
|
83
84
|
[1]: http://www.digip.org/jansson/
|
84
85
|
[3]: http://soliton.vm.bytemark.co.uk/pub/jjg/en/code/librtree/
|
85
86
|
[4]: https://github.com/rbenv/rbenv
|
@@ -0,0 +1,9 @@
|
|
1
|
+
Embedded librtree
|
2
|
+
-----------------
|
3
|
+
|
4
|
+
The code in this directory is largely generated by the script
|
5
|
+
`bin/librtee-update`, one should not edit it directly, instead
|
6
|
+
make a clone of the [librtree][1] project, modify that and use
|
7
|
+
the update-script to copy the results here.
|
8
|
+
|
9
|
+
[1]: https://gitlab.com/jjg/librtree
|
data/ext/rtree/lib/node.c
CHANGED
@@ -700,6 +700,34 @@ bool node_identical(const state_t *state, const node_t *a, const node_t *b)
|
|
700
700
|
return ! (a || b);
|
701
701
|
}
|
702
702
|
|
703
|
+
/*
|
704
|
+
find whether the node or its descendants have a leaf, so we're
|
705
|
+
looking for a level-zero node with a non-zero count, of course
|
706
|
+
we short circuit as soon as we find one.
|
707
|
+
*/
|
708
|
+
|
709
|
+
bool node_nonempty(const state_t *state, const node_t *node)
|
710
|
+
{
|
711
|
+
node_count_t count;
|
712
|
+
|
713
|
+
if ((count = node_count(node)) == 0)
|
714
|
+
return false;
|
715
|
+
|
716
|
+
if (node_level(node) == 0)
|
717
|
+
return true;
|
718
|
+
|
719
|
+
for (size_t i = 0 ; i < count ; i++)
|
720
|
+
{
|
721
|
+
const branch_t *branch = node_get_branch(state, node, i);
|
722
|
+
const node_t *child = branch_get_child(branch);
|
723
|
+
|
724
|
+
if (node_nonempty(state, child))
|
725
|
+
return true;
|
726
|
+
}
|
727
|
+
|
728
|
+
return false;
|
729
|
+
}
|
730
|
+
|
703
731
|
extern node_count_t node_count(const node_t*);
|
704
732
|
extern void node_count_increment(node_t*);
|
705
733
|
extern void node_count_decrement(node_t*);
|
data/ext/rtree/lib/package.c
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
#include "rtree/package.h"
|
7
7
|
|
8
|
-
const char
|
9
|
-
const char
|
10
|
-
const char
|
11
|
-
const char
|
8
|
+
const char rtree_package_version[] = "1.1.4";
|
9
|
+
const char rtree_package_name[] = "librtree";
|
10
|
+
const char rtree_package_url[] = "https://gitlab.com/jjg/librtree";
|
11
|
+
const char rtree_package_bugreport[] = "j.j.green@gmx.co.uk";
|
data/ext/rtree/lib/rtree/node.h
CHANGED
@@ -8,6 +8,9 @@
|
|
8
8
|
|
9
9
|
#ifdef __cplusplus
|
10
10
|
extern "C" {
|
11
|
+
#if 0
|
12
|
+
}
|
13
|
+
#endif
|
11
14
|
#endif
|
12
15
|
|
13
16
|
#include <stdint.h>
|
@@ -54,6 +57,7 @@ int node_update(const state_t*, const node_t*, rtree_update_t*, void*);
|
|
54
57
|
bool node_identical(const state_t*, const node_t*, const node_t*);
|
55
58
|
node_height_t node_height(const state_t*, const node_t*);
|
56
59
|
size_t node_bytes(const state_t*, const node_t*);
|
60
|
+
bool node_nonempty(const state_t*, const node_t*);
|
57
61
|
|
58
62
|
inline node_count_t node_count(const node_t *node)
|
59
63
|
{
|
@@ -6,9 +6,9 @@
|
|
6
6
|
#ifndef RTREE_PACKAGE_H
|
7
7
|
#define RTREE_PACKAGE_H
|
8
8
|
|
9
|
-
extern const char
|
10
|
-
extern const char
|
11
|
-
extern const char
|
12
|
-
extern const char
|
9
|
+
extern const char rtree_package_version[];
|
10
|
+
extern const char rtree_package_name[];
|
11
|
+
extern const char rtree_package_url[];
|
12
|
+
extern const char rtree_package_bugreport[];
|
13
13
|
|
14
14
|
#endif
|
data/ext/rtree/lib/rtree-base.c
CHANGED
@@ -188,3 +188,10 @@ size_t rtree_bytes(const rtree_t *rtree)
|
|
188
188
|
state_bytes(rtree->state) +
|
189
189
|
node_bytes(rtree->state, rtree->root);
|
190
190
|
}
|
191
|
+
|
192
|
+
bool rtree_empty(const rtree_t *rtree)
|
193
|
+
{
|
194
|
+
return
|
195
|
+
(rtree == NULL) ||
|
196
|
+
(! node_nonempty(rtree->state, rtree->root));
|
197
|
+
}
|
data/ext/rtree/lib/rtree.h
CHANGED
data/ext/rtree/rtree.c
CHANGED
@@ -55,6 +55,16 @@ static VALUE rt_release(VALUE self)
|
|
55
55
|
return self;
|
56
56
|
}
|
57
57
|
|
58
|
+
static VALUE rt_empty(VALUE self)
|
59
|
+
{
|
60
|
+
rtree_t *rtree;
|
61
|
+
TypedData_Get_Struct(self, rtree_t, &rtree_type, rtree);
|
62
|
+
if (rtree_empty(rtree))
|
63
|
+
return Qtrue;
|
64
|
+
else
|
65
|
+
return Qfalse;
|
66
|
+
}
|
67
|
+
|
58
68
|
static VALUE rt_height(VALUE self)
|
59
69
|
{
|
60
70
|
rtree_t *rtree;
|
@@ -505,6 +515,7 @@ void Init_rtree(void)
|
|
505
515
|
rb_define_method(cRTreeBase, "free", rt_release, 0);
|
506
516
|
rb_define_method(cRTreeBase, "clone", rt_clone, 0);
|
507
517
|
rb_define_method(cRTreeBase, "update!", rt_update, 0);
|
518
|
+
rb_define_method(cRTreeBase, "empty?", rt_empty, 0);
|
508
519
|
rb_define_method(cRTreeBase, "height", rt_height, 0);
|
509
520
|
rb_define_method(cRTreeBase, "add_rect", rt_add_rect, 2);
|
510
521
|
rb_define_method(cRTreeBase, "search", rt_search, 1);
|
data/lib/rtree.rb
CHANGED
@@ -14,9 +14,9 @@ require 'fcntl'
|
|
14
14
|
|
15
15
|
# @author RTree J. J. Green
|
16
16
|
#
|
17
|
-
# A Ruby
|
18
|
-
#
|
19
|
-
#
|
17
|
+
# A Ruby native extension implementing the R-tree spatial index of
|
18
|
+
# Guttman-Green. The code is an emebded version of
|
19
|
+
# {http://soliton.vm.bytemark.co.uk/pub/jjg/en/code/librtree librtree}.
|
20
20
|
#
|
21
21
|
# Use
|
22
22
|
#
|
@@ -355,7 +355,7 @@ class RTree < RTreeBase
|
|
355
355
|
# @return [Boolean] true if the RTree is empty
|
356
356
|
#
|
357
357
|
def empty?
|
358
|
-
|
358
|
+
super
|
359
359
|
end
|
360
360
|
|
361
361
|
# Serialise to JSON stream
|
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: 1.0.
|
4
|
+
version: 1.0.1
|
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: 2023-
|
11
|
+
date: 2023-03-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '3.10'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: simplecov
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0.22'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0.22'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: yard
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -107,6 +121,7 @@ files:
|
|
107
121
|
- COPYING
|
108
122
|
- README.md
|
109
123
|
- ext/rtree/extconf.rb
|
124
|
+
- ext/rtree/lib/README.md
|
110
125
|
- ext/rtree/lib/bindex.c
|
111
126
|
- ext/rtree/lib/bindex.h
|
112
127
|
- ext/rtree/lib/bounds.h
|
@@ -173,7 +188,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
173
188
|
- !ruby/object:Gem::Version
|
174
189
|
version: '0'
|
175
190
|
requirements:
|
176
|
-
- The
|
191
|
+
- The Jansson library
|
177
192
|
rubygems_version: 3.1.6
|
178
193
|
signing_key:
|
179
194
|
specification_version: 4
|