librtree 0.8.1 → 0.8.2

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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/ext/rtree/rtree.c +53 -1
  3. data/lib/rtree.rb +42 -5
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 126a8974cacf26f7c8603d161d4d7de0c121abdf5a0bc45b8244178156cbdca7
4
- data.tar.gz: 1dd3115fb8a2eb08dd5a8968ad201978b2a956dde48e210cf648027365d91fa9
3
+ metadata.gz: 9f559b211be3e93ded31a86b61c68ea28cdea151ef62d0c64a79aa38131fa5a7
4
+ data.tar.gz: 7df99f8990a461d60e2276a20891be62c1dc27e6279a2226f2fec6d63d30f5dd
5
5
  SHA512:
6
- metadata.gz: 148bffff79b038c562620bd583f6437bced0426af7210a3a289023162634f681ef1579b523cab78a6ef057be07075868b3e49b06cc48bc4747fdedfd2d0380d8
7
- data.tar.gz: 375703fbd60f42cf8722188c6fd654bcbc7ceec5886b19705c5993140fb0973a7c68c14df89e8255cef467e13c586579e94691557847ad5b6168bbfb80075eb5
6
+ metadata.gz: d6c204e2ba3a7b26fe2ab8ba1148b159a21cc697061d672fa2ccff85924dc56c2a9f19b6241d68e5ec96e3b5f955ffc617ecfc26bc9db94cb0f2190e3178e693
7
+ data.tar.gz: c831af24c76a719bfae623a5b525840cf910065426833589d8c04160524e576daf4ad13daf2793387931599187ad80f6bc596aaf21b72334e5230a449cda818d
data/ext/rtree/rtree.c CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  typedef struct
10
10
  {
11
- void *rtree;
11
+ rtree_t *rtree;
12
12
  } lrt_t;
13
13
 
14
14
  static void lrt_free(void *p)
@@ -341,6 +341,51 @@ static VALUE lrt_clone(VALUE self)
341
341
  return obj;
342
342
  }
343
343
 
344
+ static VALUE state_size_access(VALUE self, size_t (*f)(const state_t*))
345
+ {
346
+ lrt_t *lrt;
347
+ Data_Get_Struct(self, lrt_t, lrt);
348
+ return INT2NUM(f(lrt->rtree->state));
349
+ }
350
+
351
+ static VALUE lrt_dim(VALUE self)
352
+ {
353
+ return state_size_access(self, state_dims);
354
+ }
355
+
356
+ static VALUE lrt_page_size(VALUE self)
357
+ {
358
+ return state_size_access(self, state_page_size);
359
+ }
360
+
361
+ static VALUE lrt_node_size(VALUE self)
362
+ {
363
+ return state_size_access(self, state_node_size);
364
+ }
365
+
366
+ static VALUE lrt_rect_size(VALUE self)
367
+ {
368
+ return state_size_access(self, state_rect_size);
369
+ }
370
+
371
+ static VALUE lrt_branch_size(VALUE self)
372
+ {
373
+ return state_size_access(self, state_branch_size);
374
+ }
375
+
376
+ static VALUE lrt_branching_factor(VALUE self)
377
+ {
378
+ return state_size_access(self, state_branching_factor);
379
+ }
380
+
381
+ static VALUE lrt_unit_sphere_volume(VALUE self)
382
+ {
383
+ lrt_t *lrt;
384
+ Data_Get_Struct(self, lrt_t, lrt);
385
+ return DBL2NUM(state_unit_sphere_volume(lrt->rtree->state));
386
+ }
387
+
388
+
344
389
  void Init_rtree(void)
345
390
  {
346
391
  VALUE cls = rb_const_get(rb_cObject, rb_intern("RTreeC"));
@@ -356,6 +401,13 @@ void Init_rtree(void)
356
401
  rb_define_method(cls, "json_write", lrt_json_write, 1);
357
402
  rb_define_method(cls, "bsrt_write", lrt_bsrt_write, 1);
358
403
  rb_define_method(cls, "eq?", lrt_identical, 1);
404
+ rb_define_method(cls, "dim", lrt_dim, 0);
405
+ rb_define_method(cls, "page_size", lrt_page_size, 0);
406
+ rb_define_method(cls, "node_size", lrt_node_size, 0);
407
+ rb_define_method(cls, "rect_size", lrt_rect_size, 0);
408
+ rb_define_method(cls, "branch_size", lrt_branch_size, 0);
409
+ rb_define_method(cls, "branching_factor", lrt_branching_factor, 0);
410
+ rb_define_method(cls, "unit_sphere_volume", lrt_unit_sphere_volume, 0);
359
411
  rb_define_singleton_method(cls, "json_read", lrt_json_read, 1);
360
412
  rb_define_singleton_method(cls, "bsrt_read", lrt_bsrt_read, 1);
361
413
  rb_define_singleton_method(cls, "csv_read", lrt_csv_read, 3);
data/lib/rtree.rb CHANGED
@@ -1,4 +1,4 @@
1
- # The C extension
1
+ # The Ruby/C interface, which is not documented in YARD.
2
2
  class RTreeC ; end
3
3
 
4
4
  # @author RTree J. J. Green
@@ -233,7 +233,7 @@ class RTree < RTreeC
233
233
  # is much faster than rebuilding the R-tree; in this Ruby interface
234
234
  # the callback must convert C floats to Ruby, yield them to the
235
235
  # block and then convert the returned Ruby Floats to C; so we would
236
- # expect that it loses much of its competetive advantage when
236
+ # expect that it loses much of its competitive advantage when
237
237
  # compared to an R-tree rebuild.
238
238
  def update!
239
239
  super
@@ -252,7 +252,7 @@ class RTree < RTreeC
252
252
  end
253
253
 
254
254
  # Serialise to JSON stream
255
- # @param io [IO] a writeable stream
255
+ # @param io [IO] a writable stream
256
256
  # @return [self]
257
257
  # @see .json_read
258
258
  # @example Write to file
@@ -262,7 +262,7 @@ class RTree < RTreeC
262
262
  end
263
263
 
264
264
  # Serialise to BSRT (binary serialised R-tree) stream
265
- # @param io [IO] a writeable stream
265
+ # @param io [IO] a writable stream
266
266
  # @return [self]
267
267
  # @see .bsrt_read
268
268
  # @example Write to file
@@ -292,7 +292,7 @@ class RTree < RTreeC
292
292
  end
293
293
 
294
294
  # Equality of RTrees. This is a rather strict equality,
295
- # not only must the tree have the same rectangkes, they
295
+ # not only must the tree have the same rectangles, they
296
296
  # must be in the same order. Certainly {#clone} will produce
297
297
  # an instance which is equal in this sense.
298
298
  # @return [Boolean] true if the instances are identical
@@ -302,6 +302,42 @@ class RTree < RTreeC
302
302
 
303
303
  alias_method(:==, :eq?)
304
304
 
305
+ # @return [Integer] the dimension of the R-tree
306
+ def dim
307
+ super
308
+ end
309
+
310
+ # @return [Integer] the bytes in a page of memory
311
+ def page_size
312
+ super
313
+ end
314
+
315
+ # @return [Integer] the size in bytes of a node
316
+ def node_size
317
+ super
318
+ end
319
+
320
+ # @return [Integer] the size in bytes of a rectangle
321
+ def rect_size
322
+ super
323
+ end
324
+
325
+ # @return [Integer] the size in bytes of a branch
326
+ def branch_size
327
+ super
328
+ end
329
+
330
+ # @return [Integer] the number of branches from each node
331
+ def branching_factor
332
+ super
333
+ end
334
+
335
+ # @return [Float] the volume of the unit sphere in the R-tree's
336
+ # dimension
337
+ def unit_sphere_volume
338
+ super
339
+ end
340
+
305
341
  private
306
342
 
307
343
  attr_reader :split, :node_page
@@ -334,6 +370,7 @@ class RTree < RTreeC
334
370
  result
335
371
  end
336
372
 
373
+
337
374
  end
338
375
 
339
376
  require 'rtree/rtree'
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.1
4
+ version: 0.8.2
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-19 00:00:00.000000000 Z
11
+ date: 2021-05-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler