librtree 1.0.0 → 1.0.1
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/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
|